From 63a1a2739a28b32dde60f01fce2fbd5149ede0ad Mon Sep 17 00:00:00 2001 From: Dr Scofield Date: Fri, 27 Jun 2008 09:29:41 +0000 Subject: status: work in progress, non-functional having OSHttpHandler as a delegate was not too hot, i'm refactoring it into an interface. --- OpenSim/Framework/Servers/OSHttpServer.cs | 66 ++++++++++++------------------- 1 file changed, 25 insertions(+), 41 deletions(-) (limited to 'OpenSim/Framework/Servers/OSHttpServer.cs') diff --git a/OpenSim/Framework/Servers/OSHttpServer.cs b/OpenSim/Framework/Servers/OSHttpServer.cs index c022062..169ce13 100644 --- a/OpenSim/Framework/Servers/OSHttpServer.cs +++ b/OpenSim/Framework/Servers/OSHttpServer.cs @@ -40,39 +40,6 @@ using HttpListener = HttpServer.HttpListener; namespace OpenSim.Framework.Servers { - /// - /// Any OSHttpHandler must return one of the following results: - /// - /// - /// result code - /// meaning - /// - /// - /// Pass - /// handler did not process the request - /// - /// - /// Handled - /// handler did process the request, OSHttpServer - /// can clean up and close the request - /// - /// - /// Detached - /// handler handles the request, OSHttpServer - /// can forget about the request and should not touch it as - /// the handler has taken control - /// - /// - /// - public enum OSHttpHandlerResult - { - Pass, - Handled, - Detached, - } - - public delegate OSHttpHandlerResult OSHttpHandler(OSHttpRequest request); - /// /// OSHttpServer provides an HTTP server bound to a specific /// port. When instantiated with just address and port it uses @@ -81,7 +48,7 @@ namespace OpenSim.Framework.Servers /// public class OSHttpServer { - private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); + private static readonly ILog _log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); // underlying HttpServer.HttpListener protected HttpListener _listener; @@ -117,6 +84,22 @@ namespace OpenSim.Framework.Servers } /// + /// List of registered OSHttpHandlers for this OSHttpServer instance. + /// + protected List _httpHandlers = new List(); + public List OSHttpHandlers + { + get + { + lock (_httpHandlers) + { + return new List(_httpHandlers); + } + } + } + + + /// /// Instantiate an HTTP server. /// public OSHttpServer(IPAddress address, int port, int poolSize) @@ -182,9 +165,6 @@ namespace OpenSim.Framework.Servers } } - protected Dictionary Handler2Path = new Dictionary(); - protected Dictionary> Handler2Headers = - new Dictionary>(); /// /// Add an HTTP request handler. @@ -193,13 +173,17 @@ namespace OpenSim.Framework.Servers /// regex object for path matching /// dictionary containing header names /// and regular expressions to match against header values - public void AddHandler(OSHttpHandler handler, Regex path, Dictionary headers) + public void AddHandler(OSHttpHandler handler) { - lock (Handler2Headers) + lock (_httpHandlers) { - + if (_httpHandlers.Contains(handler)) + { + _log.DebugFormat("[OSHttpServer] attempt to add already existing handler ignored"); + return; + } + _httpHandlers.Add(handler); } } - } } -- cgit v1.1