From 5c32b33a66fbdf371d53d85ee54ee8e837481570 Mon Sep 17 00:00:00 2001 From: lbsa71 Date: Wed, 4 Jul 2007 16:28:59 +0000 Subject: * re-fixed the utf-16 bug in xmlRpcResponse serialization * added LLSDStreamHandler.cs to Caps (Haven't enabled it yet, though) * removed last traces of old rest handling --- OpenSim/Framework/Servers/BaseHttpServer.cs | 175 ++++----------------- OpenSim/Framework/Servers/BaseStreamHandler.cs | 6 +- OpenSim/Framework/Servers/ILlsdMethodHandler.cs | 37 ----- OpenSim/Framework/Servers/LlsdMethod.cs | 32 ---- .../Servers/OpenSim.Framework.Servers.csproj | 9 -- .../Servers/OpenSim.Framework.Servers.dll.build | 3 - OpenSim/Framework/Servers/RestMethodEntry.cs | 27 ---- OpenSim/Framework/UserManager/LoginResponse.cs | 2 + OpenSim/Region/Capabilities/Caps.cs | 38 +++-- OpenSim/Region/Capabilities/LLSDMethod.cs | 8 + OpenSim/Region/Capabilities/LLSDStreamHandler.cs | 40 +++++ .../OpenSim.Region.Capabilities.csproj | 6 + .../OpenSim.Region.Capabilities.dll.build | 2 + .../Region/Examples/SimpleApp/LlsdMethodEntry.cs | 35 +---- OpenSim/Region/Examples/SimpleApp/Program.cs | 23 --- 15 files changed, 123 insertions(+), 320 deletions(-) delete mode 100644 OpenSim/Framework/Servers/ILlsdMethodHandler.cs delete mode 100644 OpenSim/Framework/Servers/LlsdMethod.cs delete mode 100644 OpenSim/Framework/Servers/RestMethodEntry.cs create mode 100644 OpenSim/Region/Capabilities/LLSDMethod.cs create mode 100644 OpenSim/Region/Capabilities/LLSDStreamHandler.cs (limited to 'OpenSim') diff --git a/OpenSim/Framework/Servers/BaseHttpServer.cs b/OpenSim/Framework/Servers/BaseHttpServer.cs index aed538b..84af9f6 100644 --- a/OpenSim/Framework/Servers/BaseHttpServer.cs +++ b/OpenSim/Framework/Servers/BaseHttpServer.cs @@ -42,7 +42,6 @@ namespace OpenSim.Framework.Servers { protected Thread m_workerThread; protected HttpListener m_httpListener; - //protected Dictionary m_restHandlers = new Dictionary(); protected Dictionary m_rpcHandlers = new Dictionary(); protected Dictionary m_streamHandlers = new Dictionary(); protected int m_port; @@ -67,32 +66,6 @@ namespace OpenSim.Framework.Servers return httpMethod + ":" + path; } - //public bool AddRestHandler(string method, string path, RestMethod handler) - //{ - // //Console.WriteLine("adding new REST handler for path " + path); - // string methodKey = String.Format("{0}: {1}", method, path); - - // if (!this.m_restHandlers.ContainsKey(methodKey)) - // { - // this.m_restHandlers.Add(methodKey, new RestMethodEntry(path, handler)); - // return true; - // } - - // //must already have a handler for that path so return false - // return false; - //} - - //public bool RemoveRestHandler(string method, string path) - //{ - // string methodKey = String.Format("{0}: {1}", method, path); - // if (this.m_restHandlers.ContainsKey(methodKey)) - // { - // this.m_restHandlers.Remove(methodKey); - // return true; - // } - // return false; - //} - public bool AddXmlRPCHandler(string method, XmlRpcMethod handler) { if (!this.m_rpcHandlers.ContainsKey(method)) @@ -105,76 +78,6 @@ namespace OpenSim.Framework.Servers return false; } - protected virtual string ProcessXMLRPCMethod(string methodName, XmlRpcRequest request) - { - XmlRpcResponse response; - - XmlRpcMethod method; - if (this.m_rpcHandlers.TryGetValue(methodName, out method)) - { - response = method(request); - } - else - { - response = new XmlRpcResponse(); - Hashtable unknownMethodError = new Hashtable(); - unknownMethodError["reason"] = "XmlRequest"; ; - unknownMethodError["message"] = "Unknown Rpc request"; - unknownMethodError["login"] = "false"; - response.Value = unknownMethodError; - } - - return XmlRpcResponseSerializer.Singleton.Serialize(response); - } - - //protected virtual string ParseREST(string request, string path, string method) - //{ - // string response; - - // string requestKey = String.Format("{0}: {1}", method, path); - - // string bestMatch = String.Empty; - // foreach (string currentKey in m_restHandlers.Keys) - // { - // if (requestKey.StartsWith(currentKey)) - // { - // if (currentKey.Length > bestMatch.Length) - // { - // bestMatch = currentKey; - // } - // } - // } - - // RestMethodEntry restMethodEntry; - // if (m_restHandlers.TryGetValue(bestMatch, out restMethodEntry)) - // { - // RestMethod restMethod = restMethodEntry.RestMethod; - - // string param = path.Substring(restMethodEntry.Path.Length); - // response = restMethod(request, path, param); - - // } - // else - // { - // response = String.Empty; - // } - - // return response; - //} - - - protected virtual string ParseXMLRPC(string requestBody) - { - string responseString = String.Empty; - - XmlRpcRequest request = (XmlRpcRequest)(new XmlRpcRequestDeserializer()).Deserialize(requestBody); - - string methodName = request.MethodName; - - responseString = ProcessXMLRPCMethod(methodName, request); - - return responseString; - } public virtual void HandleRequest(Object stateinfo) { @@ -203,7 +106,7 @@ namespace OpenSim.Framework.Servers } else { - HandleLegacyRequests(request, response); + HandleXmlRpcRequests(request, response); } } @@ -234,64 +137,54 @@ namespace OpenSim.Framework.Servers } } - private void HandleLegacyRequests(HttpListenerRequest request, HttpListenerResponse response) + private void HandleXmlRpcRequests(HttpListenerRequest request, HttpListenerResponse response) { - Stream body = request.InputStream; + Stream requestStream = request.InputStream; Encoding encoding = Encoding.UTF8; - StreamReader reader = new StreamReader(body, encoding); + StreamReader reader = new StreamReader(requestStream, encoding); string requestBody = reader.ReadToEnd(); - body.Close(); reader.Close(); + requestStream.Close(); - //Console.WriteLine(request.HttpMethod + " " + request.RawUrl + " Http/" + request.ProtocolVersion.ToString() + " content type: " + request.ContentType); - //Console.WriteLine(requestBody); + XmlRpcRequest xmlRprcRequest = (XmlRpcRequest)(new XmlRpcRequestDeserializer()).Deserialize(requestBody); - string responseString = ""; - // Console.WriteLine("new request " + request.ContentType +" at "+ request.RawUrl); - switch (request.ContentType) - { - case "text/xml": - // must be XML-RPC, so pass to the XML-RPC parser - - responseString = ParseXMLRPC(requestBody); - responseString = Regex.Replace(responseString, "utf-16", "utf-8"); - - response.AddHeader("Content-type", "text/xml"); - break; - - //case "application/xml": - //case "application/octet-stream": - // // probably LLSD we hope, otherwise it should be ignored by the parser - // // responseString = ParseLLSDXML(requestBody); - // responseString = ParseREST(requestBody, request.RawUrl, request.HttpMethod); - // response.AddHeader("Content-type", "application/xml"); - // break; - - //case "application/x-www-form-urlencoded": - // // a form data POST so send to the REST parser - // responseString = ParseREST(requestBody, request.RawUrl, request.HttpMethod); - // response.AddHeader("Content-type", "text/html"); - // break; - - //case null: - // // must be REST or invalid crap, so pass to the REST parser - // responseString = ParseREST(requestBody, request.RawUrl, request.HttpMethod); - // response.AddHeader("Content-type", "text/html"); - // break; + string methodName = xmlRprcRequest.MethodName; + + XmlRpcResponse xmlRpcResponse; + XmlRpcMethod method; + if (this.m_rpcHandlers.TryGetValue(methodName, out method)) + { + xmlRpcResponse = method(xmlRprcRequest); } + else + { + xmlRpcResponse = new XmlRpcResponse(); + Hashtable unknownMethodError = new Hashtable(); + unknownMethodError["reason"] = "XmlRequest"; ; + unknownMethodError["message"] = "Unknown Rpc Request ["+methodName+"]"; + unknownMethodError["login"] = "false"; + xmlRpcResponse.Value = unknownMethodError; + } + + response.AddHeader("Content-type", "text/xml"); + string responseString = XmlRpcResponseSerializer.Singleton.Serialize(xmlRpcResponse); + + // This must be absolutely fuggliest hack in this project. Don't just stand there, DO SOMETHING! + responseString = Regex.Replace(responseString, "utf-16", "utf-8"); + byte[] buffer = Encoding.UTF8.GetBytes(responseString); - Stream output = response.OutputStream; + + response.SendChunked = false; response.ContentLength64 = buffer.Length; + response.ContentEncoding = Encoding.UTF8; - - - output.Write(buffer, 0, buffer.Length); - output.Close(); + response.OutputStream.Write(buffer, 0, buffer.Length); + response.OutputStream.Close(); } public void Start() diff --git a/OpenSim/Framework/Servers/BaseStreamHandler.cs b/OpenSim/Framework/Servers/BaseStreamHandler.cs index 95e9707..5fcf678 100644 --- a/OpenSim/Framework/Servers/BaseStreamHandler.cs +++ b/OpenSim/Framework/Servers/BaseStreamHandler.cs @@ -7,19 +7,19 @@ namespace OpenSim.Framework.Servers { public abstract class BaseStreamHandler : IStreamHandler { - public string ContentType + virtual public string ContentType { get { return "application/xml"; } } private string m_httpMethod; - public string HttpMethod + virtual public string HttpMethod { get { return m_httpMethod; } } private string m_path; - public string Path + virtual public string Path { get { return m_path; } } diff --git a/OpenSim/Framework/Servers/ILlsdMethodHandler.cs b/OpenSim/Framework/Servers/ILlsdMethodHandler.cs deleted file mode 100644 index 5382f2d..0000000 --- a/OpenSim/Framework/Servers/ILlsdMethodHandler.cs +++ /dev/null @@ -1,37 +0,0 @@ -/* -* Copyright (c) Contributors, http://www.openmetaverse.org/ -* See CONTRIBUTORS.TXT for a full list of copyright holders. -* -* 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 OpenSim Project 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 THE CONTRIBUTORS 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. -* -*/ - -namespace OpenSim.Framework.Servers -{ - public interface ILlsdMethodHandler - { - string Handle(string request, string path); - } - - -} diff --git a/OpenSim/Framework/Servers/LlsdMethod.cs b/OpenSim/Framework/Servers/LlsdMethod.cs deleted file mode 100644 index d17fa38..0000000 --- a/OpenSim/Framework/Servers/LlsdMethod.cs +++ /dev/null @@ -1,32 +0,0 @@ -/* -* Copyright (c) Contributors, http://www.openmetaverse.org/ -* See CONTRIBUTORS.TXT for a full list of copyright holders. -* -* 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 OpenSim Project 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 THE CONTRIBUTORS 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. -* -*/ - -namespace OpenSim.Framework.Servers -{ - public delegate TResponse LlsdMethod( TRequest request ); -} diff --git a/OpenSim/Framework/Servers/OpenSim.Framework.Servers.csproj b/OpenSim/Framework/Servers/OpenSim.Framework.Servers.csproj index 4eb9844..cf2236a 100644 --- a/OpenSim/Framework/Servers/OpenSim.Framework.Servers.csproj +++ b/OpenSim/Framework/Servers/OpenSim.Framework.Servers.csproj @@ -99,21 +99,12 @@ Code - - Code - Code - - Code - Code - - Code - Code diff --git a/OpenSim/Framework/Servers/OpenSim.Framework.Servers.dll.build b/OpenSim/Framework/Servers/OpenSim.Framework.Servers.dll.build index 5e96ef1..f837c22 100644 --- a/OpenSim/Framework/Servers/OpenSim.Framework.Servers.dll.build +++ b/OpenSim/Framework/Servers/OpenSim.Framework.Servers.dll.build @@ -14,11 +14,8 @@ - - - diff --git a/OpenSim/Framework/Servers/RestMethodEntry.cs b/OpenSim/Framework/Servers/RestMethodEntry.cs deleted file mode 100644 index ab926e0..0000000 --- a/OpenSim/Framework/Servers/RestMethodEntry.cs +++ /dev/null @@ -1,27 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Text; - -namespace OpenSim.Framework.Servers -{ - public class RestMethodEntry - { - private string m_path; - public string Path - { - get { return m_path; } - } - - private RestMethod m_restMethod; - public RestMethod RestMethod - { - get { return m_restMethod; } - } - - public RestMethodEntry(string path, RestMethod restMethod) - { - m_path = path; - m_restMethod = restMethod; - } - } -} diff --git a/OpenSim/Framework/UserManager/LoginResponse.cs b/OpenSim/Framework/UserManager/LoginResponse.cs index 64504fa..abcbd48 100644 --- a/OpenSim/Framework/UserManager/LoginResponse.cs +++ b/OpenSim/Framework/UserManager/LoginResponse.cs @@ -222,7 +222,9 @@ namespace OpenSim.Framework.UserManagement responseData["sim_port"] =(Int32) this.SimPort; responseData["sim_ip"] = this.SimAddress; + MainLog.Instance.Warn("SIM IP: " + responseData["sim_ip"] + "; SIM PORT: " + responseData["sim_port"]); + responseData["agent_id"] = this.AgentID.ToStringHyphenated(); responseData["session_id"] = this.SessionID.ToStringHyphenated(); responseData["secure_session_id"] = this.SecureSessionID.ToStringHyphenated(); diff --git a/OpenSim/Region/Capabilities/Caps.cs b/OpenSim/Region/Capabilities/Caps.cs index 1d07683..70d601f 100644 --- a/OpenSim/Region/Capabilities/Caps.cs +++ b/OpenSim/Region/Capabilities/Caps.cs @@ -71,20 +71,33 @@ namespace OpenSim.Region.Capabilities public void RegisterHandlers() { Console.WriteLine("registering CAPS handlers"); + string capsBase = "/CAPS/" + m_capsObjectPath; + + AddLegacyCapsHandler( httpListener, m_mapLayerPath, MapLayer); + + //httpListener.AddStreamHandler( + // new LLSDStreamhandler("POST", capsBase + m_mapLayerPath, this.GetMapLayer )); - AddCapsHandler( httpListener, m_requestPath, CapsRequest); - AddCapsHandler( httpListener, m_mapLayerPath, MapLayer); - AddCapsHandler( httpListener, m_newInventory, NewAgentInventory); - AddCapsHandler( httpListener, eventQueue, ProcessEventQueue); - AddCapsHandler( httpListener, m_requestTexture, RequestTexture); + AddLegacyCapsHandler(httpListener, m_requestPath, CapsRequest); + AddLegacyCapsHandler(httpListener, m_newInventory, NewAgentInventory); + AddLegacyCapsHandler( httpListener, eventQueue, ProcessEventQueue); + AddLegacyCapsHandler( httpListener, m_requestTexture, RequestTexture); } - private void AddCapsHandler( BaseHttpServer httpListener, string path, RestMethod restMethod ) + public LLSDMapLayerResponse GetMapLayer(LLSDMapRequest mapReq) + { + LLSDMapLayerResponse mapResponse = new LLSDMapLayerResponse(); + mapResponse.LayerData.Array.Add(this.BuildLLSDMapLayerResponse()); + return mapResponse; + } + + [Obsolete("Use BaseHttpServer.AddStreamHandler(new LLSDStreamHandler( LLSDMethod delegate )) instead.")] + private void AddLegacyCapsHandler(BaseHttpServer httpListener, string path, RestMethod restMethod) { string capsBase = "/CAPS/" + m_capsObjectPath; httpListener.AddStreamHandler(new RestStreamHandler("POST", capsBase + path, restMethod)); } - + /// /// /// @@ -125,17 +138,18 @@ namespace OpenSim.Region.Capabilities public string MapLayer(string request, string path, string param) { Encoding _enc = Encoding.UTF8; - Hashtable hash =(Hashtable) LLSD.LLSDDeserialize(_enc.GetBytes(request)); + Hashtable hash = (Hashtable)LLSD.LLSDDeserialize(_enc.GetBytes(request)); LLSDMapRequest mapReq = new LLSDMapRequest(); - LLSDHelpers.DeserialiseLLSDMap(hash, mapReq ); + LLSDHelpers.DeserialiseLLSDMap(hash, mapReq); - LLSDMapLayerResponse mapResponse= new LLSDMapLayerResponse(); + LLSDMapLayerResponse mapResponse = new LLSDMapLayerResponse(); mapResponse.LayerData.Array.Add(this.BuildLLSDMapLayerResponse()); string res = LLSDHelpers.SerialiseLLSDReply(mapResponse); - + return res; } + /// /// /// @@ -214,7 +228,7 @@ namespace OpenSim.Region.Capabilities string uploaderPath = Util.RandomClass.Next(5000, 8000).ToString("0000"); AssetUploader uploader = new AssetUploader(newAsset, newInvItem, uploaderPath, this.httpListener); - AddCapsHandler( httpListener, uploaderPath, uploader.uploaderCaps); + AddLegacyCapsHandler( httpListener, uploaderPath, uploader.uploaderCaps); string uploaderURL = "http://" + m_httpListenerHostName + ":" + m_httpListenPort.ToString() + "/CAPS/" + uploaderPath; //Console.WriteLine("uploader url is " + uploaderURL); diff --git a/OpenSim/Region/Capabilities/LLSDMethod.cs b/OpenSim/Region/Capabilities/LLSDMethod.cs new file mode 100644 index 0000000..5f42f44 --- /dev/null +++ b/OpenSim/Region/Capabilities/LLSDMethod.cs @@ -0,0 +1,8 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace OpenSim.Region.Capabilities +{ + public delegate TResponse LLSDMethod(TRequest request); +} diff --git a/OpenSim/Region/Capabilities/LLSDStreamHandler.cs b/OpenSim/Region/Capabilities/LLSDStreamHandler.cs new file mode 100644 index 0000000..ff63353 --- /dev/null +++ b/OpenSim/Region/Capabilities/LLSDStreamHandler.cs @@ -0,0 +1,40 @@ +using System; +using System.Collections.Generic; +using System.Text; +using OpenSim.Framework.Servers; +using System.IO; +using System.Collections; +using libsecondlife; + +namespace OpenSim.Region.Capabilities +{ + public class LLSDStreamhandler : BaseStreamHandler + where TRequest : new() + { + private LLSDMethod m_method; + + public LLSDStreamhandler(string httpMethod, string path, LLSDMethod method) + : base(httpMethod, path) + { + m_method = method; + } + + public override byte[] Handle(string path, Stream request) + { + Encoding encoding = Encoding.UTF8; + StreamReader streamReader = new StreamReader(request, encoding); + + string requestBody = streamReader.ReadToEnd(); + streamReader.Close(); + + Hashtable hash = (Hashtable)LLSD.LLSDDeserialize(encoding.GetBytes(requestBody)); + TRequest llsdRequest = new TRequest(); + LLSDHelpers.DeserialiseLLSDMap(hash, llsdRequest); + + TResponse response = m_method(llsdRequest); + + return encoding.GetBytes( LLSDHelpers.SerialiseLLSDReply(response) ); + + } + } +} diff --git a/OpenSim/Region/Capabilities/OpenSim.Region.Capabilities.csproj b/OpenSim/Region/Capabilities/OpenSim.Region.Capabilities.csproj index 4667d52..4b672ae 100644 --- a/OpenSim/Region/Capabilities/OpenSim.Region.Capabilities.csproj +++ b/OpenSim/Region/Capabilities/OpenSim.Region.Capabilities.csproj @@ -123,6 +123,12 @@ Code + + Code + + + Code + Code diff --git a/OpenSim/Region/Capabilities/OpenSim.Region.Capabilities.dll.build b/OpenSim/Region/Capabilities/OpenSim.Region.Capabilities.dll.build index a091b5c..1d552c2 100644 --- a/OpenSim/Region/Capabilities/OpenSim.Region.Capabilities.dll.build +++ b/OpenSim/Region/Capabilities/OpenSim.Region.Capabilities.dll.build @@ -20,6 +20,8 @@ + + diff --git a/OpenSim/Region/Examples/SimpleApp/LlsdMethodEntry.cs b/OpenSim/Region/Examples/SimpleApp/LlsdMethodEntry.cs index f946482..d0ef2af 100644 --- a/OpenSim/Region/Examples/SimpleApp/LlsdMethodEntry.cs +++ b/OpenSim/Region/Examples/SimpleApp/LlsdMethodEntry.cs @@ -2,40 +2,9 @@ using System.Collections; using System.Text; using libsecondlife; using OpenSim.Region.Capabilities; +using System.IO; namespace OpenSim.Framework.Servers { - public class LlsdMethodEntry : ILlsdMethodHandler - where TRequest : new() - { - private LlsdMethod m_method; - - - public LlsdMethodEntry( ) - { - - } - - public LlsdMethodEntry(LlsdMethod method) - { - m_method = method; - } - - #region ILlsdMethodHandler Members - - public string Handle(string body, string path) - { - Encoding _enc = Encoding.UTF8; - Hashtable hash = (Hashtable)LLSD.LLSDDeserialize(_enc.GetBytes( body )); - TRequest request = new TRequest(); - - LLSDHelpers.DeserialiseLLSDMap(hash, request ); - - TResponse response = m_method(request); - - return LLSDHelpers.SerialiseLLSDReply( response ); - } - - #endregion - } + } diff --git a/OpenSim/Region/Examples/SimpleApp/Program.cs b/OpenSim/Region/Examples/SimpleApp/Program.cs index bc84c35..ad70df8 100644 --- a/OpenSim/Region/Examples/SimpleApp/Program.cs +++ b/OpenSim/Region/Examples/SimpleApp/Program.cs @@ -60,8 +60,6 @@ namespace SimpleApp httpServer.AddXmlRPCHandler("login_to_simulator", communicationsManager.UserServices.XmlRpcLoginMethod ); - RegisterLlsdHandler("/Caps/test/", LlsdMethodDemo); - httpServer.Start(); m_log.WriteLine( LogPriority.NORMAL, "Press enter to quit."); @@ -74,27 +72,6 @@ namespace SimpleApp } - private LLSDMapLayerResponse LlsdMethodDemo(LLSDMapRequest request) - { - return new LLSDMapLayerResponse(); - } - - ILlsdMethodHandler m_handler; - - private void RegisterLlsdHandler( string path, LlsdMethod method ) - where TRequest : new() - { - // path should be handler key, but for now just conceptually store it. - m_handler = new LlsdMethodEntry( method ); - } - - private string ProcessLlsdMethod( string request,string path ) - { - LlsdMethodEntry concreteHandler = new LlsdMethodEntry( LlsdMethodDemo ); - - return m_handler.Handle(request, path); - } - private bool AddNewSessionHandler(ulong regionHandle, Login loginData) { m_log.WriteLine(LogPriority.NORMAL, "Region [{0}] recieved Login from [{1}] [{2}]", regionHandle, loginData.First, loginData.Last); -- cgit v1.1