From 04dbcee74c29f5a5876cc5cd14a01699c4716f6d Mon Sep 17 00:00:00 2001 From: Teravus Ovares Date: Sun, 6 Jan 2008 20:10:29 +0000 Subject: * A few more Message Server comms related updates --- OpenSim/Grid/GridServer/GridManager.cs | 63 +++++++++++++++++++++++++++++++++- 1 file changed, 62 insertions(+), 1 deletion(-) (limited to 'OpenSim/Grid/GridServer/GridManager.cs') diff --git a/OpenSim/Grid/GridServer/GridManager.cs b/OpenSim/Grid/GridServer/GridManager.cs index 31500c0..61f1fd7 100644 --- a/OpenSim/Grid/GridServer/GridManager.cs +++ b/OpenSim/Grid/GridServer/GridManager.cs @@ -36,6 +36,8 @@ using Nwc.XmlRpc; using OpenSim.Framework; using OpenSim.Framework.Console; using OpenSim.Framework.Data; +using OpenSim.Framework.Servers; + namespace OpenSim.Grid.GridServer { @@ -43,6 +45,7 @@ namespace OpenSim.Grid.GridServer { private Dictionary _plugins = new Dictionary(); private Dictionary _logplugins = new Dictionary(); + private List _MessageServers = new List(); public GridConfig config; @@ -414,7 +417,20 @@ namespace OpenSim.Grid.GridServer responseData["allow_forceful_banlines"] = config.AllowForcefulBanlines; + // Instead of sending a multitude of message servers to the registering sim + // we should probably be sending a single one and parhaps it's backup + // that has responsibility over routing it's messages. + + // The Sim won't be contacting us again about any of the message server stuff during it's time up. + + responseData["messageserver_count"] = _MessageServers.Count; + for (int i = 0; i < _MessageServers.Count; i++) + { + responseData["messageserver_uri" + i] = _MessageServers[i].URI; + responseData["messageserver_sendkey" + i] = _MessageServers[i].sendkey; + responseData["messageserver_recvkey" + i] = _MessageServers[i].recvkey; + } return response; } @@ -424,6 +440,7 @@ namespace OpenSim.Grid.GridServer responseData["error"] = "Another region already exists at that location. Try another"; return response; } + } public XmlRpcResponse XmlRpcSimulatorDataRequestMethod(XmlRpcRequest request) @@ -767,5 +784,49 @@ namespace OpenSim.Grid.GridServer return "ERROR! Could not save to database! (" + e.ToString() + ")"; } } + 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; + } } -} \ No newline at end of file +} -- cgit v1.1