From 25661b611d241534e5e8d7ce1731de8506481a7d Mon Sep 17 00:00:00 2001 From: MW Date: Sat, 21 Feb 2009 13:44:03 +0000 Subject: Refactored the GridServer into a GridDBService and a set of "modules". Currently they aren't plugin modules as the support for dynamically loading them isn't complete. --- OpenSim/Grid/GridServer/GridMessagingModule.cs | 101 +++++++++++++++++++++++++ 1 file changed, 101 insertions(+) create mode 100644 OpenSim/Grid/GridServer/GridMessagingModule.cs (limited to 'OpenSim/Grid/GridServer/GridMessagingModule.cs') diff --git a/OpenSim/Grid/GridServer/GridMessagingModule.cs b/OpenSim/Grid/GridServer/GridMessagingModule.cs new file mode 100644 index 0000000..348e56c --- /dev/null +++ b/OpenSim/Grid/GridServer/GridMessagingModule.cs @@ -0,0 +1,101 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Reflection; +using System.Text; +using Nwc.XmlRpc; +using log4net; +using OpenSim.Framework.Servers; +using OpenSim.Framework; + +namespace OpenSim.Grid.GridServer +{ + public class GridMessagingModule : IGridMessagingModule + { + private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); + + protected GridDBService m_gridDBService; + protected IGridCore m_gridCore; + + protected GridConfig m_config; + + /// + /// Used to notify old regions as to which OpenSim version to upgrade to + /// + private string m_opensimVersion; + + protected BaseHttpServer m_httpServer; + + // This is here so that the grid server can hand out MessageServer settings to regions on registration + private List _MessageServers = new List(); + + public List MessageServers + { + get { return _MessageServers; } + } + + public GridMessagingModule(string opensimVersion, GridDBService gridDBService, IGridCore gridCore, GridConfig config) + { + m_opensimVersion = opensimVersion; + m_gridDBService = gridDBService; + m_gridCore = gridCore; + m_config = config; + m_httpServer = m_gridCore.GetHttpServer(); + } + + public void Initialise() + { + m_gridCore.RegisterInterface(this); + // Message Server ---> Grid Server + m_httpServer.AddXmlRPCHandler("register_messageserver", XmlRPCRegisterMessageServer); + m_httpServer.AddXmlRPCHandler("deregister_messageserver", XmlRPCDeRegisterMessageServer); + + } + + public XmlRpcResponse XmlRPCRegisterMessageServer(XmlRpcRequest request) + { + XmlRpcResponse response = new XmlRpcResponse(); + Hashtable requestData = (Hashtable)request.Params[0]; + Hashtable responseData = new Hashtable(); + + if (requestData.Contains("uri")) + { + string URI = (string)requestData["URI"]; + string sendkey = (string)requestData["sendkey"]; + string recvkey = (string)requestData["recvkey"]; + MessageServerInfo m = new MessageServerInfo(); + m.URI = URI; + m.sendkey = sendkey; + m.recvkey = recvkey; + if (!_MessageServers.Contains(m)) + _MessageServers.Add(m); + responseData["responsestring"] = "TRUE"; + response.Value = responseData; + } + return response; + } + + public XmlRpcResponse XmlRPCDeRegisterMessageServer(XmlRpcRequest request) + { + XmlRpcResponse response = new XmlRpcResponse(); + Hashtable requestData = (Hashtable)request.Params[0]; + Hashtable responseData = new Hashtable(); + + if (requestData.Contains("uri")) + { + string URI = (string)requestData["uri"]; + string sendkey = (string)requestData["sendkey"]; + string recvkey = (string)requestData["recvkey"]; + MessageServerInfo m = new MessageServerInfo(); + m.URI = URI; + m.sendkey = sendkey; + m.recvkey = recvkey; + if (_MessageServers.Contains(m)) + _MessageServers.Remove(m); + responseData["responsestring"] = "TRUE"; + response.Value = responseData; + } + return response; + } + } +} -- cgit v1.1