From bad9cdae1e939d2af5baa0164619aa4b8628c319 Mon Sep 17 00:00:00 2001 From: Adam Frisby Date: Sat, 2 Jun 2007 01:15:47 +0000 Subject: * GridManagementAgent is now documented --- .../GridManagementAgent.cs | 67 +++++++++++++++++++++- .../GridServerManager.cs | 53 +++++++++++++++-- 2 files changed, 113 insertions(+), 7 deletions(-) diff --git a/OpenGridServices/OpenGrid.Framework.Manager/GridManagementAgent.cs b/OpenGridServices/OpenGrid.Framework.Manager/GridManagementAgent.cs index f4483fb..0ee0e3d 100644 --- a/OpenGridServices/OpenGrid.Framework.Manager/GridManagementAgent.cs +++ b/OpenGridServices/OpenGrid.Framework.Manager/GridManagementAgent.cs @@ -1,3 +1,29 @@ +/* +* Copyright (c) OpenSim project, http://sim.opensecondlife.org/ +* +* Redistribution and use in source and binary forms, with or without +* modification, are permitted provided that the following conditions are met: +* * Redistributions of source code must retain the above copyright +* notice, this list of conditions and the following disclaimer. +* * Redistributions in binary form must reproduce the above copyright +* notice, this list of conditions and the following disclaimer in the +* documentation and/or other materials provided with the distribution. +* * Neither the name of the nor the +* names of its contributors may be used to endorse or promote products +* derived from this software without specific prior written permission. +* +* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY +* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +* DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY +* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +* +*/ using Nwc.XmlRpc; using OpenSim.Framework; using OpenSim.Servers; @@ -7,19 +33,46 @@ using libsecondlife; namespace OpenGrid.Framework.Manager { - + /// + /// Used to pass messages to the gridserver + /// + /// Pass this argument public delegate void GridManagerCallback(string param); + /// + /// Serverside listener for grid commands + /// public class GridManagementAgent { - + /// + /// Passes grid server messages + /// private GridManagerCallback thecallback; + + /// + /// Security keys + /// private string sendkey; private string recvkey; + + /// + /// Our component type + /// private string component_type; + /// + /// List of active sessions + /// private static ArrayList Sessions; + /// + /// Initialises a new GridManagementAgent + /// + /// HTTP Daemon for this server + /// What component type are we? + /// Security send key + /// Security recieve key + /// Message callback public GridManagementAgent(BaseHttpServer app_httpd, string component_type, string sendkey, string recvkey, GridManagerCallback thecallback) { this.sendkey = sendkey; @@ -41,11 +94,21 @@ namespace OpenGrid.Framework.Manager } } + /// + /// Checks if a session exists + /// + /// The session ID + /// Exists? public static bool SessionExists(LLUUID sessionID) { return Sessions.Contains(sessionID); } + /// + /// Logs a new session to the grid manager + /// + /// the XMLRPC request + /// An XMLRPC reply public static XmlRpcResponse XmlRpcLoginMethod(XmlRpcRequest request) { XmlRpcResponse response = new XmlRpcResponse(); diff --git a/OpenGridServices/OpenGrid.Framework.Manager/GridServerManager.cs b/OpenGridServices/OpenGrid.Framework.Manager/GridServerManager.cs index 7ebf66a..e1d25a6 100644 --- a/OpenGridServices/OpenGrid.Framework.Manager/GridServerManager.cs +++ b/OpenGridServices/OpenGrid.Framework.Manager/GridServerManager.cs @@ -1,3 +1,30 @@ +/* +* Copyright (c) OpenSim project, http://sim.opensecondlife.org/ +* +* Redistribution and use in source and binary forms, with or without +* modification, are permitted provided that the following conditions are met: +* * Redistributions of source code must retain the above copyright +* notice, this list of conditions and the following disclaimer. +* * Redistributions in binary form must reproduce the above copyright +* notice, this list of conditions and the following disclaimer in the +* documentation and/or other materials provided with the distribution. +* * Neither the name of the nor the +* names of its contributors may be used to endorse or promote products +* derived from this software without specific prior written permission. +* +* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY +* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +* DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY +* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +* +*/ + using System; using System.Collections; using System.Collections.Generic; @@ -7,13 +34,27 @@ using libsecondlife; namespace OpenGrid.Framework.Manager { + /// + /// A remote management system for the grid server + /// public class GridServerManager { + /// + /// Triggers events from the grid manager + /// public static GridManagerCallback thecallback; + /// + /// Security keys + /// public static string sendkey; public static string recvkey; + /// + /// Disconnects the grid server and shuts it down + /// + /// XmlRpc Request + /// An XmlRpc response containing either a "msg" or an "error" public static XmlRpcResponse XmlRpcShutdownMethod(XmlRpcRequest request) { XmlRpcResponse response = new XmlRpcResponse(); @@ -23,7 +64,7 @@ namespace OpenGrid.Framework.Manager { if(requestData.ContainsKey("session_id")) { if(GridManagementAgent.SessionExists(new LLUUID((string)requestData["session_id"]))) { responseData["msg"]="Shutdown command accepted"; - (new Thread(new ThreadStart(ZOMGServerIsNowTerminallyIll))).Start(); + (new Thread(new ThreadStart(ShutdownServer))).Start(); } else { response.IsFault=true; responseData["error"]="bad session ID"; @@ -37,11 +78,13 @@ namespace OpenGrid.Framework.Manager { return response; } - // Brought to by late-night coding - public static void ZOMGServerIsNowTerminallyIll() + /// + /// Shuts down the grid server + /// + public static void ShutdownServer() { - Console.WriteLine("ZOMG! THIS SERVER IS TERMINALLY ILL - WE GOT A SHUTDOWN REQUEST FROM A GRID MANAGER!!!!"); - Console.WriteLine("We have 3 seconds to live..."); + Console.WriteLine("Shutting down the grid server - recieved a grid manager request"); + Console.WriteLine("Terminating in three seconds..."); Thread.Sleep(3000); thecallback("shutdown"); } -- cgit v1.1