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