diff options
Diffstat (limited to 'OpenSim/Grid/GridServer/GridMessagingModule.cs')
-rw-r--r-- | OpenSim/Grid/GridServer/GridMessagingModule.cs | 101 |
1 files changed, 101 insertions, 0 deletions
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 @@ | |||
1 | using System; | ||
2 | using System.Collections; | ||
3 | using System.Collections.Generic; | ||
4 | using System.Reflection; | ||
5 | using System.Text; | ||
6 | using Nwc.XmlRpc; | ||
7 | using log4net; | ||
8 | using OpenSim.Framework.Servers; | ||
9 | using OpenSim.Framework; | ||
10 | |||
11 | namespace OpenSim.Grid.GridServer | ||
12 | { | ||
13 | public class GridMessagingModule : IGridMessagingModule | ||
14 | { | ||
15 | private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); | ||
16 | |||
17 | protected GridDBService m_gridDBService; | ||
18 | protected IGridCore m_gridCore; | ||
19 | |||
20 | protected GridConfig m_config; | ||
21 | |||
22 | /// <value> | ||
23 | /// Used to notify old regions as to which OpenSim version to upgrade to | ||
24 | /// </value> | ||
25 | private string m_opensimVersion; | ||
26 | |||
27 | protected BaseHttpServer m_httpServer; | ||
28 | |||
29 | // This is here so that the grid server can hand out MessageServer settings to regions on registration | ||
30 | private List<MessageServerInfo> _MessageServers = new List<MessageServerInfo>(); | ||
31 | |||
32 | public List<MessageServerInfo> MessageServers | ||
33 | { | ||
34 | get { return _MessageServers; } | ||
35 | } | ||
36 | |||
37 | public GridMessagingModule(string opensimVersion, GridDBService gridDBService, IGridCore gridCore, GridConfig config) | ||
38 | { | ||
39 | m_opensimVersion = opensimVersion; | ||
40 | m_gridDBService = gridDBService; | ||
41 | m_gridCore = gridCore; | ||
42 | m_config = config; | ||
43 | m_httpServer = m_gridCore.GetHttpServer(); | ||
44 | } | ||
45 | |||
46 | public void Initialise() | ||
47 | { | ||
48 | m_gridCore.RegisterInterface<IGridMessagingModule>(this); | ||
49 | // Message Server ---> Grid Server | ||
50 | m_httpServer.AddXmlRPCHandler("register_messageserver", XmlRPCRegisterMessageServer); | ||
51 | m_httpServer.AddXmlRPCHandler("deregister_messageserver", XmlRPCDeRegisterMessageServer); | ||
52 | |||
53 | } | ||
54 | |||
55 | public XmlRpcResponse XmlRPCRegisterMessageServer(XmlRpcRequest request) | ||
56 | { | ||
57 | XmlRpcResponse response = new XmlRpcResponse(); | ||
58 | Hashtable requestData = (Hashtable)request.Params[0]; | ||
59 | Hashtable responseData = new Hashtable(); | ||
60 | |||
61 | if (requestData.Contains("uri")) | ||
62 | { | ||
63 | string URI = (string)requestData["URI"]; | ||
64 | string sendkey = (string)requestData["sendkey"]; | ||
65 | string recvkey = (string)requestData["recvkey"]; | ||
66 | MessageServerInfo m = new MessageServerInfo(); | ||
67 | m.URI = URI; | ||
68 | m.sendkey = sendkey; | ||
69 | m.recvkey = recvkey; | ||
70 | if (!_MessageServers.Contains(m)) | ||
71 | _MessageServers.Add(m); | ||
72 | responseData["responsestring"] = "TRUE"; | ||
73 | response.Value = responseData; | ||
74 | } | ||
75 | return response; | ||
76 | } | ||
77 | |||
78 | public XmlRpcResponse XmlRPCDeRegisterMessageServer(XmlRpcRequest request) | ||
79 | { | ||
80 | XmlRpcResponse response = new XmlRpcResponse(); | ||
81 | Hashtable requestData = (Hashtable)request.Params[0]; | ||
82 | Hashtable responseData = new Hashtable(); | ||
83 | |||
84 | if (requestData.Contains("uri")) | ||
85 | { | ||
86 | string URI = (string)requestData["uri"]; | ||
87 | string sendkey = (string)requestData["sendkey"]; | ||
88 | string recvkey = (string)requestData["recvkey"]; | ||
89 | MessageServerInfo m = new MessageServerInfo(); | ||
90 | m.URI = URI; | ||
91 | m.sendkey = sendkey; | ||
92 | m.recvkey = recvkey; | ||
93 | if (_MessageServers.Contains(m)) | ||
94 | _MessageServers.Remove(m); | ||
95 | responseData["responsestring"] = "TRUE"; | ||
96 | response.Value = responseData; | ||
97 | } | ||
98 | return response; | ||
99 | } | ||
100 | } | ||
101 | } | ||