opensim-development – Rev 1

Subversion Repositories:
Rev:
<?xml version="1.0"?>
<doc>
    <assembly>
        <name>HttpServer_OpenSim</name>
    </assembly>
    <members>
        <member name="T:HttpServer.RealmHandler">
            <summary>
            Delegate used to find a realm/domain.
            </summary>
            <param name="domain"></param>
            <returns></returns>
            <remarks>
            Realms are used during HTTP Authentication
            </remarks>
            <seealso cref="T:HttpServer.Authentication.AuthenticationModule"/>
            <seealso cref="T:HttpServer.Authentication.AuthenticationHandler"/>
        </member>
        <member name="T:HttpServer.HttpServer">
            <summary>
            A complete HTTP server, you need to add a module to it to be able to handle incoming requests.
            </summary>
            <example>
            <code>
            // this small example will add two web site modules, thus handling
            // two different sites. In reality you should add Controller modules or something
            // two the website modules to be able to handle different requests.
            HttpServer server = new HttpServer();
            server.Add(new WebSiteModule("www.gauffin.com", "Gauffin Telecom AB"));
            server.Add(new WebSiteModule("www.vapadi.se", "Remote PBX"));
            
            // start regular http
            server.Start(IPAddress.Any, 80);
            
            // start https
            server.Start(IPAddress.Any, 443, myCertificate);
            </code>
            </example>
            <seealso cref="T:HttpServer.HttpModules.HttpModule"/>
            <seealso cref="T:HttpServer.HttpModules.FileModule"/>
            <seealso cref="T:HttpServer.HttpListener"/>
        </member>
        <member name="M:HttpServer.HttpServer.#ctor(HttpServer.IComponentProvider)">
            <summary>
            Initializes a new instance of the <see cref="T:HttpServer.HttpServer"/> class.
            </summary>
            <param name="provider">Used to get all components used in the server..</param>
        </member>
        <member name="M:HttpServer.HttpServer.#ctor">
            <summary>
            Initializes a new instance of the <see cref="T:HttpServer.HttpServer"/> class.
            </summary>
        </member>
        <member name="M:HttpServer.HttpServer.#ctor(HttpServer.FormDecoders.FormDecoderProvider)">
            <summary>
            Initializes a new instance of the <see cref="T:HttpServer.HttpServer"/> class.
            </summary>
            <param name="decoderProvider">Form decoders are used to convert different types of posted data to the <see cref="T:HttpServer.HttpInput"/> object types.</param>
            <seealso cref="T:HttpServer.FormDecoders.IFormDecoder"/>
            <seealso cref="P:HttpServer.HttpServer.FormDecoderProviders"/>
        </member>
        <member name="M:HttpServer.HttpServer.#ctor(HttpServer.Sessions.IHttpSessionStore)">
            <summary>
            Initializes a new instance of the <see cref="T:HttpServer.HttpServer"/> class.
            </summary>
            <param name="sessionStore">A session store is used to save and retrieve sessions</param>
            <seealso cref="T:HttpServer.Sessions.IHttpSessionStore"/>
        </member>
        <member name="M:HttpServer.HttpServer.#ctor(HttpServer.ILogWriter)">
            <summary>
            Initializes a new instance of the <see cref="T:HttpServer.HttpServer"/> class.
            </summary>
            <param name="logWriter">The log writer.</param>
            <seealso cref="P:HttpServer.HttpServer.LogWriter"/>
        </member>
        <member name="M:HttpServer.HttpServer.#ctor(HttpServer.FormDecoders.FormDecoderProvider,HttpServer.ILogWriter)">
            <summary>
            Initializes a new instance of the <see cref="T:HttpServer.HttpServer"/> class.
            </summary>
            <param name="decoderProvider">Form decoders are used to convert different types of posted data to the <see cref="T:HttpServer.HttpInput"/> object types.</param>
            <param name="logWriter">The log writer.</param>
            <seealso cref="T:HttpServer.FormDecoders.IFormDecoder"/>
            <seealso cref="P:HttpServer.HttpServer.FormDecoderProviders"/>
            <seealso cref="P:HttpServer.HttpServer.LogWriter"/>
        </member>
        <member name="M:HttpServer.HttpServer.#ctor(HttpServer.FormDecoders.FormDecoderProvider,HttpServer.Sessions.IHttpSessionStore,HttpServer.ILogWriter)">
            <summary>
            Initializes a new instance of the <see cref="T:HttpServer.HttpServer"/> class.
            </summary>
            <param name="decoderProvider">Form decoders are used to convert different types of posted data to the <see cref="T:HttpServer.HttpInput"/> object types.</param>
            <param name="sessionStore">A session store is used to save and retrieve sessions</param>
            <param name="logWriter">The log writer.</param>
            <seealso cref="T:HttpServer.FormDecoders.IFormDecoder"/>
            <seealso cref="P:HttpServer.HttpServer.FormDecoderProviders"/>
            <seealso cref="P:HttpServer.HttpServer.LogWriter"/>
            <seealso cref="T:HttpServer.Sessions.IHttpSessionStore"/>
        </member>
        <member name="M:HttpServer.HttpServer.Add(HttpServer.Rules.IRule)">
            <summary>
            Adds the specified rule.
            </summary>
            <param name="rule">The rule.</param>
        </member>
        <member name="M:HttpServer.HttpServer.Add(HttpServer.HttpModules.HttpModule)">
            <summary>
            Add a <see cref="T:HttpServer.HttpModules.HttpModule"/> to the server.
            </summary>
            <param name="module">mode to add</param>
        </member>
        <member name="M:HttpServer.HttpServer.DecodeBody(HttpServer.IHttpRequest)">
            <summary>
            Decodes the request body.
            </summary>
            <param name="request">The request.</param>
            <exception cref="T:HttpServer.Exceptions.InternalServerException">Failed to decode form data.</exception>
        </member>
        <member name="M:HttpServer.HttpServer.ErrorPage(HttpServer.IHttpResponse,System.Net.HttpStatusCode,System.String)">
            <summary>
            Generate a HTTP error page (that will be added to the response body).
            response status code is also set.
            </summary>
            <param name="response">Response that the page will be generated in.</param>
            <param name="error"><see cref="T:System.Net.HttpStatusCode"/>.</param>
            <param name="body">response body contents.</param>
        </member>
        <member name="M:HttpServer.HttpServer.ErrorPage(HttpServer.IHttpResponse,HttpServer.Exceptions.HttpException)">
            <summary>
            Generate a HTTP error page (that will be added to the response body).
            response status code is also set.
            </summary>
            <param name="response">Response that the page will be generated in.</param>
            <param name="err">exception.</param>
        </member>
        <member name="M:HttpServer.HttpServer.GetRealm(HttpServer.IHttpRequest)">
            <summary>
            Realms are used by the <see cref="T:HttpServer.Authentication.AuthenticationModule"/>s.
            </summary>
            <param name="request">HTTP request</param>
            <returns>domain/realm.</returns>
        </member>
        <member name="M:HttpServer.HttpServer.HandleRequest(HttpServer.IHttpClientContext,HttpServer.IHttpRequest,HttpServer.IHttpResponse,HttpServer.Sessions.IHttpSession)">
            <summary>
            Process an incoming request.
            </summary>
            <param name="context">connection to client</param>
            <param name="request">request information</param>
            <param name="response">response that should be filled</param>
            <param name="session">session information</param>
        </member>
        <member name="M:HttpServer.HttpServer.OnClientDisconnected(HttpServer.IHttpClientContext,System.Net.Sockets.SocketError)">
            <summary>
            Can be overloaded to implement stuff when a client have been connected.
            </summary>
            <remarks>
            Default implementation does nothing.
            </remarks>
            <param name="client">client that disconnected</param>
            <param name="error">disconnect reason</param>
        </member>
        <member name="M:HttpServer.HttpServer.ProcessAuthentication(HttpServer.IHttpRequest,HttpServer.IHttpResponse,HttpServer.Sessions.IHttpSession)">
            <summary>
            Handle authentication
            </summary>
            <param name="request"></param>
            <param name="response"></param>
            <param name="session"></param>
            <returns>true if request can be handled; false if not.</returns>
            <exception cref="T:HttpServer.Exceptions.BadRequestException">Invalid authorization header</exception>
        </member>
        <member name="M:HttpServer.HttpServer.RequestAuthentication(HttpServer.Authentication.AuthenticationModule,HttpServer.IHttpRequest,HttpServer.IHttpResponse)">
            <summary>
            Will request authentication.
            </summary>
            <remarks>
            Sends respond to client, nothing else can be done with the response after this.
            </remarks>
            <param name="mod"></param>
            <param name="request"></param>
            <param name="response"></param>
        </member>
        <member name="M:HttpServer.HttpServer.OnRequest(System.Object,HttpServer.RequestEventArgs)">
            <summary>
            Received from a <see cref="T:HttpServer.IHttpClientContext"/> when a request have been parsed successfully.
            </summary>
            <param name="source"><see cref="T:HttpServer.IHttpClientContext"/> that received the request.</param>
            <param name="args">The request.</param>
        </member>
        <member name="M:HttpServer.HttpServer.ProcessRequestWrapper(HttpServer.IHttpClientContext,HttpServer.IHttpRequest)">
            <summary>
            To be able to track request count.
            </summary>
            <param name="context"></param>
            <param name="request"></param>
        </member>
        <member name="M:HttpServer.HttpServer.Start(System.Net.IPAddress,System.Int32)">
            <summary>
            Start the web server using regular HTTP.
            </summary>
            <param name="address">IP Address to listen on, use <c>IpAddress.Any </c>to accept connections on all IP addresses/network cards.</param>
            <param name="port">Port to listen on. 80 can be a good idea =)</param>
            <exception cref="T:System.ArgumentNullException"><c>address</c> is null.</exception>
            <exception cref="T:System.ArgumentException">Port must be a positive number.</exception>
        </member>
        <member name="M:HttpServer.HttpServer.Start(System.Net.IPAddress,System.Int32,System.Security.Cryptography.X509Certificates.X509Certificate)">
            <summary>
            Accept secure connections.
            </summary>
            <param name="address">IP Address to listen on, use <see cref="F:System.Net.IPAddress.Any"/> to accept connections on all IP Addresses / network cards.</param>
            <param name="port">Port to listen on. 80 can be a good idea =)</param>
            <param name="certificate">Certificate to use</param>
            <exception cref="T:System.ArgumentNullException"><c>address</c> is null.</exception>
            <exception cref="T:System.ArgumentException">Port must be a positive number.</exception>
        </member>
        <member name="M:HttpServer.HttpServer.Stop">
            <summary>
            shut down the server and listeners
            </summary>
        </member>
        <member name="M:HttpServer.HttpServer.WriteLog(HttpServer.LogPrio,System.String)">
            <summary>
            write an entry to the log file
            </summary>
            <param name="prio">importance of the message</param>
            <param name="message">log message</param>
        </member>
        <member name="M:HttpServer.HttpServer.WriteLog(System.Object,HttpServer.LogPrio,System.String)">
            <summary>
            write an entry to the log file
            </summary>
            <param name="source">object that wrote the message</param>
            <param name="prio">importance of the message</param>
            <param name="message">log message</param>
        </member>
        <member name="P:HttpServer.HttpServer.Current">
            <summary>
            Server that is handling the current request.
            </summary>
            <remarks>
            Will be set as soon as a request arrives to the <see cref="T:HttpServer.HttpServer"/> object.
            </remarks>
        </member>
        <member name="P:HttpServer.HttpServer.AuthenticationModules">
            <summary>
            Modules used for authentication. The module that is is added first is used as 
            the default authentication module.
            </summary>
            <remarks>Use the corresponding property
            in the <see cref="T:HttpServer.HttpModules.WebSiteModule"/> if you are using multiple websites.</remarks>
        </member>
        <member name="P:HttpServer.HttpServer.FormDecoderProviders">
            <summary>
            Form decoder providers are used to decode request body (which normally contains form data).
            </summary>
        </member>
        <member name="P:HttpServer.HttpServer.ServerName">
            <summary>
            Server name sent in HTTP responses.
            </summary>
            <remarks>
            Do NOT include version in name, since it makes it 
            easier for hackers.
            </remarks>
        </member>
        <member name="P:HttpServer.HttpServer.SessionCookieName">
            <summary>
            Name of cookie where session id is stored.
            </summary>
        </member>
        <member name="P:HttpServer.HttpServer.LogWriter">
            <summary>
            Specified where logging should go.
            </summary>
            <seealso cref="T:HttpServer.NullLogWriter"/>
            <seealso cref="T:HttpServer.ConsoleLogWriter"/>
            <seealso cref="P:HttpServer.HttpServer.LogWriter"/>
        </member>
        <member name="P:HttpServer.HttpServer.BackLog">
            <summary>
            Number of connections that can wait to be accepted by the server.
            </summary>
            <remarks>Default is 10.</remarks>
        </member>
        <member name="P:HttpServer.HttpServer.MaxRequestCount">
            <summary>
            Gets or sets maximum number of allowed simultaneous requests.
            </summary>
            <remarks>
            <para>
            This property is useful in busy systems. The HTTP server
            will start queuing new requests if this limit is hit, instead
            of trying to process all incoming requests directly.
            </para>
            <para>
            The default number if allowed simultaneous requests are 10.
            </para>
            </remarks>
        </member>
        <member name="P:HttpServer.HttpServer.MaxQueueSize">
            <summary>
            Gets or sets maximum number of requests queuing to be handled.
            </summary>
            <remarks>
            <para>
            The WebServer will start turning requests away if response code
            <see cref="F:System.Net.HttpStatusCode.ServiceUnavailable"/> to indicate that the server
            is too busy to be able to handle the request.
            </para>
            </remarks>
        </member>
        <member name="E:HttpServer.HttpServer.RealmWanted">
            <summary>
            Realms are used during HTTP authentication.
            Default realm is same as server name.
            </summary>
        </member>
        <member name="E:HttpServer.HttpServer.ExceptionThrown">
            <summary>
            Let's to receive unhandled exceptions from the threads.
            </summary>
            <remarks>
            Exceptions will be thrown during debug mode if this event is not used,
            exceptions will be printed to console and suppressed during release mode.
            </remarks>
        </member>
        <member name="T:HttpServer.HttpModules.ResourceFileModule">
            <summary>
            Serves files that are stored in embedded resources.
            </summary>
        </member>
        <member name="T:HttpServer.HttpModules.HttpModule">
            <summary>
            A HttpModule can be used to serve Uri's. The module itself
            decides if it should serve a Uri or not. In this way, you can
            get a very flexible http application since you can let multiple modules
            serve almost similar urls.
            </summary>
            <remarks>
            Throw <see cref="T:HttpServer.Exceptions.UnauthorizedException"/> if you are using a <see cref="T:HttpServer.Authentication.AuthenticationModule"/> and want to prompt for user name/password.
            </remarks>
        </member>
        <member name="M:HttpServer.HttpModules.HttpModule.Process(HttpServer.IHttpRequest,HttpServer.IHttpResponse,HttpServer.Sessions.IHttpSession)">
            <summary>
            Method that process the url
            </summary>
            <param name="request">Information sent by the browser about the request</param>
            <param name="response">Information that is being sent back to the client.</param>
            <param name="session">Session used to </param>
            <returns>true if this module handled the request.</returns>
        </member>
        <member name="M:HttpServer.HttpModules.HttpModule.SetLogWriter(HttpServer.ILogWriter)">
            <summary>
            Set the log writer to use.
            </summary>
            <param name="writer">logwriter to use.</param>
        </member>
        <member name="M:HttpServer.HttpModules.HttpModule.Write(HttpServer.LogPrio,System.String)">
            <summary>
            Log something.
            </summary>
            <param name="prio">importance of log message</param>
            <param name="message">message</param>
        </member>
        <member name="P:HttpServer.HttpModules.HttpModule.AllowSecondaryProcessing">
            <summary>
            If true specifies that the module doesn't consume the processing of a request so that subsequent modules
            can continue processing afterwards. Default is false.
            </summary>
        </member>
        <member name="M:HttpServer.HttpModules.ResourceFileModule.#ctor">
            <summary>
            Initializes a new instance of the <see cref="T:HttpServer.HttpModules.ResourceFileModule"/> class.
            Runs <see cref="M:HttpServer.HttpModules.ResourceFileModule.AddDefaultMimeTypes"/> to make sure the basic mime types are available, they can be cleared later
            through the use of <see cref="P:HttpServer.HttpModules.ResourceFileModule.MimeTypes"/> if desired.
            </summary>
        </member>
        <member name="M:HttpServer.HttpModules.ResourceFileModule.#ctor(HttpServer.ILogWriter)">
            <summary>
            Initializes a new instance of the <see cref="T:HttpServer.HttpModules.ResourceFileModule"/> class.
            Runs <see cref="M:HttpServer.HttpModules.ResourceFileModule.AddDefaultMimeTypes"/> to make sure the basic mime types are available, they can be cleared later
            through the use of <see cref="P:HttpServer.HttpModules.ResourceFileModule.MimeTypes"/> if desired.
            </summary>
            <param name="logWriter">The log writer to use when logging events</param>
        </member>
        <member name="M:HttpServer.HttpModules.ResourceFileModule.AddDefaultMimeTypes">
            <summary>
            Mimtypes that this class can handle per default
            </summary>
        </member>
        <member name="M:HttpServer.HttpModules.ResourceFileModule.AddResources(System.String,System.Reflection.Assembly,System.String)">
            <summary>
            Loads resources from a namespace in the given assembly to an uri
            </summary>
            <param name="toUri">The uri to map the resources to</param>
            <param name="fromAssembly">The assembly in which the resources reside</param>
            <param name="fromNamespace">The namespace from which to load the resources</param>
            <usage>
            resourceLoader.LoadResources("/user/", typeof(User).Assembly, "MyLib.Models.User.Views");
            
            will make ie the resource MyLib.Models.User.Views.stylesheet.css accessible via /user/stylesheet.css
            </usage>
            <returns>The amount of loaded files, giving you the possibility of making sure the resources needed gets loaded</returns>
        </member>
        <member name="M:HttpServer.HttpModules.ResourceFileModule.CanHandle(HttpServer.IHttpRequest)">
            <summary>
            Returns true if the module can handle the request
            </summary>
        </member>
        <member name="M:HttpServer.HttpModules.ResourceFileModule.Process(HttpServer.IHttpRequest,HttpServer.IHttpResponse,HttpServer.Sessions.IHttpSession)">
            <summary>
            Method that process the url
            </summary>
            <param name="request">Information sent by the browser about the request</param>
            <param name="response">Information that is being sent back to the client.</param>
            <param name="session">Session used to </param>
            <returns>true if this module handled the request.</returns>
        </member>
        <member name="P:HttpServer.HttpModules.ResourceFileModule.MimeTypes">
            <summary>
            List with all mime-type that are allowed. 
            </summary>
            <remarks>All other mime types will result in a Forbidden http status code.</remarks>
        </member>
        <member name="T:HttpServer.HttpInput">
            <summary>
            Contains some kind of input from the browser/client.
            can be QueryString, form data or any other request body content.
            </summary>
        </member>
        <member name="T:HttpServer.IHttpInput">
            <summary>
            Base class for request data containers
            </summary>
        </member>
        <member name="M:HttpServer.IHttpInput.Add(System.String,System.String)">
            <summary>
            Adds a parameter mapped to the presented name
            </summary>
            <param name="name">The name to map the parameter to</param>
            <param name="value">The parameter value</param>
        </member>
        <member name="M:HttpServer.IHttpInput.Contains(System.String)">
            <summary>
            Returns true if the container contains the requested parameter
            </summary>
            <param name="name">Parameter id</param>
            <returns>True if parameter exists</returns>
        </member>
        <member name="P:HttpServer.IHttpInput.Item(System.String)">
            <summary>
            Returns a request parameter
            </summary>
            <param name="name">The name associated with the parameter</param>
            <returns></returns>
        </member>
        <member name="F:HttpServer.HttpInput.Empty">
            <summary> Representation of a non-initialized class instance </summary>
        </member>
        <member name="F:HttpServer.HttpInput._ignoreChanges">
            <summary> Variable telling the class that it is non-initialized <see cref="F:HttpServer.HttpInput.Empty"/> </summary>
        </member>
        <member name="M:HttpServer.HttpInput.#ctor(System.String)">
            <summary>
            Initializes a new instance of the <see cref="T:HttpServer.HttpInput"/> class.
            </summary>
            <param name="name">form name.</param>
        </member>
        <member name="M:HttpServer.HttpInput.#ctor(System.String,System.Boolean)">
            <summary>
            Initializes a new instance of the <see cref="T:HttpServer.HttpInput"/> class.
            </summary>
            <param name="name">form name.</param>
            <param name="ignoreChanges">if set to <c>true</c> all changes will be ignored. </param>
            <remarks>this constructor should only be used by Empty</remarks>
        </member>
        <member name="M:HttpServer.HttpInput.#ctor(HttpServer.HttpInput)">
            <summary>Creates a deep copy of the HttpInput class</summary>
            <param name="input">The object to copy</param>
            <remarks>The function makes a deep copy of quite a lot which can be slow</remarks>
        </member>
        <member name="M:HttpServer.HttpInput.Add(System.String,System.String)">
            <summary>
            Add a new element. Form array elements are parsed
            and added in a correct hierarchy.
            </summary>
            <param name="name">Name is converted to lower case.</param>
            <param name="value"></param>
            <exception cref="T:System.ArgumentNullException"><c>name</c> is null.</exception>
            <exception cref="T:System.InvalidOperationException">Cannot add stuff to <see cref="F:HttpServer.HttpInput.Empty"/>.</exception>
        </member>
        <member name="M:HttpServer.HttpInput.Contains(System.String)">
            <summary>
            Returns true if the class contains a <see cref="T:HttpServer.HttpInput"/> with the corresponding name.
            </summary>
            <param name="name">The field/query string name</param>
            <returns>True if the value exists</returns>
        </member>
        <member name="M:HttpServer.HttpInput.ParseItem(System.String,System.String)">
            <summary>
            Parses an item and returns it.
            This function is primarily used to parse array items as in user[name].
            </summary>
            <param name="name"></param>
            <param name="value"></param>
            <returns></returns>
        </member>
        <member name="M:HttpServer.HttpInput.ToString">
            <summary> Outputs the instance representing all its values joined together </summary>
            <returns></returns>
        </member>
        <member name="M:HttpServer.HttpInput.ToString(System.Boolean)">
            <summary>Returns all items as an unescaped query string.</summary>
            <returns></returns>
        </member>
        <member name="M:HttpServer.HttpInput.ExtractOne(System.String)">
            <summary>
            Extracts one parameter from an array
            </summary>
            <param name="value">Containing the string array</param>
            <returns>All but the first value</returns>
            <example>
            string test1 = ExtractOne("system[user][extension][id]");
            string test2 = ExtractOne(test1);
            string test3 = ExtractOne(test2);
            // test1 = user[extension][id]
            // test2 = extension[id]
            // test3 = id
            </example>
        </member>
        <member name="M:HttpServer.HttpInput.Clear">
            <summary>Resets all data contained by class</summary>
        </member>
        <member name="M:HttpServer.HttpInput.System#Collections#Generic#IEnumerable{HttpServer#HttpInputItem}#GetEnumerator">
            <summary>
            Returns an enumerator that iterates through the collection.
            </summary>
            
            <returns>
            A <see cref="T:System.Collections.Generic.IEnumerator`1"></see> that can be used to iterate through the collection.
            </returns>
            <filterpriority>1</filterpriority>
        </member>
        <member name="M:HttpServer.HttpInput.GetEnumerator">
            <summary>
            Returns an enumerator that iterates through a collection.
            </summary>
            
            <returns>
            An <see cref="T:System.Collections.IEnumerator"></see> object that can be used to iterate through the collection.
            </returns>
            <filterpriority>2</filterpriority>
        </member>
        <member name="P:HttpServer.HttpInput.Name">
            <summary>
            Form name as lower case
            </summary>
        </member>
        <member name="P:HttpServer.HttpInput.Item(System.String)">
            <summary>
            Get a form item.
            </summary>
            <param name="name"></param>
            <returns>Returns <see cref="F:HttpServer.HttpInputItem.Empty"/> if item was not found.</returns>
        </member>
        <member name="T:HttpServer.Exceptions.ForbiddenException">
            <summary>
            The server understood the request, but is refusing to fulfill it. 
            Authorization will not help and the request SHOULD NOT be repeated. 
            If the request method was not HEAD and the server wishes to make public why the request has not been fulfilled, 
            it SHOULD describe the reason for the refusal in the entity. If the server does not wish to make this information 
            available to the client, the status code 404 (Not Found) can be used instead.
            
            Text taken from: http://www.submissionchamber.com/help-guides/error-codes.php
            </summary>
        </member>
        <member name="T:HttpServer.Exceptions.HttpException">
            <summary>
            All HTTP based exceptions will derive this class.
            </summary>
        </member>
        <member name="M:HttpServer.Exceptions.HttpException.#ctor(System.Net.HttpStatusCode,System.String)">
            <summary>
            Create a new HttpException
            </summary>
            <param name="code">http status code (sent in the response)</param>
            <param name="message">error description</param>
        </member>
        <member name="M:HttpServer.Exceptions.HttpException.#ctor(System.Net.HttpStatusCode,System.String,System.Exception)">
            <summary>
            Create a new HttpException
            </summary>
            <param name="code">http status code (sent in the response)</param>
            <param name="message">error description</param>
            <param name="inner">inner exception</param>
        </member>
        <member name="P:HttpServer.Exceptions.HttpException.HttpStatusCode">
            <summary>
            status code to use in the response.
            </summary>
        </member>
        <member name="M:HttpServer.Exceptions.ForbiddenException.#ctor(System.String)">
            <summary>
            Initializes a new instance of the <see cref="T:HttpServer.Exceptions.ForbiddenException"/> class.
            </summary>
            <param name="errorMsg">error message</param>
        </member>
        <member name="T:HttpServer.RequestCookies">
            <summary>
            This class is created as a wrapper, since there are two different cookie types in .Net (Cookie and HttpCookie).
            The framework might switch class in the future and we dont want to have to replace all instances
            </summary>
        </member>
        <member name="M:HttpServer.RequestCookies.#ctor(System.String)">
            <summary>
            Let's copy all the cookies.
            </summary>
            <param name="cookies">value from cookie header.</param>
        </member>
        <member name="M:HttpServer.RequestCookies.Add(HttpServer.RequestCookie)">
            <summary>
            Adds a cookie in the collection.
            </summary>
            <param name="cookie">cookie to add</param>
            <exception cref="T:System.ArgumentNullException">cookie is null</exception>
        </member>
        <member name="M:HttpServer.RequestCookies.GetEnumerator">
            <summary>
            Gets a collection enumerator on the cookie list.
            </summary>
            <returns>collection enumerator</returns>
        </member>
        <member name="M:HttpServer.RequestCookies.Clear">
            <summary>
            Remove all cookies.
            </summary>
        </member>
        <member name="M:HttpServer.RequestCookies.System#Collections#Generic#IEnumerable{HttpServer#RequestCookie}#GetEnumerator">
            <summary>
            Returns an enumerator that iterates through the collection.
            </summary>
            
            <returns>
            A <see cref="T:System.Collections.Generic.IEnumerator`1"></see> that can be used to iterate through the collection.
            </returns>
            <filterpriority>1</filterpriority>
        </member>
        <member name="M:HttpServer.RequestCookies.Remove(System.String)">
            <summary>
            Remove a cookie from the collection.
            </summary>
            <param name="cookieName">Name of cookie.</param>
        </member>
        <member name="P:HttpServer.RequestCookies.Count">
            <summary>
            Gets the count of cookies in the collection.
            </summary>
        </member>
        <member name="P:HttpServer.RequestCookies.Item(System.String)">
            <summary>
            Gets the cookie of a given identifier (null if not existing).
            </summary>
        </member>
        <member name="T:HttpServer.IHttpClientContext">
            <summary>
            Contains a connection to a browser/client.
            </summary>
        </member>
        <member name="M:HttpServer.IHttpClientContext.Disconnect(System.Net.Sockets.SocketError)">
            <summary>
            Disconnect from client
            </summary>
            <param name="error">error to report in the <see cref="E:HttpServer.IHttpClientContext.Disconnected"/> event.</param>
        </member>
        <member name="M:HttpServer.IHttpClientContext.Respond(System.String,System.Net.HttpStatusCode,System.String,System.String,System.String)">
            <summary>
            Send a response.
            </summary>
            <param name="httpVersion">Either <see cref="F:HttpServer.HttpHelper.HTTP10"/> or <see cref="F:HttpServer.HttpHelper.HTTP11"/></param>
            <param name="statusCode">HTTP status code</param>
            <param name="reason">reason for the status code.</param>
            <param name="body">HTML body contents, can be null or empty.</param>
            <param name="contentType">A content type to return the body as, i.e. 'text/html' or 'text/plain', defaults to 'text/html' if null or empty</param>
            <exception cref="T:System.ArgumentException">If <paramref name="httpVersion"/> is invalid.</exception>
        </member>
        <member name="M:HttpServer.IHttpClientContext.Respond(System.String,System.Net.HttpStatusCode,System.String)">
            <summary>
            Send a response.
            </summary>
            <param name="httpVersion">Either <see cref="F:HttpServer.HttpHelper.HTTP10"/> or <see cref="F:HttpServer.HttpHelper.HTTP11"/></param>
            <param name="statusCode">HTTP status code</param>
            <param name="reason">reason for the status code.</param>
        </member>
        <member name="M:HttpServer.IHttpClientContext.Respond(System.String)">
            <summary>
            Send a response.
            </summary>
            <exception cref="T:System.ArgumentNullException"></exception>
        </member>
        <member name="M:HttpServer.IHttpClientContext.Send(System.Byte[])">
            <summary>
            send a whole buffer
            </summary>
            <param name="buffer">buffer to send</param>
            <exception cref="T:System.ArgumentNullException"></exception>
        </member>
        <member name="M:HttpServer.IHttpClientContext.Send(System.Byte[],System.Int32,System.Int32)">
            <summary>
            Send data using the stream
            </summary>
            <param name="buffer">Contains data to send</param>
            <param name="offset">Start position in buffer</param>
            <param name="size">number of bytes to send</param>
            <exception cref="T:System.ArgumentNullException"></exception>
            <exception cref="T:System.ArgumentOutOfRangeException"></exception>
        </member>
        <member name="M:HttpServer.IHttpClientContext.Close">
            <summary>
            Closes the streams and disposes of the unmanaged resources
            </summary>
        </member>
        <member name="P:HttpServer.IHttpClientContext.Secured">
            <summary>
            Using SSL or other encryption method.
            </summary>
        </member>
        <member name="P:HttpServer.IHttpClientContext.IsSecured">
            <summary>
            Using SSL or other encryption method.
            </summary>
        </member>
        <member name="E:HttpServer.IHttpClientContext.Disconnected">
            <summary>
            The context have been disconnected.
            </summary>
            <remarks>
            Event can be used to clean up a context, or to reuse it.
            </remarks>
        </member>
        <member name="E:HttpServer.IHttpClientContext.RequestReceived">
            <summary>
            A request have been received in the context.
            </summary>
        </member>
        <member name="T:HttpServer.DisconnectedEventArgs">
            <summary>
            A <see cref="T:HttpServer.IHttpClientContext"/> have been disconnected.
            </summary>
        </member>
        <member name="M:HttpServer.DisconnectedEventArgs.#ctor(System.Net.Sockets.SocketError)">
            <summary>
            Initializes a new instance of the <see cref="T:HttpServer.DisconnectedEventArgs"/> class.
            </summary>
            <param name="error">Reason to disconnection.</param>
        </member>
        <member name="P:HttpServer.DisconnectedEventArgs.Error">
            <summary>
            Gets reason to why client disconnected.
            </summary>
        </member>
        <member name="T:HttpServer.RequestEventArgs">
            <summary>
            
            </summary>
        </member>
        <member name="M:HttpServer.RequestEventArgs.#ctor(HttpServer.IHttpRequest)">
            <summary>
            Initializes a new instance of the <see cref="T:HttpServer.RequestEventArgs"/> class.
            </summary>
            <param name="request">The request.</param>
        </member>
        <member name="P:HttpServer.RequestEventArgs.Request">
            <summary>
            Gets received request.
            </summary>
        </member>
        <member name="T:HttpServer.HttpParam">
            <summary>
            Returns item either from a form or a query string (checks them in that order)
            </summary>
        </member>
        <member name="F:HttpServer.HttpParam.Empty">
            <summary> Representation of a non-initialized HttpParam </summary>
        </member>
        <member name="M:HttpServer.HttpParam.#ctor(HttpServer.IHttpInput,HttpServer.IHttpInput)">
            <summary>Initialises the class to hold a value either from a post request or a querystring request</summary>                
        </member>
        <member name="M:HttpServer.HttpParam.Add(System.String,System.String)">
            <summary>
            The add method is not availible for HttpParam
            since HttpParam checks both Request.Form and Request.QueryString
            </summary>
            <param name="name">name identifying the value</param>
            <param name="value">value to add</param>
            <exception cref="T:System.NotImplementedException"></exception>
        </member>
        <member name="M:HttpServer.HttpParam.Contains(System.String)">
            <summary>
            Checks whether the form or querystring has the specified value
            </summary>
            <param name="name">Name, case sensitive</param>
            <returns>true if found; otherwise false.</returns>
        </member>
        <member name="M:HttpServer.HttpParam.System#Collections#Generic#IEnumerable{HttpServer#HttpInputItem}#GetEnumerator">
            <summary>
            Returns an enumerator that iterates through the collection.
            </summary>
            
            <returns>
            A <see cref="T:System.Collections.Generic.IEnumerator`1"></see> that can be used to iterate through the collection.
            </returns>
            <filterpriority>1</filterpriority>
        </member>
        <member name="M:HttpServer.HttpParam.GetEnumerator">
            <summary>
            Returns an enumerator that iterates through a collection.
            </summary>
            
            <returns>
            An <see cref="T:System.Collections.IEnumerator"></see> object that can be used to iterate through the collection.
            </returns>
            <filterpriority>2</filterpriority>
        </member>
        <member name="P:HttpServer.HttpParam.Item(System.String)">
            <summary>
            Fetch an item from the form or querystring (in that order).
            </summary>
            <param name="name"></param>
            <returns>Item if found; otherwise HttpInputItem.EmptyLanguageNode</returns>
        </member>
        <member name="T:HttpServer.HttpFile">
            <summary>
            Container class for posted files
            </summary>
        </member>
        <member name="M:HttpServer.HttpFile.#ctor(System.String,System.String,System.String,System.String)">
            <summary>
            Creates a container for a posted file
            </summary>
            <param name="name">The identifier of the post field</param>
            <param name="filename">The file path</param>
            <param name="contentType">The content type of the file</param>
            <param name="uploadFilename">The name of the file uploaded</param>
            <exception cref="T:System.ArgumentNullException">If any parameter is null or empty</exception>
        </member>
        <member name="M:HttpServer.HttpFile.#ctor(System.String,System.String,System.String)">
            <summary>
            Creates a container for a posted file <see cref="M:HttpServer.HttpFile.#ctor(System.String,System.String,System.String,System.String)"/>
            </summary>
            <exception cref="T:System.ArgumentNullException">If any parameter is null or empty</exception>
        </member>
        <member name="M:HttpServer.HttpFile.Finalize">
            <summary>Destructor disposing the file</summary>
        </member>
        <member name="M:HttpServer.HttpFile.Dispose(System.Boolean)">
            <summary>
            Deletes the temporary file
            </summary>
            <param name="disposing">True if manual dispose</param>
        </member>
        <member name="M:HttpServer.HttpFile.Dispose">
            <summary>
            Disposing interface, cleans up managed resources (the temporary file) and suppresses finalization
            </summary>
        </member>
        <member name="P:HttpServer.HttpFile.Name">
            <summary>
            The name/id of the file
            </summary>
        </member>
        <member name="P:HttpServer.HttpFile.Filename">
            <summary>
            The full file path
            </summary>
        </member>
        <member name="P:HttpServer.HttpFile.UploadFilename">
            <summary>
            The name of the uploaded file
            </summary>
        </member>
        <member name="P:HttpServer.HttpFile.ContentType">
            <summary>
            The type of file
            </summary>
        </member>
        <member name="T:HttpServer.FormDecoders.XmlDecoder">
            <summary>
            This decoder converts XML documents to form items.
            Each element becomes a subitem in the form, and each attribute becomes an item.
            </summary>
            <example>
            // xml: <hello id="1">something<world id="2">data</world></hello>
            // result: 
            // form["hello"].Value = "something"
            // form["hello"]["id"].Value = 1
            // form["hello"]["world]["id"].Value = 1
            // form["hello"]["world"].Value = "data"
            </example>
            <remarks>
            The original xml document is stored in form["__xml__"].Value.
            </remarks>
        </member>
        <member name="T:HttpServer.FormDecoders.IFormDecoder">
            <summary>
            Interface for form content decoders.
            </summary>
        </member>
        <member name="M:HttpServer.FormDecoders.IFormDecoder.Decode(System.IO.Stream,System.String,System.Text.Encoding)">
            <summary>
            
            </summary>
            <param name="stream">Stream containing the content</param>
            <param name="contentType">Content type (with any additional info like boundry). Content type is always supplied in lower case</param>
            <param name="encoding">Stream enconding</param>
            <returns>A http form, or null if content could not be parsed.</returns>
            <exception cref="T:System.IO.InvalidDataException">If contents in the stream is not valid input data.</exception>
        </member>
        <member name="M:HttpServer.FormDecoders.IFormDecoder.CanParse(System.String)">
            <summary>
            Checks if the decoder can handle the mime type
            </summary>
            <param name="contentType">Content type (with any additional info like boundry). Content type is always supplied in lower case.</param>
            <returns>True if the decoder can parse the specified content type</returns>
        </member>
        <member name="M:HttpServer.FormDecoders.XmlDecoder.Decode(System.IO.Stream,System.String,System.Text.Encoding)">
            <summary>
            
            </summary>
            <param name="stream">Stream containing the content</param>
            <param name="contentType">Content type (with any additional info like boundry). Content type is always supplied in lower case</param>
            <param name="encoding">Stream encoding</param>
            Note: contentType and encoding are not used?
            <returns>A http form, or null if content could not be parsed.</returns>
            <exception cref="T:System.IO.InvalidDataException"></exception>
        </member>
        <member name="M:HttpServer.FormDecoders.XmlDecoder.TraverseNode(HttpServer.IHttpInput,System.Xml.XmlNode)">
            <summary>
            Recursive function that will go through an xml element and store it's content 
            to the form item.
            </summary>
            <param name="item">(parent) Item in form that content should be added to.</param>
            <param name="node">Node that should be parsed.</param>
        </member>
        <member name="M:HttpServer.FormDecoders.XmlDecoder.CanParse(System.String)">
            <summary>
            Checks if the decoder can handle the mime type
            </summary>
            <param name="contentType">Content type (with any additional info like boundry). Content type is always supplied in lower case.</param>
            <returns>True if the decoder can parse the specified content type</returns>
        </member>
        <member name="T:HttpServer.Helpers.ObjectForm">
            <summary>
            The object form class takes an object and creates form items for it.
            </summary>
        </member>
        <member name="M:HttpServer.Helpers.ObjectForm.#ctor(System.String,System.String,System.Object,System.String)">
            <summary>
            Initializes a new instance of the <see cref="T:HttpServer.Helpers.ObjectForm"/> class.
            </summary>
            <param name="method"></param>
            <param name="name">form name *and* id.</param>
            <param name="action">action to do when form is posted.</param>
            <param name="obj"></param>
        </member>
        <member name="M:HttpServer.Helpers.ObjectForm.#ctor(System.String,System.String,System.Object)">
            <summary>
            Initializes a new instance of the <see cref="T:HttpServer.Helpers.ObjectForm"/> class.
            </summary>
            <param name="name">form name *and* id.</param>
            <param name="action">action to do when form is posted.</param>
            <param name="obj">object to get values from</param>
        </member>
        <member name="M:HttpServer.Helpers.ObjectForm.#ctor(System.String,System.Object)">
            <summary>
            Initializes a new instance of the <see cref="T:HttpServer.Helpers.ObjectForm"/> class.
            </summary>
            <param name="action">form action.</param>
            <param name="obj">object to get values from.</param>
        </member>
        <member name="M:HttpServer.Helpers.ObjectForm.Begin">
            <summary>
            write out the FORM-tag.
            </summary>
            <returns>generated html code</returns>
        </member>
        <member name="M:HttpServer.Helpers.ObjectForm.Begin(System.Boolean)">
            <summary>
            Writeout the form tag
            </summary>
            <param name="isAjax">form should be posted through ajax.</param>
            <returns>generated html code</returns>
        </member>
        <member name="M:HttpServer.Helpers.ObjectForm.Tb(System.String,System.Object[])">
            <summary>
            Generates a text box.
            </summary>
            <param name="propertyName"></param>
            <param name="options"></param>
            <returns>generated html code</returns>
        </member>
        <member name="M:HttpServer.Helpers.ObjectForm.Pb(System.String,System.Object[])">
            <summary>
            password box
            </summary>
            <param name="propertyName"></param>
            <param name="options"></param>
            <returns>generated html code</returns>
        </member>
        <member name="M:HttpServer.Helpers.ObjectForm.Hidden(System.String,System.Object[])">
            <summary>
            Hiddens the specified property name.
            </summary>
            <param name="propertyName">Name of the property.</param>
            <param name="options">The options.</param>
            <returns>generated html code</returns>
        </member>
        <member name="M:HttpServer.Helpers.ObjectForm.Label(System.String,System.String)">
            <summary>
            Labels the specified property name.
            </summary>
            <param name="propertyName">property in object.</param>
            <param name="label">caption</param>
            <returns>generated html code</returns>
        </member>
        <member name="M:HttpServer.Helpers.ObjectForm.Cb(System.String,System.String,System.Object[])">
            <summary>
            Generate a checkbox
            </summary>
            <param name="propertyName">property in object</param>
            <param name="value">checkbox value</param>
            <param name="options">additional html attributes.</param>
            <returns>generated html code</returns>
        </member>
        <member name="M:HttpServer.Helpers.ObjectForm.Select(System.String,System.String,System.String,System.Object[])">
            <summary>
            Write a html select tag
            </summary>
            <param name="propertyName">object property.</param>
            <param name="idColumn">id column</param>
            <param name="titleColumn">The title column.</param>
            <param name="options">The options.</param>
            <returns></returns>
        </member>
        <member name="M:HttpServer.Helpers.ObjectForm.Select(System.String,System.Collections.IEnumerable,System.String,System.String,System.Object[])">
            <summary>
            Selects the specified property name.
            </summary>
            <param name="propertyName">Name of the property.</param>
            <param name="items">The items.</param>
            <param name="idColumn">The id column.</param>
            <param name="titleColumn">The title column.</param>
            <param name="options">The options.</param>
            <returns></returns>
        </member>
        <member name="M:HttpServer.Helpers.ObjectForm.Submit(System.String)">
            <summary>
            Write a submit tag.
            </summary>
            <param name="value">button caption</param>
            <returns>html submit tag</returns>
        </member>
        <member name="M:HttpServer.Helpers.ObjectForm.End">
            <summary>
            html end form tag
            </summary>
            <returns>html</returns>
        </member>
        <member name="T:HttpServer.FormDecoders.MultipartDecoder">
            <summary>
            
            </summary>
            <remarks>
            http://www.faqs.org/rfcs/rfc1867.html
            </remarks>
        </member>
        <member name="F:HttpServer.FormDecoders.MultipartDecoder.MimeType">
            <summary>
            multipart/form-data
            </summary>
        </member>
        <member name="F:HttpServer.FormDecoders.MultipartDecoder.FormData">
            <summary>
            form-data
            </summary>
        </member>
        <member name="M:HttpServer.FormDecoders.MultipartDecoder.Decode(System.IO.Stream,System.String,System.Text.Encoding)">
            <summary>
            
            </summary>
            <param name="stream">Stream containing the content</param>
            <param name="contentType">Content type (with any additional info like boundry). Content type is always supplied in lower case</param>
            <param name="encoding">Stream enconding</param>
            <returns>A http form, or null if content could not be parsed.</returns>
            <exception cref="T:System.IO.InvalidDataException">If contents in the stream is not valid input data.</exception>
            <exception cref="T:System.ArgumentNullException">If any parameter is null</exception>
        </member>
        <member name="M:HttpServer.FormDecoders.MultipartDecoder.CanParse(System.String)">
            <summary>
            Checks if the decoder can handle the mime type
            </summary>
            <param name="contentType">Content type (with any additional info like boundry). Content type is always supplied in lower case.</param>
            <returns>True if the decoder can parse the specified content type</returns>
        </member>
        <member name="T:HttpServer.Exceptions.BadRequestException">
            <summary>
            The request could not be understood by the server due to malformed syntax. 
            The client SHOULD NOT repeat the request without modifications.
            
            Text taken from: http://www.submissionchamber.com/help-guides/error-codes.php
            </summary>
        </member>
        <member name="M:HttpServer.Exceptions.BadRequestException.#ctor(System.String)">
            <summary>
            Create a new bad request exception.
            </summary>
            <param name="errMsg">reason to why the request was bad.</param>
        </member>
        <member name="M:HttpServer.Exceptions.BadRequestException.#ctor(System.String,System.Exception)">
            <summary>
            Create a new bad request exception.
            </summary>
            <param name="errMsg">reason to why the request was bad.</param>
            <param name="inner">inner exception</param>
        </member>
        <member name="T:HttpServer.ResponseCookies">
            <summary>
            Cookies that should be set.
            </summary>
        </member>
        <member name="M:HttpServer.ResponseCookies.Add(HttpServer.ResponseCookie)">
            <summary>
            Adds a cookie in the collection.
            </summary>
            <param name="cookie">cookie to add</param>
            <exception cref="T:System.ArgumentNullException">cookie is null</exception>
        </member>
        <member name="M:HttpServer.ResponseCookies.Add(HttpServer.RequestCookie,System.DateTime)">
            <summary>
            Copy a request cookie
            </summary>
            <param name="cookie"></param>
            <param name="expires">When the cookie should expire</param>
        </member>
        <member name="M:HttpServer.ResponseCookies.GetEnumerator">
            <summary>
            Gets a collection enumerator on the cookie list.
            </summary>
            <returns>collection enumerator</returns>
        </member>
        <member name="M:HttpServer.ResponseCookies.Clear">
            <summary>
            Remove all cookies
            </summary>
        </member>
        <member name="M:HttpServer.ResponseCookies.System#Collections#Generic#IEnumerable{HttpServer#ResponseCookie}#GetEnumerator">
            <summary>
            Returns an enumerator that iterates through the collection.
            </summary>
            
            <returns>
            A <see cref="T:System.Collections.Generic.IEnumerator`1"></see> that can be used to iterate through the collection.
            </returns>
            <filterpriority>1</filterpriority>
        </member>
        <member name="P:HttpServer.ResponseCookies.Count">
            <summary>
            Gets the count of cookies in the collection.
            </summary>
        </member>
        <member name="P:HttpServer.ResponseCookies.Item(System.String)">
            <summary>
            Gets the cookie of a given identifier (null if not existing).
            </summary>
        </member>
        <member name="T:HttpServer.ResponseCookie">
            <summary>
            cookie being sent back to the browser.
            </summary>
            <seealso cref="T:HttpServer.ResponseCookie"/>
        </member>
        <member name="T:HttpServer.RequestCookie">
            <summary>
            cookie sent by the client/browser
            </summary>
            <seealso cref="T:HttpServer.ResponseCookie"/>
        </member>
        <member name="M:HttpServer.RequestCookie.#ctor(System.String,System.String)">
            <summary>
            Constructor.
            </summary>
            <param name="id">cookie identifier</param>
            <param name="content">cookie content</param>
            <exception cref="T:System.ArgumentNullException">id or content is null</exception>
            <exception cref="T:System.ArgumentException">id is empty</exception>
        </member>
        <member name="M:HttpServer.RequestCookie.ToString">
            <summary>
            Gets the cookie HTML representation.
            </summary>
            <returns>cookie string</returns>
        </member>
        <member name="P:HttpServer.RequestCookie.Name">
            <summary>
            Gets the cookie identifier.
            </summary>
        </member>
        <member name="P:HttpServer.RequestCookie.Value">
            <summary>
            Cookie value. Set to null to remove cookie.
            </summary>
        </member>
        <member name="M:HttpServer.ResponseCookie.#ctor(System.String,System.String,System.DateTime)">
            <summary>
            Constructor.
            </summary>
            <param name="id">cookie identifier</param>
            <param name="content">cookie content</param>
            <param name="expiresAt">cookie expiration date. Use DateTime.MinValue for session cookie.</param>
            <exception cref="T:System.ArgumentNullException">id or content is null</exception>
            <exception cref="T:System.ArgumentException">id is empty</exception>
        </member>
        <member name="M:HttpServer.ResponseCookie.#ctor(System.String,System.String,System.DateTime,System.String,System.String)">
            <summary>
            Create a new cookie
            </summary>
            <param name="name">name identifying the cookie</param>
            <param name="value">cookie value</param>
            <param name="expires">when the cookie expires. Setting DateTime.MinValue will delete the cookie when the session is closed.</param>
            <param name="path">Path to where the cookie is valid</param>
            <param name="domain">Domain that the cookie is valid for.</param>
        </member>
        <member name="M:HttpServer.ResponseCookie.#ctor(HttpServer.RequestCookie,System.DateTime)">
            <summary>
            Create a new cookie
            </summary>
            <param name="cookie">Name and value will be used</param>
            <param name="expires">when the cookie expires.</param>
        </member>
        <member name="M:HttpServer.ResponseCookie.ToString">
            <summary>
            Gets the cookie HTML representation.
            </summary>
            <returns>cookie string</returns>
        </member>
        <member name="P:HttpServer.ResponseCookie.Expires">
            <summary>
            When the cookie expires.
            DateTime.MinValue means that the cookie expires when the session do so.
            </summary>
        </member>
        <member name="P:HttpServer.ResponseCookie.Path">
            <summary>
            Cookie is only valid under this path.
            </summary>
        </member>
        <member name="T:HttpServer.IComponentProvider">
            <summary>
            Inversion of control interface.
            </summary>
        </member>
        <member name="M:HttpServer.IComponentProvider.AddInstance``1(System.Object)">
            <summary>
            Add a component instance
            </summary>
            <typeparam name="T">Interface type</typeparam>
            <param name="instance">Instance to add</param>
        </member>
        <member name="M:HttpServer.IComponentProvider.Get``1">
            <summary>
            Get a component.
            </summary>
            <typeparam name="T">Interface type</typeparam>
            <returns>Component if registered, otherwise null.</returns>
            <remarks>
            Component will get created if needed.
            </remarks>
        </member>
        <member name="M:HttpServer.IComponentProvider.Contains(System.Type)">
            <summary>
            Checks if the specified component interface have been added.
            </summary>
            <param name="interfaceType"></param>
            <returns>true if found; otherwise false.</returns>
        </member>
        <member name="M:HttpServer.IComponentProvider.Add``2">
            <summary>
            Add a component.
            </summary>
            <typeparam name="InterfaceType">Type being requested.</typeparam>
            <typeparam name="InstanceType">Type being created.</typeparam>
        </member>
        <member name="T:HttpServer.HttpListenerBase">
            <summary>
            Contains a listener that doesn't do anything with the connections.
            </summary>
        </member>
        <member name="M:HttpServer.HttpListenerBase.#ctor(System.Net.IPAddress,System.Int32,HttpServer.IHttpContextFactory)">
            <summary>
            Listen for regular HTTP connections
            </summary>
            <param name="address">IP Address to accept connections on</param>
            <param name="port">TCP Port to listen on, default HTTP port is 80.</param>
            <param name="factory">Factory used to create <see cref="T:HttpServer.IHttpClientContext"/>es.</param>
            <exception cref="T:System.ArgumentNullException"><c>address</c> is null.</exception>
            <exception cref="T:System.ArgumentException">Port must be a positive number.</exception>
        </member>
        <member name="M:HttpServer.HttpListenerBase.#ctor(System.Net.IPAddress,System.Int32,HttpServer.IHttpContextFactory,System.Security.Cryptography.X509Certificates.X509Certificate)">
            <summary>
            Initializes a new instance of the <see cref="T:HttpServer.HttpListenerBase"/> class.
            </summary>
            <param name="address">IP Address to accept connections on</param>
            <param name="port">TCP Port to listen on, default HTTPS port is 443</param>
            <param name="factory">Factory used to create <see cref="T:HttpServer.IHttpClientContext"/>es.</param>
            <param name="certificate">Certificate to use</param>
        </member>
        <member name="M:HttpServer.HttpListenerBase.#ctor(System.Net.IPAddress,System.Int32,HttpServer.IHttpContextFactory,System.Security.Cryptography.X509Certificates.X509Certificate,System.Security.Authentication.SslProtocols)">
            <summary>
            Initializes a new instance of the <see cref="T:HttpServer.HttpListenerBase"/> class.
            </summary>
            <param name="address">IP Address to accept connections on</param>
            <param name="port">TCP Port to listen on, default HTTPS port is 443</param>
            <param name="factory">Factory used to create <see cref="T:HttpServer.IHttpClientContext"/>es.</param>
            <param name="certificate">Certificate to use</param>
            <param name="protocol">which HTTPS protocol to use, default is TLS.</param>
        </member>
        <member name="M:HttpServer.HttpListenerBase.OnAccept(System.IAsyncResult)">
            <exception cref="T:System.Exception"><c>Exception</c>.</exception>
        </member>
        <member name="M:HttpServer.HttpListenerBase.RetryBeginAccept">
            <summary>
            Will try to accept connections one more time.
            </summary>
            <exception cref="T:System.Exception">If any exceptions is thrown.</exception>
        </member>
        <member name="M:HttpServer.HttpListenerBase.OnAcceptingSocket(System.Net.Sockets.Socket)">
            <summary>
            Can be used to create filtering of new connections.
            </summary>
            <param name="socket">Accepted socket</param>
            <returns>true if connection can be accepted; otherwise false.</returns>
        </member>
        <member name="M:HttpServer.HttpListenerBase.Start(System.Int32)">
            <summary>
            Start listen for new connections
            </summary>
            <param name="backlog">Number of connections that can stand in a queue to be accepted.</param>
            <exception cref="T:System.InvalidOperationException">Listener have already been started.</exception>
        </member>
        <member name="M:HttpServer.HttpListenerBase.Stop">
            <summary>
            Stop the listener
            </summary>
            <exception cref="T:System.Net.Sockets.SocketException"></exception>
        </member>
        <member name="P:HttpServer.HttpListenerBase.LogWriter">
            <summary>
            Gives you a change to receive log entries for all internals of the HTTP library.
            </summary>
            <remarks>
            You may not switch log writer after starting the listener.
            </remarks>
        </member>
        <member name="P:HttpServer.HttpListenerBase.UseTraceLogs">
            <summary>
            True if we should turn on trace logs.
            </summary>
        </member>
        <member name="E:HttpServer.HttpListenerBase.ExceptionThrown">
            <summary>
            Catch exceptions not handled by the listener.
            </summary>
            <remarks>
            Exceptions will be thrown during debug mode if this event is not used,
            exceptions will be printed to console and suppressed during release mode.
            </remarks>
        </member>
        <member name="E:HttpServer.HttpListenerBase.RequestReceived">
            <summary>
            A request have been received from a <see cref="T:HttpServer.IHttpClientContext"/>.
            </summary>
        </member>
        <member name="T:HttpServer.HttpListener">
            <summary>
            New implementation of the HTTP listener.
            </summary>
            <remarks>
            Use the <c>Create</c> methods to create a default listener.
            </remarks>
        </member>
        <member name="M:HttpServer.HttpListener.#ctor(System.Net.IPAddress,System.Int32,HttpServer.IHttpContextFactory)">
            <summary>
            Initializes a new instance of the <see cref="T:HttpServer.HttpListener"/> class.
            </summary>
            <param name="address">IP Address to accept connections on</param>
            <param name="port">TCP Port to listen on, default HTTP port is 80.</param>
            <param name="factory">Factory used to create <see cref="T:HttpServer.IHttpClientContext"/>es.</param>
            <exception cref="T:System.ArgumentNullException"><c>address</c> is null.</exception>
            <exception cref="T:System.ArgumentException">Port must be a positive number.</exception>
        </member>
        <member name="M:HttpServer.HttpListener.#ctor(System.Net.IPAddress,System.Int32,HttpServer.IHttpContextFactory,System.Security.Cryptography.X509Certificates.X509Certificate)">
            <summary>
            Initializes a new instance of the <see cref="T:HttpServer.HttpListener"/> class.
            </summary>
            <param name="address">The address.</param>
            <param name="port">The port.</param>
            <param name="factory">The factory.</param>
            <param name="certificate">The certificate.</param>
        </member>
        <member name="M:HttpServer.HttpListener.#ctor(System.Net.IPAddress,System.Int32,HttpServer.IHttpContextFactory,System.Security.Cryptography.X509Certificates.X509Certificate,System.Security.Authentication.SslProtocols)">
            <summary>
            Initializes a new instance of the <see cref="T:HttpServer.HttpListener"/> class.
            </summary>
            <param name="address">The address.</param>
            <param name="port">The port.</param>
            <param name="factory">The factory.</param>
            <param name="certificate">The certificate.</param>
            <param name="protocol">The protocol.</param>
        </member>
        <member name="M:HttpServer.HttpListener.Create(System.Net.IPAddress,System.Int32)">
            <summary>
            Creates a new <see cref="T:HttpServer.HttpListener"/> instance with default factories.
            </summary>
            <param name="address">Address that the listener should accept connections on.</param>
            <param name="port">Port that listener should accept connections on.</param>
            <returns>Created HTTP listener.</returns>
        </member>
        <member name="M:HttpServer.HttpListener.Create(System.Net.IPAddress,System.Int32,System.Security.Cryptography.X509Certificates.X509Certificate)">
            <summary>
            Creates a new <see cref="T:HttpServer.HttpListener"/> instance with default factories.
            </summary>
            <param name="address">Address that the listener should accept connections on.</param>
            <param name="port">Port that listener should accept connections on.</param>
            <param name="certificate">Certificate to use</param>
            <returns>Created HTTP listener.</returns>
        </member>
        <member name="M:HttpServer.HttpListener.Create(System.Net.IPAddress,System.Int32,System.Security.Cryptography.X509Certificates.X509Certificate,System.Security.Authentication.SslProtocols)">
            <summary>
            Creates a new <see cref="T:HttpServer.HttpListener"/> instance with default factories.
            </summary>
            <param name="address">Address that the listener should accept connections on.</param>
            <param name="port">Port that listener should accept connections on.</param>
            <param name="certificate">Certificate to use</param>
            <param name="protocol">which HTTPS protocol to use, default is TLS.</param>
            <returns>Created HTTP listener.</returns>
        </member>
        <member name="M:HttpServer.HttpListener.OnAcceptingSocket(System.Net.Sockets.Socket)">
            <summary>
            Can be used to create filtering of new connections.
            </summary>
            <param name="socket">Accepted socket</param>
            <returns>
            true if connection can be accepted; otherwise false.
            </returns>
        </member>
        <member name="E:HttpServer.HttpListener.Accepted">
            <summary>
            A client have been accepted, but not handled, by the listener.
            </summary>
        </member>
        <member name="T:HttpServer.Rules.RedirectRule">
            <summary>
            redirects from one URL to another.
            </summary>
        </member>
        <member name="T:HttpServer.Rules.IRule">
            <summary>
            Rules are used to perform operations before a request is being handled.
            Rules can be used to create routing etc.
            </summary>
        </member>
        <member name="M:HttpServer.Rules.IRule.Process(HttpServer.IHttpRequest,HttpServer.IHttpResponse)">
            <summary>
            Process the incoming request.
            </summary>
            <param name="request">incoming HTTP request</param>
            <param name="response">outgoing HTTP response</param>
            <returns>true if response should be sent to the browser directly (no other rules or modules will be processed).</returns>
            <remarks>
            returning true means that no modules will get the request. Returning true is typically being done
            for redirects.
            </remarks>
            <exception cref="T:System.ArgumentNullException">If request or response is null.</exception>
        </member>
        <member name="M:HttpServer.Rules.RedirectRule.#ctor(System.String,System.String)">
            <summary>
            Initializes a new instance of the <see cref="T:HttpServer.Rules.RedirectRule"/> class.
            </summary>
            <param name="fromUrl">Absolute path (no server name)</param>
            <param name="toUrl">Absolute path (no server name)</param>
            <example>
            server.Add(new RedirectRule("/", "/user/index"));
            </example>
        </member>
        <member name="M:HttpServer.Rules.RedirectRule.#ctor(System.String,System.String,System.Boolean)">
            <summary>
            Initializes a new instance of the <see cref="T:HttpServer.Rules.RedirectRule"/> class.
            </summary>
            <param name="fromUrl">Absolute path (no server name)</param>
            <param name="toUrl">Absolute path (no server name)</param>
            <param name="shouldRedirect">true if request should be redirected, false if the request URI should be replaced.</param>
            <example>
            server.Add(new RedirectRule("/", "/user/index"));
            </example>
        </member>
        <member name="M:HttpServer.Rules.RedirectRule.Process(HttpServer.IHttpRequest,HttpServer.IHttpResponse)">
            <summary>
            Process the incoming request.
            </summary>
            <param name="request">incoming HTTP request</param>
            <param name="response">outgoing HTTP response</param>
            <returns>true if response should be sent to the browser directly (no other rules or modules will be processed).</returns>
            <remarks>
            returning true means that no modules will get the request. Returning true is typically being done
            for redirects.
            </remarks>
        </member>
        <member name="P:HttpServer.Rules.RedirectRule.FromUrl">
            <summary>
            Gets string to match request URI with.
            </summary>
            <remarks>Is compared to request.Uri.AbsolutePath</remarks>
        </member>
        <member name="P:HttpServer.Rules.RedirectRule.ToUrl">
            <summary>
            Gets where to redirect.
            </summary>
        </member>
        <member name="P:HttpServer.Rules.RedirectRule.ShouldRedirect">
            <summary>
            Gets whether server should redirect client.
            </summary>
            <remarks>
            <c>false</c> means that the rule will replace
            the current request URI with the new one from this class.
            <c>true</c> means that a redirect response is sent to the client.
            </remarks>
        </member>
        <member name="T:HttpServer.Parser.HttpRequestParser">
            <summary>
            Parses a HTTP request directly from a stream
            </summary>
        </member>
        <member name="T:HttpServer.IHttpRequestParser">
            <summary>
            Event driven parser used to parse incoming HTTP requests.
            </summary>
            <remarks>
            The parser supports partial messages and keeps the states between
            each parsed buffer. It's therefore important that the parser gets
            <see cref="M:HttpServer.IHttpRequestParser.Clear"/>ed if a client disconnects.
            </remarks>
        </member>
        <member name="M:HttpServer.IHttpRequestParser.Parse(System.Byte[],System.Int32,System.Int32)">
            <summary>
            Parse partial or complete message.
            </summary>
            <param name="buffer">buffer containing incoming bytes</param>
            <param name="offset">where in buffer that parsing should start</param>
            <param name="count">number of bytes to parse</param>
            <returns>Unparsed bytes left in buffer.</returns>
            <exception cref="T:HttpServer.Exceptions.BadRequestException"><c>BadRequestException</c>.</exception>
        </member>
        <member name="M:HttpServer.IHttpRequestParser.Clear">
            <summary>
            Clear parser state.
            </summary>
        </member>
        <member name="P:HttpServer.IHttpRequestParser.CurrentState">
            <summary>
            Current state in parser.
            </summary>
        </member>
        <member name="E:HttpServer.IHttpRequestParser.RequestCompleted">
            <summary>
            A request have been successfully parsed.
            </summary>
        </member>
        <member name="E:HttpServer.IHttpRequestParser.BodyBytesReceived">
            <summary>
            More body bytes have been received.
            </summary>
        </member>
        <member name="E:HttpServer.IHttpRequestParser.RequestLineReceived">
            <summary>
            Request line have been received.
            </summary>
        </member>
        <member name="E:HttpServer.IHttpRequestParser.HeaderReceived">
            <summary>
            A header have been received.
            </summary>
        </member>
        <member name="P:HttpServer.IHttpRequestParser.LogWriter">
            <summary>
            Gets or sets the log writer.
            </summary>
        </member>
        <member name="M:HttpServer.Parser.HttpRequestParser.#ctor(HttpServer.ILogWriter)">
            <summary>
            Create a new request parser
            </summary>
            <param name="logWriter">delegate receiving log entries.</param>
        </member>
        <member name="M:HttpServer.Parser.HttpRequestParser.AddToBody(System.Byte[],System.Int32,System.Int32)">
            <summary>
            Add a number of bytes to the body
            </summary>
            <param name="buffer">buffer containing more body bytes.</param>
            <param name="offset">starting offset in buffer</param>
            <param name="count">number of bytes, from offset, to read.</param>
            <returns>offset to continue from.</returns>
        </member>
        <member name="M:HttpServer.Parser.HttpRequestParser.Clear">
            <summary>
            Remove all state information for the request.
            </summary>
        </member>
        <member name="M:HttpServer.Parser.HttpRequestParser.OnFirstLine(System.String)">
            <summary>
            Parse request line
            </summary>
            <param name="value"></param>
            <exception cref="T:HttpServer.Exceptions.BadRequestException">If line is incorrect</exception>
            <remarks>Expects the following format: "Method SP Request-URI SP HTTP-Version CRLF"</remarks>
        </member>
        <member name="M:HttpServer.Parser.HttpRequestParser.OnHeader(System.String,System.String)">
            <summary>
            We've parsed a new header.
            </summary>
            <param name="name">Name in lower case</param>
            <param name="value">Value, unmodified.</param>
            <exception cref="T:HttpServer.Exceptions.BadRequestException">If content length cannot be parsed.</exception>
        </member>
        <member name="M:HttpServer.Parser.HttpRequestParser.Parse(System.Byte[],System.Int32,System.Int32)">
            <summary>
            Parse a message
            </summary>
            <param name="buffer">bytes to parse.</param>
            <param name="offset">where in buffer that parsing should start</param>
            <param name="count">number of bytes to parse, starting on <paramref name="offset"/>.</param>
            <returns>offset (where to start parsing next).</returns>
            <exception cref="T:HttpServer.Exceptions.BadRequestException"><c>BadRequestException</c>.</exception>
        </member>
        <member name="P:HttpServer.Parser.HttpRequestParser.LogWriter">
            <summary>
            Gets or sets the log writer.
            </summary>
        </member>
        <member name="P:HttpServer.Parser.HttpRequestParser.CurrentState">
            <summary>
            Current state in parser.
            </summary>
        </member>
        <member name="E:HttpServer.Parser.HttpRequestParser.RequestCompleted">
            <summary>
            A request have been successfully parsed.
            </summary>
        </member>
        <member name="E:HttpServer.Parser.HttpRequestParser.BodyBytesReceived">
            <summary>
            More body bytes have been received.
            </summary>
        </member>
        <member name="E:HttpServer.Parser.HttpRequestParser.RequestLineReceived">
            <summary>
            Request line have been received.
            </summary>
        </member>
        <member name="E:HttpServer.Parser.HttpRequestParser.HeaderReceived">
            <summary>
            A header have been received.
            </summary>
        </member>
        <member name="T:HttpServer.LocklessQueue`1">
            <summary>
            A thread-safe lockless queue that supports multiple readers and 
            multiple writers
            </summary>
        </member>
        <member name="F:HttpServer.LocklessQueue`1.head">
            <summary>Queue head</summary>
        </member>
        <member name="F:HttpServer.LocklessQueue`1.tail">
            <summary>Queue tail</summary>
        </member>
        <member name="F:HttpServer.LocklessQueue`1.count">
            <summary>Queue item count</summary>
        </member>
        <member name="M:HttpServer.LocklessQueue`1.#ctor">
            <summary>
            Constructor
            </summary>
        </member>
        <member name="M:HttpServer.LocklessQueue`1.Enqueue(`0)">
            <summary>
            Enqueue an item
            </summary>
            <param name="item">Item to enqeue</param>
        </member>
        <member name="M:HttpServer.LocklessQueue`1.TryDequeue(`0@)">
            <summary>
            Try to dequeue an item
            </summary>
            <param name="item">Dequeued item if the dequeue was successful</param>
            <returns>True if an item was successfully deqeued, otherwise false</returns>
        </member>
        <member name="P:HttpServer.LocklessQueue`1.Count">
            <summary>Gets the current number of items in the queue. Since this
            is a lockless collection this value should be treated as a close
            estimate</summary>
        </member>
        <member name="T:HttpServer.LocklessQueue`1.SingleLinkNode">
            <summary>
            Provides a node container for data in a singly linked list
            </summary>
        </member>
        <member name="F:HttpServer.LocklessQueue`1.SingleLinkNode.Next">
            <summary>Pointer to the next node in list</summary>
        </member>
        <member name="F:HttpServer.LocklessQueue`1.SingleLinkNode.Item">
            <summary>The data contained by the node</summary>
        </member>
        <member name="M:HttpServer.LocklessQueue`1.SingleLinkNode.#ctor">
            <summary>
            Constructor
            </summary>
        </member>
        <member name="M:HttpServer.LocklessQueue`1.SingleLinkNode.#ctor(`0)">
            <summary>
            Constructor
            </summary>
        </member>
        <member name="T:HttpServer.IHttpRequest">
            <summary>
            Contains server side HTTP request information.
            </summary>
        </member>
        <member name="M:HttpServer.IHttpRequest.AddHeader(System.String,System.String)">
            <summary>
            Called during parsing of a <see cref="T:HttpServer.IHttpRequest"/>.
            </summary>
            <param name="name">Name of the header, should not be URL encoded</param>
            <param name="value">Value of the header, should not be URL encoded</param>
            <exception cref="T:HttpServer.Exceptions.BadRequestException">If a header is incorrect.</exception>
        </member>
        <member name="M:HttpServer.IHttpRequest.AddToBody(System.Byte[],System.Int32,System.Int32)">
            <summary>
            Add bytes to the body
            </summary>
            <param name="bytes">buffer to read bytes from</param>
            <param name="offset">where to start read</param>
            <param name="length">number of bytes to read</param>
            <returns>Number of bytes actually read (same as length unless we got all body bytes).</returns>
            <exception cref="T:System.InvalidOperationException">If body is not writable</exception>
            <exception cref="T:System.ArgumentNullException"><c>bytes</c> is null.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><c>offset</c> is out of range.</exception>
        </member>
        <member name="M:HttpServer.IHttpRequest.Clear">
            <summary>
            Clear everything in the request
            </summary>
        </member>
        <member name="M:HttpServer.IHttpRequest.DecodeBody(HttpServer.FormDecoders.FormDecoderProvider)">
            <summary>
            Decode body into a form.
            </summary>
            <param name="providers">A list with form decoders.</param>
            <exception cref="T:System.IO.InvalidDataException">If body contents is not valid for the chosen decoder.</exception>
            <exception cref="T:System.InvalidOperationException">If body is still being transferred.</exception>
        </member>
        <member name="M:HttpServer.IHttpRequest.SetCookies(HttpServer.RequestCookies)">
            <summary>
            Sets the cookies.
            </summary>
            <param name="cookies">The cookies.</param>
        </member>
        <member name="M:HttpServer.IHttpRequest.CreateResponse(HttpServer.IHttpClientContext)">
            <summary>
            Create a response object.
            </summary>
            <param name="context">Context for the connected client.</param>
            <returns>A new <see cref="T:HttpServer.IHttpResponse"/>.</returns>
        </member>
        <member name="P:HttpServer.IHttpRequest.AcceptTypes">
            <summary>
            Gets kind of types accepted by the client.
            </summary>
        </member>
        <member name="P:HttpServer.IHttpRequest.Body">
            <summary>
            Gets or sets body stream.
            </summary>
        </member>
        <member name="P:HttpServer.IHttpRequest.BodyIsComplete">
            <summary>
            Gets whether the body is complete.
            </summary>
        </member>
        <member name="P:HttpServer.IHttpRequest.Connection">
            <summary>
            Gets or sets kind of connection used for the session.
            </summary>
        </member>
        <member name="P:HttpServer.IHttpRequest.ContentLength">
            <summary>
            Gets or sets number of bytes in the body.
            </summary>
        </member>
        <member name="P:HttpServer.IHttpRequest.Cookies">
            <summary>
            Gets cookies that was sent with the request.
            </summary>
        </member>
        <member name="P:HttpServer.IHttpRequest.Form">
            <summary>
            Gets form parameters.
            </summary>
        </member>
        <member name="P:HttpServer.IHttpRequest.Headers">
            <summary>
            Gets headers sent by the client.
            </summary>
        </member>
        <member name="P:HttpServer.IHttpRequest.HttpVersion">
            <summary>
            Gets or sets version of HTTP protocol that's used. 
            </summary>
            <remarks>
            Probably <see cref="F:HttpServer.HttpHelper.HTTP10"/> or <see cref="F:HttpServer.HttpHelper.HTTP11"/>.
            </remarks>
            <seealso cref="T:HttpServer.HttpHelper"/>
        </member>
        <member name="P:HttpServer.IHttpRequest.IsAjax">
            <summary>
            Gets whether the request was made by Ajax (Asynchronous JavaScript)
            </summary>
        </member>
        <member name="P:HttpServer.IHttpRequest.Method">
            <summary>
            Gets or sets requested method.
            </summary>
            <remarks>
            Will always be in upper case.
            </remarks>
            <see cref="P:HttpServer.IHttpRequest.Method"/>
        </member>
        <member name="P:HttpServer.IHttpRequest.Param">
            <summary>
            Gets parameter from <see cref="P:HttpServer.IHttpRequest.QueryString"/> or <see cref="P:HttpServer.IHttpRequest.Form"/>.
            </summary>
        </member>
        <member name="P:HttpServer.IHttpRequest.QueryString">
            <summary>
            Gets variables sent in the query string
            </summary>
        </member>
        <member name="P:HttpServer.IHttpRequest.Uri">
            <summary>
            Gets or sets requested URI.
            </summary>
        </member>
        <member name="P:HttpServer.IHttpRequest.UriParts">
            <summary>
            Gets URI absolute path divided into parts.
            </summary>
            <example>
            // URI is: http://gauffin.com/code/tiny/
            Console.WriteLine(request.UriParts[0]); // result: code
            Console.WriteLine(request.UriParts[1]); // result: tiny
            </example>
            <remarks>
            If you're using controllers than the first part is controller name,
            the second part is method name and the third part is Id property.
            </remarks>
            <seealso cref="P:HttpServer.IHttpRequest.Uri"/>
        </member>
        <member name="P:HttpServer.IHttpRequest.UriPath">
            <summary>
            Gets or sets path and query.
            </summary>
            <see cref="P:HttpServer.IHttpRequest.Uri"/>
            <remarks>
            Are only used during request parsing. Cannot be set after "Host" header have been
            added.
            </remarks>
        </member>
        <member name="T:HttpServer.Helpers.Implementations.PrototypeImp">
            <summary>
            PrototypeJS implementation of the javascript functions.
            </summary>
        </member>
        <member name="T:HttpServer.Helpers.JavascriptHelperImplementation">
            <summary>
            Purpose of this class is to create a javascript toolkit independent javascript helper.
            </summary>
        </member>
        <member name="M:HttpServer.Helpers.JavascriptHelperImplementation.GenerateOptions(System.Text.StringBuilder,System.String[],System.Boolean)">
            <summary>
            Generates a list with JS options.
            </summary>
            <param name="sb">StringBuilder that the options should be added to.</param>
            <param name="options">the javascript options. name, value pairs. each string value should be escaped by YOU!</param>
            <param name="startWithComma">true if we should start with a comma.</param>
        </member>
        <member name="M:HttpServer.Helpers.JavascriptHelperImplementation.RemoveJavascriptOptions(System.String[])">
            <summary>
            Removes any javascript parameters from an array of parameters
            </summary>
            <param name="options">The array of parameters to remove javascript params from</param>
            <returns>An array of html parameters</returns>
        </member>
        <member name="M:HttpServer.Helpers.JavascriptHelperImplementation.AjaxFormOnSubmit(System.String[])">
            <summary>
            javascript action that should be added to the "onsubmit" event in the form tag.
            </summary>
            <returns></returns>
            <remarks>All javascript option names should end with colon.</remarks>
            <example>
            <code>
            JSHelper.AjaxRequest("/user/show/1", "onsuccess:", "$('userInfo').update(result);");
            </code>
            </example>
        </member>
        <member name="M:HttpServer.Helpers.JavascriptHelperImplementation.AjaxRequest(System.String,System.String[])">
            <summary>
            Requests a url through ajax
            </summary>
            <param name="url">url to fetch</param>
            <param name="options">optional options in format "key, value, key, value", used in JS request object.</param>
            <returns>a link tag</returns>
            <remarks>All javascript option names should end with colon.</remarks>
            <example>
            <code>
            JSHelper.AjaxRequest("/user/show/1", "onsuccess:", "$('userInfo').update(result);");
            </code>
            </example>
        </member>
        <member name="M:HttpServer.Helpers.JavascriptHelperImplementation.AjaxUpdater(System.String,System.String,System.String[])">
            <summary>
            Ajax requests that updates an element with
            the fetched content
            </summary>
            <param name="url">Url to fetch content from</param>
            <param name="targetId">element to update</param>
            <param name="options">optional options in format "key, value, key, value", used in JS updater object.</param>
            <returns>A link tag.</returns>
            <remarks>All javascript option names should end with colon.</remarks>
            <example>
            <code>
            JSHelper.AjaxUpdater("/user/show/1", "userInfo", "onsuccess:", "alert('Successful!');");
            </code>
            </example>
        </member>
        <member name="M:HttpServer.Helpers.JavascriptHelperImplementation.DialogLink(System.String,System.String,System.String[])">
            <summary>
            A link that pop ups a Dialog (overlay div)
            </summary>
            <param name="url">url to contents of dialog</param>
            <param name="title">link title</param>
            <returns>A "a"-tag that popups a dialog when clicked</returns>
            <param name="htmlAttributes">name/value of html attributes</param>
            <example>
            WebHelper.DialogLink("/user/show/1", "show user", "onmouseover", "alert('booh!');");
            </example>
        </member>
        <member name="M:HttpServer.Helpers.JavascriptHelperImplementation.CloseDialog">
            <summary>
            Close a javascript dialog window/div.
            </summary>
            <returns>javascript for closing a dialog.</returns>
            <see cref="M:HttpServer.Helpers.JavascriptHelperImplementation.DialogLink(System.String,System.String,System.String[])"/>
        </member>
        <member name="M:HttpServer.Helpers.JavascriptHelperImplementation.CreateDialog(System.String,System.String,System.String[])">
            <summary>
            Creates a new modal dialog window
            </summary>
            <param name="url">url to open in window.</param>
            <param name="title">window title (may not be supported by all js implementations)</param>
            <param name="options"></param>
            <returns></returns>
        </member>
        <member name="M:HttpServer.Helpers.Implementations.PrototypeImp.AjaxRequest(System.String,System.String[])">
            <summary>
            Requests a url through ajax
            </summary>
            <param name="url">url to fetch. Url is NOT enclosed in quotes by the implementation. You need to do that yourself.</param>
            <param name="options">optional options in format "key, value, key, value", used in JS request object. All keys should end with colon.</param>
            <returns>a link tag</returns>
            <remarks>onclick attribute is used by this method.</remarks>
            <example>
            <code>
            // plain text
            JSHelper.AjaxRequest("'/user/show/1'");
            
            // ajax request using this.href
            string link = "&lt;a href=\"/user/call/1\" onclick=\"" + JSHelper.AjaxRequest("this.href") + "/&lt;call user&lt;/a&gt;";
            </code>
            </example>
        </member>
        <member name="M:HttpServer.Helpers.Implementations.PrototypeImp.Contains(System.Collections.Generic.IEnumerable{System.String},System.String)">
            <summary>
            Determins if a list of strings contains a specific value
            </summary>
            <param name="options">options to check in</param>
            <param name="value">value to find</param>
            <returns>true if value was found</returns>
            <remarks>case insensitive</remarks>
        </member>
        <member name="M:HttpServer.Helpers.Implementations.PrototypeImp.AjaxUpdater(System.String,System.String,System.String[])">
            <summary>
            Ajax requests that updates an element with
            the fetched content
            </summary>
            <param name="url">URL to fetch. URL is NOT enclosed in quotes by the implementation. You need to do that yourself.</param>
            <param name="targetId">element to update</param>
            <param name="options">options in format "key, value, key, value". All keys should end with colon.</param>
            <returns>A link tag.</returns>
            <example>
            <code>
            JSHelper.AjaxUpdater("'/user/show/1'", "user", "onsuccess:", "alert('hello');", "asynchronous:", "true");
            </code>
            </example>
        </member>
        <member name="M:HttpServer.Helpers.Implementations.PrototypeImp.DialogLink(System.String,System.String,System.String[])">
            <summary>
            A link that pop ups a Dialog (overlay div)
            </summary>
            <param name="url">URL to contents of dialog</param>
            <param name="title">link title</param>
            <param name="htmlAttributes">name, value, name, value</param>
            <returns>
            A "a"-tag that popups a dialog when clicked
            </returns>
            <remarks><para>Requires Control.Modal found here: http://livepipe.net/projects/control_modal/</para>
            And the following JavaScript (load it in application.js):
            <code>
            Event.observe(window, 'load',
              function() {
                document.getElementsByClassName('modal').each(function(link){  new Control.Modal(link);  });
              }
            );
            </code>
            </remarks>
            <example>
            WebHelper.DialogLink("/user/show/1", "show user", "onmouseover", "alert('booh!');");
            </example>
        </member>
        <member name="M:HttpServer.Helpers.Implementations.PrototypeImp.CreateDialog(System.String,System.String,System.String[])">
            <summary>
            create a modal dialog (usually using DIVs)
            </summary>
            <param name="url">url to fetch</param>
            <param name="title">dialog title</param>
            <param name="options">javascript/html attributes. javascript options ends with colon ':'.</param>
            <returns></returns>
        </member>
        <member name="M:HttpServer.Helpers.Implementations.PrototypeImp.CloseDialog">
            <summary>
            Close a javascript dialog window/div.
            </summary>
            <returns>javascript for closing a dialog.</returns>
            <see cref="M:HttpServer.Helpers.Implementations.PrototypeImp.DialogLink(System.String,System.String,System.String[])"/>
        </member>
        <member name="M:HttpServer.Helpers.Implementations.PrototypeImp.AjaxFormOnSubmit(System.String[])">
            <summary>
            javascript action that should be added to the "onsubmit" event in the form tag.
            </summary>
            <param name="options">remember to encapsulate strings in ''</param>
            <returns></returns>
            <remarks>All javascript option names should end with colon.</remarks>
            <example>
                <code>
            JSHelper.AjaxRequest("/user/show/1", "onsuccess:", "$('userInfo').update(result);");
            </code>
            </example>
        </member>
        <member name="T:HttpServer.Helpers.FormHelper">
            <summary>
            Helpers making it easier to work with forms.
            </summary>
            <seealso cref="T:HttpServer.Helpers.ObjectForm"/>
        </member>
        <member name="F:HttpServer.Helpers.FormHelper.JSImplementation">
            <summary>
            Used to let the website use different JavaScript libraries.
            Default is <see cref="T:HttpServer.Helpers.Implementations.PrototypeImp"/>
            </summary>
        </member>
        <member name="M:HttpServer.Helpers.FormHelper.Start(System.String,System.String,System.Boolean,System.String[])">
            <summary>
            Create a &lt;form&gt; tag.
            </summary>
            <param name="id">name of form</param>
            <param name="action">action to invoke on submit</param>
            <param name="isAjax">form should be posted as Ajax</param>
            <returns>HTML code</returns>
            <example>
            <code>
            // without options
            WebHelper.FormStart("frmLogin", "/user/login", Request.IsAjax);
            
            // with options
            WebHelper.FormStart("frmLogin", "/user/login", Request.IsAjax, "style", "display:inline", "class", "greenForm");
            </code>
            </example>
            <param name="options">HTML attributes or JavaScript options.</param>
            <remarks>Method will ALWAYS be POST.</remarks>
            <exception cref="T:System.ArgumentException">options must consist of name, value, name, value</exception>
        </member>
        <member name="M:HttpServer.Helpers.FormHelper.Select(System.String,System.Collections.IEnumerable,HttpServer.Helpers.GetIdTitle,System.Object,System.Boolean)">
            <summary>
            Creates a select list with the values in a collection.
            </summary>
            <param name="name">Name of the SELECT-tag</param>
            <param name="collection">collection used to generate options.</param>
            <param name="getIdTitle">delegate used to return id and title from objects.</param>
            <param name="selectedValue">value that should be marked as selected.</param>
            <param name="firstEmpty">First row should contain an empty value.</param>
            <returns>string containing a SELECT-tag.</returns>
            <seealso cref="T:HttpServer.Helpers.GetIdTitle"/>
        </member>
        <member name="M:HttpServer.Helpers.FormHelper.Select(System.String,System.String,System.Collections.IEnumerable,HttpServer.Helpers.GetIdTitle,System.Object,System.Boolean)">
            <summary>
            Creates a select list with the values in a collection.
            </summary>
            <param name="name">Name of the SELECT-tag</param>
            <param name="id">Id of the SELECT-tag</param>
            <param name="collection">collection used to generate options.</param>
            <param name="getIdTitle">delegate used to return id and title from objects.</param>
            <param name="selectedValue">value that should be marked as selected.</param>
            <param name="firstEmpty">First row should contain an empty value.</param>
            <returns>string containing a SELECT-tag.</returns>
            <seealso cref="T:HttpServer.Helpers.GetIdTitle"/>
            <example>
            <code>
            // Class that is going to be used in a SELECT-tag.
            public class User
            {
                private readonly string _realName;
                private readonly int _id;
                public User(int id, string realName)
                {
                    _id = id;
                    _realName = realName;
                }
                public string RealName
                {
                    get { return _realName; }
                }
            
                public int Id
                {
                    get { return _id; }
                }
            }
            
            // Using an inline delegate to generate the select list
            public void UserInlineDelegate()
            {
                List&lt;User&gt; items = new List&lt;User&gt;();
                items.Add(new User(1, "adam"));
                items.Add(new User(2, "bertial"));
                items.Add(new User(3, "david"));
                string htmlSelect = Select("users", "users", items, delegate(object o, out object id, out object value)
                                                                    {
                                                                        User user = (User)o;
                                                                        id = user.Id;
                                                                        value = user.RealName;
                                                                    }, 2, true);
            }
            
            // Using an method as delegate to generate the select list.
            public void UseExternalDelegate()
            {
                List&lt;User&gt; items = new List&lt;User&gt;();
                items.Add(new User(1, "adam"));
                items.Add(new User(2, "bertial"));
                items.Add(new User(3, "david"));
                string htmlSelect = Select("users", "users", items, UserOptions, 1, true);
            }
            
            // delegate returning id and title
            public static void UserOptions(object o, out object id, out object title)
            {
                User user = (User)o;
                id = user.Id;
                value = user.RealName;
            }
            </code>
            </example>
            <exception cref="T:System.ArgumentNullException"><c>name</c>, <c>id</c>, <c>collection</c> or <c>getIdTitle</c> is null.</exception>
        </member>
        <member name="M:HttpServer.Helpers.FormHelper.Select(System.String,System.String,System.Collections.IEnumerable,HttpServer.Helpers.GetIdTitle,System.Object,System.Boolean,System.String[])">
            <summary>
            Creates a select list with the values in a collection.
            </summary>
            <param name="name">Name of the SELECT-tag</param>
            <param name="id">Id of the SELECT-tag</param>
            <param name="collection">collection used to generate options.</param>
            <param name="getIdTitle">delegate used to return id and title from objects.</param>
            <param name="selectedValue">value that should be marked as selected.</param>
            <param name="firstEmpty">First row should contain an empty value.</param>
            <param name="htmlAttributes">name, value collection of extra HTML attributes.</param>
            <returns>string containing a SELECT-tag.</returns>
            <seealso cref="T:HttpServer.Helpers.GetIdTitle"/>
            <exception cref="T:System.ArgumentNullException"><c>name</c>, <c>id</c>, <c>collection</c> or <c>getIdTitle</c> is null.</exception>
            <exception cref="T:System.ArgumentException">Invalid HTML attribute list.</exception>
        </member>
        <member name="M:HttpServer.Helpers.FormHelper.Options(System.Collections.IEnumerable,HttpServer.Helpers.GetIdTitle,System.Object,System.Boolean)">
            <summary>
            Generate a list of HTML options
            </summary>
            <param name="collection">collection used to generate options.</param>
            <param name="getIdTitle">delegate used to return id and title from objects.</param>
            <param name="selectedValue">value that should be marked as selected.</param>
            <param name="firstEmpty">First row should contain an empty value.</param>
            <returns></returns>
            <exception cref="T:System.ArgumentNullException"><c>collection</c> or <c>getIdTitle</c> is null.</exception>
        </member>
        <member name="M:HttpServer.Helpers.FormHelper.Options(System.Text.StringBuilder,System.Collections.IEnumerable,HttpServer.Helpers.GetIdTitle,System.Object,System.Boolean)">
            <exception cref="T:System.ArgumentNullException"><c>sb</c> is null.</exception>
        </member>
        <member name="M:HttpServer.Helpers.FormHelper.CheckBox(System.String,System.Object,System.Object,System.String[])">
            <summary>
            Creates a check box.
            </summary>
            <param name="name">element name</param>
            <param name="value">element value</param>
            <param name="isChecked">determines if the check box is selected or not. This is done differently depending on the
            type of variable. A boolean simply triggers checked or not, all other types are compared with "value" to determine if 
            the box is checked or not. </param>
            <param name="htmlAttributes">a list with additional attributes (name, value, name, value).</param>
            <returns>a generated radio button</returns>
        </member>
        <member name="M:HttpServer.Helpers.FormHelper.CheckBox(System.String,System.String,System.Object,System.Object,System.String[])">
            <summary>
            Creates a check box.
            </summary>
            <param name="name">element name</param>
            <param name="id">element id</param>
            <param name="value">element value</param>
            <param name="isChecked">determines if the check box is selected or not. This is done differently depending on the
            type of variable. A boolean simply triggers checked or not, all other types are compared with "value" to determine if 
            the box is checked or not. </param>
            <param name="htmlAttributes">a list with additional attributes (name, value, name, value).</param>
            <returns>a generated radio button</returns>
            <remarks>
            value in your business object. (check box will be selected if it matches the element value)
            </remarks>
        </member>
        <member name="M:HttpServer.Helpers.FormHelper.CheckBox(System.String,System.String,System.Object,System.String[])">
            <summary>
            Creates a check box.
            </summary>
            <param name="name">element name</param>
            <param name="id">element id</param>
            <param name="isChecked">determines if the check box is selected or not. This is done differently depending on the
            type of variable. A boolean simply triggers checked or not, all other types are compared with "value" to determine if 
            the box is checked or not. </param>
            <param name="htmlAttributes">a list with additional attributes (name, value, name, value).</param>
            <returns>a generated radio button</returns>
            <remarks>will set value to "1".</remarks>
        </member>
        <member name="M:HttpServer.Helpers.FormHelper.RadioButton(System.String,System.Object,System.Object,System.String[])">
            <summary>
            Creates a RadioButton.
            </summary>
            <param name="name">element name</param>
            <param name="value">element value</param>
            <param name="isSelected">determines if the radio button is selected or not. This is done differently depending on the
            type of variable. A boolean simply triggers checked or not, all other types are compared with "value" to determine if 
            the box is checked or not. </param>
            <param name="htmlAttributes">a list with additional attributes (name, value, name, value).</param>
            <returns>a generated radio button</returns>
        </member>
        <member name="M:HttpServer.Helpers.FormHelper.RadioButton(System.String,System.String,System.Object,System.Object,System.String[])">
            <summary>
            Creates a RadioButton.
            </summary>
            <param name="name">element name</param>
            <param name="id">element id</param>
            <param name="value">element value</param>
            <param name="isSelected">determines if the radio button is selected or not. This is done differently depending on the
            type of variable. A boolean simply triggers checked or not, all other types are compared with "value" to determine if 
            the box is checked or not. </param>
            <param name="htmlAttributes">a list with additional attributes (name, value, name, value).</param>
            <returns>a generated radio button</returns>
        </member>
        <member name="M:HttpServer.Helpers.FormHelper.End">
            <summary>
            form close tag
            </summary>
            <returns></returns>
        </member>
        <member name="T:HttpServer.ExceptionHandler">
            <summary>
            We dont want to let the server to die due to exceptions thrown in worker threads.
            therefore we use this delegate to give you a change to handle uncaught exceptions.
            </summary>
            <param name="source">Class that the exception was thrown in.</param>
            <param name="exception">Exception</param>
            <remarks>
            Server will throw a InternalServerException in release version if you dont
            handle this delegate.
            </remarks>
        </member>
        <member name="T:HttpServer.Authentication.DigestAuthentication">
            <summary>
            Implements HTTP Digest authentication. It's more secure than Basic auth since password is 
            encrypted with a "key" from the server. 
            </summary>
            <remarks>
            Keep in mind that the password is encrypted with MD5. Use a combination of SSL and digest auth to be secure.
            </remarks>
        </member>
        <member name="T:HttpServer.Authentication.AuthenticationModule">
            <summary>
            Authentication modules are used to implement different
            kind of HTTP authentication.
            </summary>
        </member>
        <member name="F:HttpServer.Authentication.AuthenticationModule.AuthenticationTag">
            <summary>
            Tag used for authentication.
            </summary>
        </member>
        <member name="M:HttpServer.Authentication.AuthenticationModule.#ctor(HttpServer.Authentication.AuthenticationHandler,HttpServer.Authentication.AuthenticationRequiredHandler)">
            <summary>
            Initializes a new instance of the <see cref="T:HttpServer.Authentication.AuthenticationModule"/> class.
            </summary>
            <param name="authenticator">Delegate used to provide information used during authentication.</param>
            <param name="authenticationRequiredHandler">Delegate used to determine if authentication is required (may be null).</param>
        </member>
        <member name="M:HttpServer.Authentication.AuthenticationModule.#ctor(HttpServer.Authentication.AuthenticationHandler)">
            <summary>
            Initializes a new instance of the <see cref="T:HttpServer.Authentication.AuthenticationModule"/> class.
            </summary>
            <param name="authenticator">Delegate used to provide information used during authentication.</param>
        </member>
        <member name="M:HttpServer.Authentication.AuthenticationModule.CreateResponse(System.String,System.Object[])">
            <summary>
            Create a response that can be sent in the WWW-Authenticate header.
            </summary>
            <param name="realm">Realm that the user should authenticate in</param>
            <param name="options">Array with optional options.</param>
            <returns>A correct authentication request.</returns>
            <exception cref="T:System.ArgumentNullException">If realm is empty or null.</exception>
        </member>
        <member name="M:HttpServer.Authentication.AuthenticationModule.Authenticate(System.String,System.String,System.String,System.Object[])">
            <summary>
            An authentication response have been received from the web browser.
            Check if it's correct
            </summary>
            <param name="authenticationHeader">Contents from the Authorization header</param>
            <param name="realm">Realm that should be authenticated</param>
            <param name="httpVerb">GET/POST/PUT/DELETE etc.</param>
            <param name="options">options to specific implementations</param>
            <returns>Authentication object that is stored for the request. A user class or something like that.</returns>
            <exception cref="T:System.ArgumentException">if <paramref name="authenticationHeader"/> is invalid</exception>
            <exception cref="T:System.ArgumentNullException">If any of the parameters is empty or null.</exception>
        </member>
        <member name="M:HttpServer.Authentication.AuthenticationModule.CheckAuthentication(System.String,System.String,System.String@,System.Object@)">
            <summary>
            Used to invoke the authentication delegate that is used to lookup the user name/realm.
            </summary>
            <param name="realm">Realm (domain) that user want to authenticate in</param>
            <param name="userName">User name</param>
            <param name="password">Password used for validation. Some implementations got password in clear text, they are then sent to client.</param>
            <param name="login">object that will be stored in the request to help you identify the user if authentication was successful.</param>
            <returns>true if authentication was successful</returns>
        </member>
        <member name="M:HttpServer.Authentication.AuthenticationModule.AuthenticationRequired(HttpServer.IHttpRequest)">
            <summary>
            Determines if authentication is required.
            </summary>
            <param name="request">HTTP request from browser</param>
            <returns>true if user should be authenticated.</returns>
            <remarks>throw <see cref="T:HttpServer.Exceptions.ForbiddenException"/> from your delegate if no more attempts are allowed.</remarks>
            <exception cref="T:HttpServer.Exceptions.ForbiddenException">If no more attempts are allowed</exception>
        </member>
        <member name="P:HttpServer.Authentication.AuthenticationModule.Name">
            <summary>
            name used in HTTP request.
            </summary>
        </member>
        <member name="M:HttpServer.Authentication.DigestAuthentication.#ctor(HttpServer.Authentication.AuthenticationHandler,HttpServer.Authentication.AuthenticationRequiredHandler)">
            <summary>
            Initializes a new instance of the <see cref="T:HttpServer.Authentication.DigestAuthentication"/> class.
            </summary>
            <param name="authenticator">Delegate used to provide information used during authentication.</param>
            <param name="authenticationRequiredHandler">Delegate used to determine if authentication is required (may be null).</param>
        </member>
        <member name="M:HttpServer.Authentication.DigestAuthentication.#ctor(HttpServer.Authentication.AuthenticationHandler)">
            <summary>
            Initializes a new instance of the <see cref="T:HttpServer.Authentication.DigestAuthentication"/> class.
            </summary>
            <param name="authenticator">Delegate used to provide information used during authentication.</param>
        </member>
        <member name="F:HttpServer.Authentication.DigestAuthentication.DisableNonceCheck">
            <summary>
            Used by test classes to be able to use hardcoded values
            </summary>
        </member>
        <member name="M:HttpServer.Authentication.DigestAuthentication.Authenticate(System.String,System.String,System.String,System.Object[])">
            <summary>
            An authentication response have been received from the web browser.
            Check if it's correct
            </summary>
            <param name="authenticationHeader">Contents from the Authorization header</param>
            <param name="realm">Realm that should be authenticated</param>
            <param name="httpVerb">GET/POST/PUT/DELETE etc.</param>
            <param name="options">First option: true if username/password is correct but not cnonce</param>
            <returns>
            Authentication object that is stored for the request. A user class or something like that.
            </returns>
            <exception cref="T:System.ArgumentException">if authenticationHeader is invalid</exception>
            <exception cref="T:System.ArgumentNullException">If any of the paramters is empty or null.</exception>
        </member>
        <member name="M:HttpServer.Authentication.DigestAuthentication.Encrypt(System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String)">
            <summary>
            Encrypts parameters into a Digest string
            </summary>
            <param name="realm">Realm that the user want to log into.</param>
            <param name="userName">User logging in</param>
            <param name="password">Users password.</param>
            <param name="method">HTTP method.</param>
            <param name="uri">Uri/domain that generated the login prompt.</param>
            <param name="qop">Quality of Protection.</param>
            <param name="nonce">"Number used ONCE"</param>
            <param name="nc">Hexadecimal request counter.</param>
            <param name="cnonce">"Client Number used ONCE"</param>
            <returns>Digest encrypted string</returns>
        </member>
        <member name="M:HttpServer.Authentication.DigestAuthentication.Encrypt(System.String,System.String,System.String,System.String,System.String,System.String)">
            <summary>
            
            </summary>
            <param name="ha1">Md5 hex encoded "userName:realm:password", without the quotes.</param>
            <param name="ha2">Md5 hex encoded "method:uri", without the quotes</param>
            <param name="qop">Quality of Protection</param>
            <param name="nonce">"Number used ONCE"</param>
            <param name="nc">Hexadecimal request counter.</param>
            <param name="cnonce">Client number used once</param>
            <returns></returns>
        </member>
        <member name="M:HttpServer.Authentication.DigestAuthentication.CreateResponse(System.String,System.Object[])">
            <summary>
            Create a response that can be sent in the WWW-Authenticate header.
            </summary>
            <param name="realm">Realm that the user should authenticate in</param>
            <param name="options">First options specifies if true if username/password is correct but not cnonce.</param>
            <returns>A correct auth request.</returns>
            <exception cref="T:System.ArgumentNullException">If realm is empty or null.</exception>
        </member>
        <member name="M:HttpServer.Authentication.DigestAuthentication.Decode(System.String,System.Text.Encoding)">
            <summary>
            Decodes authorization header value
            </summary>
            <param name="buffer">header value</param>
            <param name="encoding">Encoding that the buffer is in</param>
            <returns>All headers and their values if successful; otherwise null</returns>
            <example>
            NameValueCollection header = DigestAuthentication.Decode("response=\"6629fae49393a05397450978507c4ef1\",\r\nc=00001", Encoding.ASCII);
            </example>
            <remarks>Can handle lots of whitespaces and new lines without failing.</remarks>
        </member>
        <member name="M:HttpServer.Authentication.DigestAuthentication.GetCurrentNonce">
            <summary>
            Gets the current nonce.
            </summary>
            <returns></returns>
        </member>
        <member name="M:HttpServer.Authentication.DigestAuthentication.GetMD5HashBinHex2(System.String)">
            <summary>
            Gets the Md5 hash bin hex2.
            </summary>
            <param name="toBeHashed">To be hashed.</param>
            <returns></returns>
        </member>
        <member name="M:HttpServer.Authentication.DigestAuthentication.IsValidNonce(System.String)">
            <summary>
            determines if the nonce is valid or has expired.
            </summary>
            <param name="nonce">nonce value (check wikipedia for info)</param>
            <returns>true if the nonce has not expired.</returns>
        </member>
        <member name="P:HttpServer.Authentication.DigestAuthentication.Name">
            <summary>
            name used in http request.
            </summary>
        </member>
        <member name="P:HttpServer.Authentication.DigestAuthentication.TokenIsHA1">
            <summary>
            Gets or sets whether the token supplied in <see cref="T:HttpServer.Authentication.AuthenticationHandler"/> is a
            HA1 generated string.
            </summary>
        </member>
        <member name="T:HttpServer.HttpHelper">
            <summary>
            Generic helper functions for HTTP
            </summary>
        </member>
        <member name="F:HttpServer.HttpHelper.HTTP10">
            <summary>
            Version string for HTTP v1.0
            </summary>
        </member>
        <member name="F:HttpServer.HttpHelper.HTTP11">
            <summary>
            Version string for HTTP v1.1
            </summary>
        </member>
        <member name="F:HttpServer.HttpHelper.EmptyUri">
            <summary>
            An empty URI
            </summary>
        </member>
        <member name="M:HttpServer.HttpHelper.ParseQueryString(System.String)">
            <summary>
            Parses a query string.
            </summary>
            <param name="queryString">Query string (URI encoded)</param>
            <returns>A <see cref="T:HttpServer.HttpInput"/> object if successful; otherwise <see cref="F:HttpServer.HttpInput.Empty"/></returns>
            <exception cref="T:System.ArgumentNullException"><c>queryString</c> is null.</exception>
            <exception cref="T:System.FormatException">If string cannot be parsed.</exception>
        </member>
        <member name="T:HttpServer.Authentication.AuthenticationHandler">
            <summary>
            Delegate used to let authentication modules authenticate the user name and password.
            </summary>
            <param name="realm">Realm that the user want to authenticate in</param>
            <param name="userName">User name specified by client</param>
            <param name="token">Can either be user password or implementation specific token.</param>
            <param name="login">object that will be stored in a session variable called <see cref="F:HttpServer.Authentication.AuthenticationModule.AuthenticationTag"/> if authentication was successful.</param>
            <exception cref="T:HttpServer.Exceptions.ForbiddenException">throw forbidden exception if too many attempts have been made.</exception>
            <remarks>
            <para>
            Use <see cref="P:HttpServer.Authentication.DigestAuthentication.TokenIsHA1"/> to specify that the token is a HA1 token. (MD5 generated
            string from realm, user name and password); Md5String(userName + ":" + realm + ":" + password);
            </para>
            </remarks>
        </member>
        <member name="T:HttpServer.Authentication.AuthenticationRequiredHandler">
            <summary>
            Let's you decide on a system level if authentication is required.
            </summary>
            <param name="request">HTTP request from client</param>
            <returns>true if user should be authenticated.</returns>
            <remarks>throw <see cref="T:HttpServer.Exceptions.ForbiddenException"/> if no more attempts are allowed.</remarks>
            <exception cref="T:HttpServer.Exceptions.ForbiddenException">If no more attempts are allowed</exception>
        </member>
        <member name="T:HttpServer.Parser.BodyEventArgs">
            <summary>
            Arguments used when more body bytes have come.
            </summary>
        </member>
        <member name="M:HttpServer.Parser.BodyEventArgs.#ctor(System.Byte[],System.Int32,System.Int32)">
            <summary>
            Initializes a new instance of the <see cref="T:HttpServer.Parser.BodyEventArgs"/> class.
            </summary>
            <param name="buffer">buffer that contains the received bytes.</param>
            <param name="offset">offset in buffer where to start processing.</param>
            <param name="count">number of bytes from <paramref name="offset"/> that should be parsed.</param>
        </member>
        <member name="M:HttpServer.Parser.BodyEventArgs.#ctor">
            <summary>
            Initializes a new instance of the <see cref="T:HttpServer.Parser.BodyEventArgs"/> class.
            </summary>
        </member>
        <member name="P:HttpServer.Parser.BodyEventArgs.Buffer">
            <summary>
            Gets or sets buffer that contains the received bytes.
            </summary>
        </member>
        <member name="P:HttpServer.Parser.BodyEventArgs.Count">
            <summary>
            Gets or sets number of bytes from <see cref="P:HttpServer.Parser.BodyEventArgs.Offset"/> that should be parsed.
            </summary>
        </member>
        <member name="P:HttpServer.Parser.BodyEventArgs.Offset">
            <summary>
            Gets or sets offset in buffer where to start processing.
            </summary>
        </member>
        <member name="T:HttpServer.Method">
            <summary>
            Contains all HTTP Methods (according to the HTTP 1.1 specification)
            <para>
            See: http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html
            </para>
            </summary>
        </member>
        <member name="F:HttpServer.Method.Delete">
            <summary>
            The DELETE method requests that the origin server delete the resource identified by the Request-URI.
            </summary>
            <remarks>
            <para>
            This method MAY be overridden by human intervention (or other means) on the origin server. 
            The client cannot be guaranteed that the operation has been carried out, even if the status code 
            returned from the origin server indicates that the action has been completed successfully. 
            </para>
            <para>
            However, the server SHOULD NOT indicate success unless, at the time the response is given, 
            it intends to delete the resource or move it to an inaccessible location.
            </para>
            <para>
            A successful response SHOULD be 200 (OK) if the response includes an entity describing the status, 
            202 (Accepted) if the action has not yet been enacted, 
            or 204 (No Content) if the action has been enacted but the response does not include an entity.
            </para>
            <para>
            If the request passes through a cache and the Request-URI identifies one or more currently cached entities, 
            those entries SHOULD be treated as stale. Responses to this method are not cacheable. 
            </para>
            </remarks>
        </member>
        <member name="F:HttpServer.Method.Get">
            <summary>
            The GET method means retrieve whatever information (in the form of an entity) is identified by the Request-URI.
            </summary>
            <remarks>
            <para>
            If the Request-URI refers to a data-producing process, it is the produced data which shall be returned as the 
            entity in the response and not the source text of the process, unless that text happens to be the output of the process.
            </para>
            <para>
            The semantics of the GET method change to a "conditional GET" if the request message includes an 
            If-Modified-Since, If-Unmodified-Since, If-Match, If-None-Match, or If-Range header field. 
            A conditional GET method requests that the entity be transferred only under the circumstances described 
            by the conditional header field(s). The conditional GET method is intended to reduce unnecessary network 
            usage by allowing cached entities to be refreshed without requiring multiple requests or transferring 
            data already held by the client.
            </para>
            </remarks>
        </member>
        <member name="F:HttpServer.Method.Header">
            <summary>
            The HEAD method is identical to GET except that the server MUST NOT return a message-body in the response. 
            </summary>
            <remarks>
            The meta information contained in the HTTP headers in response to a HEAD request SHOULD be identical to the
             information sent in response to a GET request. This method can be used for obtaining meta information about 
            the entity implied by the request without transferring the entity-body itself. 
            
            This method is often used for testing hypertext links for validity, accessibility, and recent modification.
            </remarks>
        </member>
        <member name="F:HttpServer.Method.Options">
            <summary>
            <para>The OPTIONS method represents a request for information about the communication options available on the request/response chain identified by the Request-URI.</para>
            </summary>
            <remarks>
            <para>This method allows the client to determine the options and/or requirements associated with a resource, or the capabilities of a server, without implying a resource action or initiating a resource retrieval.</para>
            </remarks>
        </member>
        <member name="F:HttpServer.Method.Post">
            <summary>
            The POST method is used to request that the origin server accept the entity enclosed 
            in the request as a new subordinate of the resource identified by the Request-URI in the Request-Line.
            </summary>
            <remarks>
            POST is designed to allow a uniform method to cover the following functions:
            <list type="bullet">
            <item>
            Annotation of existing resources;
            </item><item>
            Posting a message to a bulletin board, newsgroup, mailing list, or similar group of articles;
            </item><item>
            Providing a block of data, such as the result of submitting a form, to a data-handling process;
            </item><item>
            Extending a database through an append operation.
            </item>
            </list>
            <para>
            If a resource has been created on the origin server, the response SHOULD be 201 (Created) and 
            contain an entity which describes the status of the request and refers to the new resource, and a 
            Location header (see section 14.30).
            </para>
            <para>
             The action performed by the POST method might not result in a resource that can be identified by a URI. 
            In this case, either 200 (OK) or 204 (No Content) is the appropriate response status, depending on 
            whether or not the response includes an entity that describes the result.
            </para><para>
            Responses to this method are not cacheable, unless the response includes appropriate Cache-Control 
            or Expires header fields. However, the 303 (See Other) response can be used to direct the user agent 
            to retrieve a cacheable resource. 
            </para>
            </remarks>
        </member>
        <member name="F:HttpServer.Method.Put">
            <summary>
            The PUT method requests that the enclosed entity be stored under the supplied Request-URI.
            </summary>
            <remarks>
            <list type="bullet">
            <item>
            If the Request-URI refers to an already existing resource, the enclosed entity SHOULD be considered as a 
            modified version of the one residing on the origin server. 
            </item><item>
            If the Request-URI does not point to an existing resource, and that URI is capable of being defined as a new 
            resource by the requesting user agent, the origin server can create the resource with that URI. 
            </item><item>
            If a new resource is created, the origin server MUST inform the user agent via the 201 (Created) response. 
            </item><item>
            If an existing resource is modified, either the 200 (OK) or 204 (No Content) response codes SHOULD be sent to 
            indicate successful completion of the request. 
            </item><item>
            If the resource could not be created or modified with the Request-URI, an appropriate error response SHOULD be 
            given that reflects the nature of the problem. 
            </item>
            </list>
            <para>
            The recipient of the entity MUST NOT ignore any Content-* (e.g. Content-Range) headers that it does not 
            understand or implement and MUST return a 501 (Not Implemented) response in such cases.
            </para>
            </remarks>
        </member>
        <member name="F:HttpServer.Method.Trace">
            <summary>
            The TRACE method is used to invoke a remote, application-layer loop- back of the request message.
            </summary>
        </member>
        <member name="T:HttpServer.Methods">
            <summary>
            Contains all HTTP Methods (according to the HTTP 1.1 specification)
            <para>
            See: http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html
            </para>
            </summary>
        </member>
        <member name="F:HttpServer.Methods.Delete">
            <summary>
            The DELETE method requests that the origin server delete the resource identified by the Request-URI.
            </summary>
            <remarks>
            <para>
            This method MAY be overridden by human intervention (or other means) on the origin server. 
            The client cannot be guaranteed that the operation has been carried out, even if the status code 
            returned from the origin server indicates that the action has been completed successfully. 
            </para>
            <para>
            However, the server SHOULD NOT indicate success unless, at the time the response is given, 
            it intends to delete the resource or move it to an inaccessible location.
            </para>
            <para>
            A successful response SHOULD be 200 (OK) if the response includes an entity describing the status, 
            202 (Accepted) if the action has not yet been enacted, 
            or 204 (No Content) if the action has been enacted but the response does not include an entity.
            </para>
            <para>
            If the request passes through a cache and the Request-URI identifies one or more currently cached entities, 
            those entries SHOULD be treated as stale. Responses to this method are not cacheable. 
            </para>
            </remarks>
        </member>
        <member name="F:HttpServer.Methods.Get">
            <summary>
            The GET method means retrieve whatever information (in the form of an entity) is identified by the Request-URI.
            </summary>
            <remarks>
            <para>
            If the Request-URI refers to a data-producing process, it is the produced data which shall be returned as the 
            entity in the response and not the source text of the process, unless that text happens to be the output of the process.
            </para>
            <para>
            The semantics of the GET method change to a "conditional GET" if the request message includes an 
            If-Modified-Since, If-Unmodified-Since, If-Match, If-None-Match, or If-Range header field. 
            A conditional GET method requests that the entity be transferred only under the circumstances described 
            by the conditional header field(s). The conditional GET method is intended to reduce unnecessary network 
            usage by allowing cached entities to be refreshed without requiring multiple requests or transferring 
            data already held by the client.
            </para>
            </remarks>
        </member>
        <member name="F:HttpServer.Methods.Header">
            <summary>
            The HEAD method is identical to GET except that the server MUST NOT return a message-body in the response. 
            </summary>
            <remarks>
            The meta information contained in the HTTP headers in response to a HEAD request SHOULD be identical to the
             information sent in response to a GET request. This method can be used for obtaining meta information about 
            the entity implied by the request without transferring the entity-body itself. 
            
            This method is often used for testing hypertext links for validity, accessibility, and recent modification.
            </remarks>
        </member>
        <member name="F:HttpServer.Methods.Options">
            <summary>
            <para>The OPTIONS method represents a request for information about the communication options available on the request/response chain identified by the Request-URI.</para>
            </summary>
            <remarks>
            <para>This method allows the client to determine the options and/or requirements associated with a resource, or the capabilities of a server, without implying a resource action or initiating a resource retrieval.</para>
            </remarks>
        </member>
        <member name="F:HttpServer.Methods.Post">
            <summary>
            The POST method is used to request that the origin server accept the entity enclosed 
            in the request as a new subordinate of the resource identified by the Request-URI in the Request-Line.
            </summary>
            <remarks>
            POST is designed to allow a uniform method to cover the following functions:
            <list type="bullet">
            <item>
            Annotation of existing resources;
            </item><item>
            Posting a message to a bulletin board, newsgroup, mailing list, or similar group of articles;
            </item><item>
            Providing a block of data, such as the result of submitting a form, to a data-handling process;
            </item><item>
            Extending a database through an append operation.
            </item>
            </list>
            <para>
            If a resource has been created on the origin server, the response SHOULD be 201 (Created) and 
            contain an entity which describes the status of the request and refers to the new resource, and a 
            Location header (see section 14.30).
            </para>
            <para>
             The action performed by the POST method might not result in a resource that can be identified by a URI. 
            In this case, either 200 (OK) or 204 (No Content) is the appropriate response status, depending on 
            whether or not the response includes an entity that describes the result.
            </para><para>
            Responses to this method are not cacheable, unless the response includes appropriate Cache-Control 
            or Expires header fields. However, the 303 (See Other) response can be used to direct the user agent 
            to retrieve a cacheable resource. 
            </para>
            </remarks>
        </member>
        <member name="F:HttpServer.Methods.Put">
            <summary>
            The PUT method requests that the enclosed entity be stored under the supplied Request-URI.
            </summary>
            <remarks>
            <list type="bullet">
            <item>
            If the Request-URI refers to an already existing resource, the enclosed entity SHOULD be considered as a 
            modified version of the one residing on the origin server. 
            </item><item>
            If the Request-URI does not point to an existing resource, and that URI is capable of being defined as a new 
            resource by the requesting user agent, the origin server can create the resource with that URI. 
            </item><item>
            If a new resource is created, the origin server MUST inform the user agent via the 201 (Created) response. 
            </item><item>
            If an existing resource is modified, either the 200 (OK) or 204 (No Content) response codes SHOULD be sent to 
            indicate successful completion of the request. 
            </item><item>
            If the resource could not be created or modified with the Request-URI, an appropriate error response SHOULD be 
            given that reflects the nature of the problem. 
            </item>
            </list>
            <para>
            The recipient of the entity MUST NOT ignore any Content-* (e.g. Content-Range) headers that it does not 
            understand or implement and MUST return a 501 (Not Implemented) response in such cases.
            </para>
            </remarks>
        </member>
        <member name="F:HttpServer.Methods.Trace">
            <summary>
            The TRACE method is used to invoke a remote, application-layer loop- back of the request message.
            </summary>
        </member>
        <member name="T:HttpServer.HttpContextFactory">
            <summary>
            Used to create and reuse contexts.
            </summary>
        </member>
        <member name="T:HttpServer.IHttpContextFactory">
            <summary>
            Used to create <see cref="T:HttpServer.IHttpClientContext"/>es.
            </summary>
        </member>
        <member name="M:HttpServer.IHttpContextFactory.CreateContext(System.Net.Sockets.Socket)">
            <summary>
            Creates a <see cref="T:HttpServer.IHttpClientContext"/> that handles a connected client.
            </summary>
            <param name="socket">Client socket (accepted by the <see cref="T:HttpServer.HttpListener"/>).</param>
            <returns>A creates <see cref="T:HttpServer.IHttpClientContext"/>.</returns>
        </member>
        <member name="M:HttpServer.IHttpContextFactory.CreateSecureContext(System.Net.Sockets.Socket,System.Security.Cryptography.X509Certificates.X509Certificate,System.Security.Authentication.SslProtocols)">
            <summary>
            Create a secure <see cref="T:HttpServer.IHttpClientContext"/>.
            </summary>
            <param name="socket">Client socket (accepted by the <see cref="T:HttpServer.HttpListener"/>).</param>
            <param name="certificate">HTTPS certificate to use.</param>
            <param name="protocol">Kind of HTTPS protocol. Usually TLS or SSL.</param>
            <returns>A created <see cref="T:HttpServer.IHttpClientContext"/>.</returns>
        </member>
        <member name="M:HttpServer.IHttpContextFactory.Shutdown">
            <summary>
            Server is shutting down so shut down the factory
            </summary>
        </member>
        <member name="E:HttpServer.IHttpContextFactory.RequestReceived">
            <summary>
            A request have been received from one of the contexts.
            </summary>
        </member>
        <member name="M:HttpServer.HttpContextFactory.#ctor(HttpServer.ILogWriter,System.Int32,HttpServer.IRequestParserFactory)">
            <summary>
            Initializes a new instance of the <see cref="T:HttpServer.HttpContextFactory"/> class.
            </summary>
            <param name="writer">The writer.</param>
            <param name="bufferSize">Amount of bytes to read from the incoming socket stream.</param>
            <param name="factory">Used to create a request parser.</param>
        </member>
        <member name="M:HttpServer.HttpContextFactory.CreateContext(System.Boolean,System.Net.IPEndPoint,System.IO.Stream,System.Net.Sockets.Socket)">
            <summary>
            Create a new context.
            </summary>
            <param name="isSecured">true if socket is running HTTPS.</param>
            <param name="endPoint">Client that connected</param>
            <param name="stream">Network/SSL stream.</param>
            <returns>A context.</returns>
        </member>
        <member name="M:HttpServer.HttpContextFactory.CreateNewContext(System.Boolean,System.Net.IPEndPoint,System.IO.Stream,System.Net.Sockets.Socket)">
            <summary>
            Create a new context.
            </summary>
            <param name="isSecured">true if HTTPS is used.</param>
            <param name="endPoint">Remote client</param>
            <param name="stream">Network stream, <see cref="T:HttpServer.HttpClientContext"/> uses <see cref="T:HttpServer.ReusableSocketNetworkStream"/>.</param>
            <returns>A new context (always).</returns>
        </member>
        <member name="M:HttpServer.HttpContextFactory.CreateSecureContext(System.Net.Sockets.Socket,System.Security.Cryptography.X509Certificates.X509Certificate,System.Security.Authentication.SslProtocols)">
            <summary>
            Create a secure <see cref="T:HttpServer.IHttpClientContext"/>.
            </summary>
            <param name="socket">Client socket (accepted by the <see cref="T:HttpServer.HttpListener"/>).</param>
            <param name="certificate">HTTPS certificate to use.</param>
            <param name="protocol">Kind of HTTPS protocol. Usually TLS or SSL.</param>
            <returns>
            A created <see cref="T:HttpServer.IHttpClientContext"/>.
            </returns>
        </member>
        <member name="M:HttpServer.HttpContextFactory.CreateContext(System.Net.Sockets.Socket)">
            <summary>
            Creates a <see cref="T:HttpServer.IHttpClientContext"/> that handles a connected client.
            </summary>
            <param name="socket">Client socket (accepted by the <see cref="T:HttpServer.HttpListener"/>).</param>
            <returns>
            A creates <see cref="T:HttpServer.IHttpClientContext"/>.
            </returns>
        </member>
        <member name="M:HttpServer.HttpContextFactory.Shutdown">
            <summary>
            Server is shutting down so shut down the factory
            </summary>
        </member>
        <member name="P:HttpServer.HttpContextFactory.UseTraceLogs">
            <summary>
             True if detailed trace logs should be written.
            </summary>
        </member>
        <member name="E:HttpServer.HttpContextFactory.RequestReceived">
            <summary>
            A request have been received from one of the contexts.
            </summary>
        </member>
        <member name="T:HttpServer.ReusableSocketNetworkStream">
            <summary>
            Custom network stream to mark sockets as reusable when disposing the stream.
            </summary>
        </member>
        <member name="M:HttpServer.ReusableSocketNetworkStream.#ctor(System.Net.Sockets.Socket)">
            <summary>
                                Creates a new instance of the <see cref="T:System.Net.Sockets.NetworkStream" /> class for the specified <see cref="T:System.Net.Sockets.Socket" />.
            </summary>
            <param name="socket">
                                The <see cref="T:System.Net.Sockets.Socket" /> that the <see cref="T:System.Net.Sockets.NetworkStream" /> will use to send and receive data. 
                            </param>
            <exception cref="T:System.ArgumentNullException">
                                The <paramref name="socket" /> parameter is null. 
                            </exception>
            <exception cref="T:System.IO.IOException">
                                The <paramref name="socket" /> parameter is not connected.
                                -or- 
                                The <see cref="P:System.Net.Sockets.Socket.SocketType" /> property of the <paramref name="socket" /> parameter is not <see cref="F:System.Net.Sockets.SocketType.Stream" />.
                                -or- 
                                The <paramref name="socket" /> parameter is in a nonblocking state. 
                            </exception>
        </member>
        <member name="M:HttpServer.ReusableSocketNetworkStream.#ctor(System.Net.Sockets.Socket,System.Boolean)">
            <summary>
                                Initializes a new instance of the <see cref="T:System.Net.Sockets.NetworkStream" /> class for the specified <see cref="T:System.Net.Sockets.Socket" /> with the specified <see cref="T:System.Net.Sockets.Socket" /> ownership.
            </summary>
            <param name="socket">
                                The <see cref="T:System.Net.Sockets.Socket" /> that the <see cref="T:System.Net.Sockets.NetworkStream" /> will use to send and receive data. 
                            </param>
            <param name="ownsSocket">
                                Set to true to indicate that the <see cref="T:System.Net.Sockets.NetworkStream" /> will take ownership of the <see cref="T:System.Net.Sockets.Socket" />; otherwise, false. 
                            </param>
            <exception cref="T:System.ArgumentNullException">
                                The <paramref name="socket" /> parameter is null. 
                            </exception>
            <exception cref="T:System.IO.IOException">
                                The <paramref name="socket" /> parameter is not connected.
                                -or- 
                                the value of the <see cref="P:System.Net.Sockets.Socket.SocketType" /> property of the <paramref name="socket" /> parameter is not <see cref="F:System.Net.Sockets.SocketType.Stream" />.
                                -or- 
                                the <paramref name="socket" /> parameter is in a nonblocking state. 
                            </exception>
        </member>
        <member name="M:HttpServer.ReusableSocketNetworkStream.#ctor(System.Net.Sockets.Socket,System.IO.FileAccess)">
            <summary>
                                Creates a new instance of the <see cref="T:System.Net.Sockets.NetworkStream" /> class for the specified <see cref="T:System.Net.Sockets.Socket" /> with the specified access rights.
            </summary>
            <param name="socket">
                                The <see cref="T:System.Net.Sockets.Socket" /> that the <see cref="T:System.Net.Sockets.NetworkStream" /> will use to send and receive data. 
                            </param>
            <param name="access">
                                A bitwise combination of the <see cref="T:System.IO.FileAccess" /> values that specify the type of access given to the <see cref="T:System.Net.Sockets.NetworkStream" /> over the provided <see cref="T:System.Net.Sockets.Socket" />. 
                            </param>
            <exception cref="T:System.ArgumentNullException">
                                The <paramref name="socket" /> parameter is null. 
                            </exception>
            <exception cref="T:System.IO.IOException">
                                The <paramref name="socket" /> parameter is not connected.
                                -or- 
                                the <see cref="P:System.Net.Sockets.Socket.SocketType" /> property of the <paramref name="socket" /> parameter is not <see cref="F:System.Net.Sockets.SocketType.Stream" />.
                                -or- 
                                the <paramref name="socket" /> parameter is in a nonblocking state. 
                            </exception>
        </member>
        <member name="M:HttpServer.ReusableSocketNetworkStream.#ctor(System.Net.Sockets.Socket,System.IO.FileAccess,System.Boolean)">
            <summary>
                                Creates a new instance of the <see cref="T:System.Net.Sockets.NetworkStream" /> class for the specified <see cref="T:System.Net.Sockets.Socket" /> with the specified access rights and the specified <see cref="T:System.Net.Sockets.Socket" /> ownership.
            </summary>
            <param name="socket">
                                The <see cref="T:System.Net.Sockets.Socket" /> that the <see cref="T:System.Net.Sockets.NetworkStream" /> will use to send and receive data. 
                            </param>
            <param name="access">
                                A bitwise combination of the <see cref="T:System.IO.FileAccess" /> values that specifies the type of access given to the <see cref="T:System.Net.Sockets.NetworkStream" /> over the provided <see cref="T:System.Net.Sockets.Socket" />. 
                            </param>
            <param name="ownsSocket">
                                Set to true to indicate that the <see cref="T:System.Net.Sockets.NetworkStream" /> will take ownership of the <see cref="T:System.Net.Sockets.Socket" />; otherwise, false. 
                            </param>
            <exception cref="T:System.ArgumentNullException">
                                The <paramref name="socket" /> parameter is null. 
                            </exception>
            <exception cref="T:System.IO.IOException">
                                The <paramref name="socket" /> parameter is not connected.
                                -or- 
                                The <see cref="P:System.Net.Sockets.Socket.SocketType" /> property of the <paramref name="socket" /> parameter is not <see cref="F:System.Net.Sockets.SocketType.Stream" />.
                                -or- 
                                The <paramref name="socket" /> parameter is in a nonblocking state. 
                            </exception>
        </member>
        <member name="M:HttpServer.ReusableSocketNetworkStream.Close">
            <summary>
            Closes the current stream and releases any resources (such as sockets and file handles) associated with the current stream.
            </summary>
        </member>
        <member name="M:HttpServer.ReusableSocketNetworkStream.Dispose(System.Boolean)">
            <summary>
            Releases the unmanaged resources used by the <see cref="T:System.Net.Sockets.NetworkStream"/> and optionally releases the managed resources.
            </summary>
            <param name="disposing">true to release both managed and unmanaged resources; false to release only unmanaged resources.</param>
        </member>
        <member name="T:HttpServer.ClientAcceptedEventArgs">
            <summary>
            Invoked when a client have been accepted by the <see cref="T:HttpServer.HttpListener"/>
            </summary>
            <remarks>
            Can be used to revoke incoming connections
            </remarks>
        </member>
        <member name="M:HttpServer.ClientAcceptedEventArgs.#ctor(System.Net.Sockets.Socket)">
            <summary>
            Initializes a new instance of the <see cref="T:HttpServer.ClientAcceptedEventArgs"/> class.
            </summary>
            <param name="socket">The socket.</param>
        </member>
        <member name="M:HttpServer.ClientAcceptedEventArgs.Revoke">
            <summary>
            Client may not be handled.
            </summary>
        </member>
        <member name="P:HttpServer.ClientAcceptedEventArgs.Socket">
            <summary>
            Accepted socket.
            </summary>
        </member>
        <member name="P:HttpServer.ClientAcceptedEventArgs.Revoked">
            <summary>
            Client should be revoked.
            </summary>
        </member>
        <member name="T:HttpServer.Sessions.MemorySession">
            <summary>
            A session stored in memory.
            </summary>
        </member>
        <member name="T:HttpServer.Sessions.IHttpSession">
            <summary>
            Interface for sessions
            </summary>
        </member>
        <member name="M:HttpServer.Sessions.IHttpSession.Clear">
            <summary>
            Remove everything from the session
            </summary>
        </member>
        <member name="M:HttpServer.Sessions.IHttpSession.Clear(System.Boolean)">
            <summary>
            Remove everything from the session
            </summary>
            <param name="expires">True if the session is cleared due to expiration</param>
        </member>
        <member name="P:HttpServer.Sessions.IHttpSession.Id">
            <summary>
            Session id
            </summary>
        </member>
        <member name="P:HttpServer.Sessions.IHttpSession.Item(System.String)">
            <summary>
            Should 
            </summary>
            <param name="name">Name of the session variable</param>
            <returns>null if it's not set</returns>
            <exception cref="T:System.Runtime.Serialization.SerializationException">If the object cant be serialized.</exception>
        </member>
        <member name="P:HttpServer.Sessions.IHttpSession.Accessed">
            <summary>
            When the session was last accessed.
            This property is touched by the http server each time the
            session is requested.
            </summary>
        </member>
        <member name="P:HttpServer.Sessions.IHttpSession.Count">
            <summary>
            Number of session variables.
            </summary>
        </member>
        <member name="E:HttpServer.Sessions.IHttpSession.BeforeClear">
            <summary>
            Event triggered upon clearing the session
            </summary>
        </member>
        <member name="M:HttpServer.Sessions.MemorySession.#ctor(System.String)">
            <summary>
            
            </summary>
            <param name="id">A unique id used by the sessions store to identify the session</param>
        </member>
        <member name="M:HttpServer.Sessions.MemorySession.SetId(System.String)">
            <summary>
            Id
            </summary>
            <param name="id"></param>
        </member>
        <member name="M:HttpServer.Sessions.MemorySession.Clear">
            <summary>
            Remove everything from the session
            </summary>
        </member>
        <member name="M:HttpServer.Sessions.MemorySession.Clear(System.Boolean)">
            <summary>
            Clears the specified expire.
            </summary>
            <param name="expires">True if the session is cleared due to expiration</param>
        </member>
        <member name="M:HttpServer.Sessions.MemorySession.Dispose">
            <summary>
            Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
            </summary>
            <filterpriority>2</filterpriority>
        </member>
        <member name="P:HttpServer.Sessions.MemorySession.Id">
            <summary>
            Session id
            </summary>
        </member>
        <member name="P:HttpServer.Sessions.MemorySession.Item(System.String)">
            <summary>
            Should 
            </summary>
            <param name="name">Name of the session variable</param>
            <returns>null if it's not set</returns>
        </member>
        <member name="P:HttpServer.Sessions.MemorySession.Accessed">
            <summary>
            when the session was last accessed.
            </summary>
            <remarks>
            Used to determine when the session should be removed.
            </remarks>
        </member>
        <member name="P:HttpServer.Sessions.MemorySession.Count">
            <summary>
            Number of values in the session
            </summary>
        </member>
        <member name="P:HttpServer.Sessions.MemorySession.Changed">
            <summary>
            Flag to indicate that the session have been changed
            and should be saved into the session store.
            </summary>
        </member>
        <member name="E:HttpServer.Sessions.MemorySession.BeforeClear">
            <summary>
            Event triggered upon clearing the session
            </summary>
        </member>
        <member name="T:HttpServer.HttpModules.ReverseProxyModule">
            <summary>
            A reverse proxy are used to act as a bridge between local (protected/hidden) websites
            and public clients.
            
            A typical usage is to allow web servers on non standard ports to still be available
            to the public clients, or allow web servers on private ips to be available.
            </summary>
        </member>
        <member name="M:HttpServer.HttpModules.ReverseProxyModule.#ctor(System.String,System.String)">
            <summary>
            
            </summary>
            <param name="source">Base url requested from browser</param>
            <param name="destination">Base url on private web server</param>
            <example>
            // this will return contents from http://192.168.1.128/view/jonas when client requests http://www.gauffin.com/user/view/jonas
            _server.Add(new ReverseProxyModule("http://www.gauffin.com/user/", "http://192.168.1.128/");
            </example>
        </member>
        <member name="M:HttpServer.HttpModules.ReverseProxyModule.CanHandle(System.Uri)">
            <summary>
            Method that determines if an url should be handled or not by the module
            </summary>
            <param name="uri">Url requested by the client.</param>
            <returns>true if module should handle the url.</returns>
        </member>
        <member name="M:HttpServer.HttpModules.ReverseProxyModule.Process(HttpServer.IHttpRequest,HttpServer.IHttpResponse,HttpServer.Sessions.IHttpSession)">
            <summary>
            Method that process the url
            </summary>
            <param name="request">Information sent by the browser about the request</param>
            <param name="response">Information that is being sent back to the client.</param>
            <param name="session">Session used to </param>
        </member>
        <member name="T:HttpServer.FormDecoders.UrlDecoder">
            <summary>
            Can handle application/x-www-form-urlencoded
            </summary>
        </member>
        <member name="M:HttpServer.FormDecoders.UrlDecoder.Decode(System.IO.Stream,System.String,System.Text.Encoding)">
            <summary>
            </summary>
            <param name="stream">Stream containing the content</param>
            <param name="contentType">Content type (with any additional info like boundry). Content type is always supplied in lower case</param>
            <param name="encoding">Stream encoding</param>
            <returns>
            A HTTP form, or null if content could not be parsed.
            </returns>
            <exception cref="T:System.IO.InvalidDataException">If contents in the stream is not valid input data.</exception>
        </member>
        <member name="M:HttpServer.FormDecoders.UrlDecoder.CanParse(System.String)">
            <summary>
            Checks if the decoder can handle the mime type
            </summary>
            <param name="contentType">Content type (with any additional info like boundry). Content type is always supplied in lower case.</param>
            <returns>True if the decoder can parse the specified content type</returns>
        </member>
        <member name="T:HttpServer.FormDecoders.FormDecoderProvider">
            <summary>
            This provider is used to let us implement any type of form decoding we want without
            having to rewrite anything else in the server.
            </summary>
        </member>
        <member name="M:HttpServer.FormDecoders.FormDecoderProvider.Decode(System.String,System.IO.Stream,System.Text.Encoding)">
            <summary>
            
            </summary>
            <param name="contentType">Should contain boundary and type, as in: multipart/form-data; boundary=---------------------------230051238959</param>
            <param name="stream">Stream containing form data.</param>
            <param name="encoding">Encoding used when decoding the stream</param>
            <returns><see cref="F:HttpServer.HttpInput.Empty"/> if no parser was found.</returns>
            <exception cref="T:System.ArgumentException">If stream is null or not readable.</exception>
            <exception cref="T:System.IO.InvalidDataException">If stream contents cannot be decoded properly.</exception>
        </member>
        <member name="M:HttpServer.FormDecoders.FormDecoderProvider.Add(HttpServer.FormDecoders.IFormDecoder)">
            <summary>
            Add a decoder.
            </summary>
            <param name="decoder"></param>
            <exception cref="T:System.ArgumentNullException"></exception>
        </member>
        <member name="P:HttpServer.FormDecoders.FormDecoderProvider.Count">
            <summary>
            Number of added decoders.
            </summary>
        </member>
        <member name="P:HttpServer.FormDecoders.FormDecoderProvider.Decoders">
            <summary>
            Use with care.
            </summary>
        </member>
        <member name="P:HttpServer.FormDecoders.FormDecoderProvider.DefaultDecoder">
            <summary>
            Decoder used for unknown content types.
            </summary>
        </member>
        <member name="T:HttpServer.Exceptions.InternalServerException">
            <summary>
            The server encountered an unexpected condition which prevented it from fulfilling the request.
            </summary>
        </member>
        <member name="M:HttpServer.Exceptions.InternalServerException.#ctor">
            <summary>
            Initializes a new instance of the <see cref="T:HttpServer.Exceptions.InternalServerException"/> class.
            </summary>
        </member>
        <member name="M:HttpServer.Exceptions.InternalServerException.#ctor(System.String)">
            <summary>
            Initializes a new instance of the <see cref="T:HttpServer.Exceptions.InternalServerException"/> class.
            </summary>
            <param name="message">error message.</param>
        </member>
        <member name="M:HttpServer.Exceptions.InternalServerException.#ctor(System.String,System.Exception)">
            <summary>
            Initializes a new instance of the <see cref="T:HttpServer.Exceptions.InternalServerException"/> class.
            </summary>
            <param name="message">error message.</param>
            <param name="inner">inner exception.</param>
        </member>
        <member name="T:HttpServer.IHttpResponse">
            <summary>
            Response that is sent back to the web browser / client.
            
            A response can be sent if different ways. The easiest one is
            to just fill the Body stream with content, everything else
            will then be taken care of by the framework. The default content-type
            is text/html, you should change it if you send anything else.
            
            The second and slighty more complex way is to send the response
            as parts. Start with sending the header using the SendHeaders method and 
            then you can send the body using SendBody method, but do not forget
            to set ContentType and ContentLength before doing so.
            </summary>
            <example>
            public void MyHandler(IHttpRequest request, IHttpResponse response)
            {
              
            }
            </example>
        </member>
        <member name="M:HttpServer.IHttpResponse.AddHeader(System.String,System.String)">
            <summary>
            Add another header to the document.
            </summary>
            <param name="name">Name of the header, case sensitive, use lower cases.</param>
            <param name="value">Header values can span over multiple lines as long as each line starts with a white space. New line chars should be \r\n</param>
            <exception cref="T:System.InvalidOperationException">If headers already been sent.</exception>
            <exception cref="T:System.ArgumentException">If value conditions have not been met.</exception>
            <remarks>Adding any header will override the default ones and those specified by properties.</remarks>
        </member>
        <member name="M:HttpServer.IHttpResponse.Send">
            <summary>
            Send headers and body to the browser.
            </summary>
            <exception cref="T:System.InvalidOperationException">If content have already been sent.</exception>
        </member>
        <member name="M:HttpServer.IHttpResponse.SendBody(System.Byte[],System.Int32,System.Int32)">
            <summary>
            Make sure that you have specified ContentLength and sent the headers first.
            </summary>
            <param name="buffer"></param>
            <exception cref="T:System.InvalidOperationException">If headers have not been sent.</exception>
            <see cref="M:HttpServer.IHttpResponse.SendHeaders"/>
            <param name="offset">offest of first byte to send</param>
            <param name="count">number of bytes to send.</param>
            <seealso cref="M:HttpServer.IHttpResponse.Send"/>
            <seealso cref="M:HttpServer.IHttpResponse.SendHeaders"/>
            <remarks>This method can be used if you want to send body contents without caching them first. This
            is recommended for larger files to keep the memory usage low.</remarks>
        </member>
        <member name="M:HttpServer.IHttpResponse.SendBody(System.Byte[])">
            <summary>
            Make sure that you have specified ContentLength and sent the headers first.
            </summary>
            <param name="buffer"></param>
            <exception cref="T:System.InvalidOperationException">If headers have not been sent.</exception>
            <see cref="M:HttpServer.IHttpResponse.SendHeaders"/>
            <seealso cref="M:HttpServer.IHttpResponse.Send"/>
            <seealso cref="M:HttpServer.IHttpResponse.SendHeaders"/>
            <remarks>This method can be used if you want to send body contents without caching them first. This
            is recommended for larger files to keep the memory usage low.</remarks>
        </member>
        <member name="M:HttpServer.IHttpResponse.SendHeaders">
            <summary>
            Send headers to the client.
            </summary>
            <exception cref="T:System.InvalidOperationException">If headers already been sent.</exception>
            <seealso cref="M:HttpServer.IHttpResponse.AddHeader(System.String,System.String)"/>
            <seealso cref="M:HttpServer.IHttpResponse.Send"/>
            <seealso cref="M:HttpServer.IHttpResponse.SendBody(System.Byte[])"/>
        </member>
        <member name="M:HttpServer.IHttpResponse.Redirect(System.Uri)">
            <summary>
            Redirect client to somewhere else using the 302 status code.
            </summary>
            <param name="uri">Destination of the redirect</param>
            <exception cref="T:System.InvalidOperationException">If headers already been sent.</exception>
            <remarks>You can not do anything more with the request when a redirect have been done. This should be your last
            action.</remarks>
        </member>
        <member name="M:HttpServer.IHttpResponse.Redirect(System.String)">
            <summary>
            redirect to somewhere
            </summary>
            <param name="url">where the redirect should go</param>
            <remarks>
            No body are allowed when doing redirects.
            </remarks>
        </member>
        <member name="P:HttpServer.IHttpResponse.Body">
            <summary>
            The body stream is used to cache the body contents
            before sending everything to the client. It's the simplest
            way to serve documents.
            </summary>
        </member>
        <member name="P:HttpServer.IHttpResponse.ProtocolVersion">
            <summary>
            Defines the version of the HTTP Response for applications where it's required
            for this to be forced.
            </summary>
        </member>
        <member name="P:HttpServer.IHttpResponse.Chunked">
            <summary>
            The chunked encoding modifies the body of a message in order to
            transfer it as a series of chunks, each with its own size indicator,
            followed by an OPTIONAL trailer containing entity-header fields. This
            allows dynamically produced content to be transferred along with the
            information necessary for the recipient to verify that it has
            received the full message.
            </summary>
        </member>
        <member name="P:HttpServer.IHttpResponse.Connection">
            <summary>
            Kind of connection
            </summary>
        </member>
        <member name="P:HttpServer.IHttpResponse.Encoding">
            <summary>
            Encoding to use when sending stuff to the client.
            </summary>
            <remarks>Default is UTF8</remarks>
        </member>
        <member name="P:HttpServer.IHttpResponse.KeepAlive">
            <summary>
            Number of seconds to keep connection alive
            </summary>
            <remarks>Only used if Connection property is set to ConnectionType.KeepAlive</remarks>
        </member>
        <member name="P:HttpServer.IHttpResponse.Status">
            <summary>
            Status code that is sent to the client.
            </summary>
            <remarks>Default is HttpStatusCode.Ok</remarks>
        </member>
        <member name="P:HttpServer.IHttpResponse.Reason">
            <summary>
            Information about why a specific status code was used.
            </summary>
        </member>
        <member name="P:HttpServer.IHttpResponse.ContentLength">
            <summary>
            Size of the body. MUST be specified before sending the header,
            unless property Chunked is set to true.
            </summary>
        </member>
        <member name="P:HttpServer.IHttpResponse.ContentType">
            <summary>
            Kind of content in the body
            </summary>
            <remarks>Default is text/html</remarks>
        </member>
        <member name="P:HttpServer.IHttpResponse.HeadersSent">
            <summary>
            Headers have been sent to the client-
            </summary>
            <remarks>You can not send any additional headers if they have already been sent.</remarks>
        </member>
        <member name="P:HttpServer.IHttpResponse.Sent">
            <summary>
            The whole response have been sent.
            </summary>
        </member>
        <member name="P:HttpServer.IHttpResponse.Cookies">
            <summary>
            Cookies that should be created/changed.
            </summary>
        </member>
        <member name="T:HttpServer.ConnectionType">
            <summary>
            Type of HTTP connection
            </summary>
        </member>
        <member name="F:HttpServer.ConnectionType.Close">
            <summary>
            Connection is closed after each request-response
            </summary>
        </member>
        <member name="F:HttpServer.ConnectionType.KeepAlive">
            <summary>
            Connection is kept alive for X seconds (unless another request have been made)
            </summary>
        </member>
        <member name="T:HttpServer.HttpModules.WebSiteModule">
            <summary>
            The website module let's you handle multiple websites in the same server.
            It uses the "Host" header to check which site you want.
            </summary>
            <remarks>It's recommended that you do not
            add any other modules to HttpServer if you are using the website module. Instead,
            add all wanted modules to each website.</remarks>
        </member>
        <member name="M:HttpServer.HttpModules.WebSiteModule.#ctor(System.String,System.String)">
            <summary>
            
            </summary>
            <param name="host">domain name that should be handled.</param>
            <param name="name"></param>
        </member>
        <member name="M:HttpServer.HttpModules.WebSiteModule.Process(HttpServer.IHttpRequest,HttpServer.IHttpResponse,HttpServer.Sessions.IHttpSession)">
            <summary>
            Method that process the url
            </summary>
            <param name="request">Information sent by the browser about the request</param>
            <param name="response">Information that is being sent back to the client.</param>
            <param name="session">Session used to </param>
        </member>
        <member name="P:HttpServer.HttpModules.WebSiteModule.SiteName">
            <summary>
            Name of site.
            </summary>
        </member>
        <member name="T:HttpServer.HttpModules.HttpModuleExceptionEventArgs">
            <summary>
            Used to inform http server that 
            </summary>
        </member>
        <member name="M:HttpServer.HttpModules.HttpModuleExceptionEventArgs.#ctor(System.Exception)">
            <summary>
            Eventarguments used when an exception is thrown by a module
            </summary>
            <param name="e">the exception</param>
        </member>
        <member name="P:HttpServer.HttpModules.HttpModuleExceptionEventArgs.Exception">
            <summary>
            Exception thrown in a module
            </summary>
        </member>
        <member name="T:HttpServer.HttpInputItem">
            <summary>
            represents a HTTP input item. Each item can have multiple sub items, a sub item
            is made in a HTML form by using square brackets
            </summary>
            <example>
              // <input type="text" name="user[FirstName]" value="jonas" /> becomes:
              Console.WriteLine("Value: {0}", form["user"]["FirstName"].Value);
            </example>
            <remarks>
            All names in a form SHOULD be in lowercase.
            </remarks>
        </member>
        <member name="F:HttpServer.HttpInputItem.Empty">
            <summary> Representation of a non-initialized <see cref="T:HttpServer.HttpInputItem"/>.</summary>
        </member>
        <member name="M:HttpServer.HttpInputItem.#ctor(System.String,System.String)">
            <summary>
            Initializes an input item setting its name/identifier and value
            </summary>
            <param name="name">Parameter name/id</param>
            <param name="value">Parameter value</param>
        </member>
        <member name="M:HttpServer.HttpInputItem.#ctor(HttpServer.HttpInputItem)">
            <summary>Creates a deep copy of the item specified</summary>
            <param name="item">The item to copy</param>
            <remarks>The function makes a deep copy of quite a lot which can be slow</remarks>
        </member>
        <member name="M:HttpServer.HttpInputItem.Add(System.String)">
            <summary>
            Add another value to this item
            </summary>
            <param name="value">Value to add.</param>
            <exception cref="T:System.InvalidOperationException">Cannot add stuff to <see cref="F:HttpServer.HttpInput.Empty"/>.</exception>
        </member>
        <member name="M:HttpServer.HttpInputItem.Contains(System.String)">
            <summary>
            checks if a sub-item exists (and has a value).
            </summary>
            <param name="name">name in lower case</param>
            <returns>true if the sub-item exists and has a value; otherwise false.</returns>
        </member>
        <member name="M:HttpServer.HttpInputItem.ToString">
            <summary> Returns a formatted representation of the instance with the values of all contained parameters </summary>
        </member>
        <member name="M:HttpServer.HttpInputItem.ToString(System.String,System.Boolean)">
            <summary>
            Outputs the string in a formatted manner
            </summary>
            <param name="prefix">A prefix to append, used internally</param>
            <param name="asQuerySting">produce a query string</param>
        </member>
        <member name="M:HttpServer.HttpInputItem.Add(System.String,System.String)">
            <summary>
            Add a sub item.
            </summary>
            <param name="name">Can contain array formatting, the item is then parsed and added in multiple levels</param>
            <param name="value">Value to add.</param>
            <exception cref="T:System.ArgumentNullException">Argument is null.</exception>
            <exception cref="T:System.InvalidOperationException">Cannot add stuff to <see cref="F:HttpServer.HttpInput.Empty"/>.</exception>
        </member>
        <member name="M:HttpServer.HttpInputItem.System#Collections#Generic#IEnumerable{HttpServer#HttpInputItem}#GetEnumerator">
            <summary>
            Returns an enumerator that iterates through the collection.
            </summary>
            
            <returns>
            A <see cref="T:System.Collections.Generic.IEnumerator`1"></see> that can be used to iterate through the collection.
            </returns>
            <filterpriority>1</filterpriority>
        </member>
        <member name="M:HttpServer.HttpInputItem.GetEnumerator">
            <summary>
            Returns an enumerator that iterates through a collection.
            </summary>
            
            <returns>
            An <see cref="T:System.Collections.IEnumerator"></see> object that can be used to iterate through the collection.
            </returns>
            <filterpriority>2</filterpriority>
        </member>
        <member name="M:HttpServer.HttpInputItem.ToString(System.String)">
            <summary>
            Outputs the string in a formatted manner
            </summary>
            <param name="prefix">A prefix to append, used internally</param>
            <returns></returns>
        </member>
        <member name="P:HttpServer.HttpInputItem.Count">
            <summary>
            Number of values
            </summary>
        </member>
        <member name="P:HttpServer.HttpInputItem.Item(System.String)">
            <summary>
            Get a sub item
            </summary>
            <param name="name">name in lower case.</param>
            <returns><see cref="F:HttpServer.HttpInputItem.Empty"/> if no item was found.</returns>
        </member>
        <member name="P:HttpServer.HttpInputItem.Name">
            <summary>
            Name of item (in lower case).
            </summary>
        </member>
        <member name="P:HttpServer.HttpInputItem.Value">
            <summary>
            Returns the first value, or null if no value exist.
            </summary>
        </member>
        <member name="P:HttpServer.HttpInputItem.LastValue">
            <summary>
            Returns the last value, or null if no value exist.
            </summary>
        </member>
        <member name="P:HttpServer.HttpInputItem.Values">
            <summary>
            Returns the list with values.
            </summary>
        </member>
        <member name="P:HttpServer.HttpInputItem.HttpServer#IHttpInput#Item(System.String)">
            <summary>
            
            </summary>
            <param name="name">name in lower case</param>
            <returns></returns>
        </member>
        <member name="T:HttpServer.Helpers.ResourceManager">
            <summary>Class to handle loading of resource files</summary>
        </member>
        <member name="M:HttpServer.Helpers.ResourceManager.#ctor">
            <summary>
            Initializes a new instance of the <see cref="T:HttpServer.Helpers.ResourceManager"/> class.
            </summary>
        </member>
        <member name="M:HttpServer.Helpers.ResourceManager.#ctor(HttpServer.ILogWriter)">
            <summary>
            Initializes a new instance of the <see cref="T:HttpServer.Helpers.ResourceManager"/> class.
            </summary>
            <param name="writer">logger.</param>
        </member>
        <member name="M:HttpServer.Helpers.ResourceManager.LoadResources(System.String,System.Reflection.Assembly,System.String)">
            <summary>
            Loads resources from a namespace in the given assembly to an URI
            </summary>
            <param name="toUri">The URI to map the resources to</param>
            <param name="fromAssembly">The assembly in which the resources reside</param>
            <param name="fromNamespace">The namespace from which to load the resources</param>
            <usage>
            <code>
            resourceLoader.LoadResources("/user/", typeof(User).Assembly, "MyLib.Models.User.Views");
            </code>
            Will make the resource MyLib.Models.User.Views.list.Haml accessible via /user/list.haml or /user/list/
            </usage>
            <returns>The amount of loaded files, giving you the possibility of making sure the resources needed gets loaded</returns>
            <exception cref="T:System.InvalidOperationException">If a resource has already been mapped to an uri</exception>
        </member>
        <member name="M:HttpServer.Helpers.ResourceManager.GetResourceStream(System.String)">
            <summary>
            Retrieves a stream for the specified resource path if loaded otherwise null
            </summary>
            <param name="path">Path to the resource to retrieve a stream for</param>
            <returns>A stream or null if the resource couldn't be found</returns>
        </member>
        <member name="M:HttpServer.Helpers.ResourceManager.GetFiles(System.String)">
            <summary>
            Fetch all files from the resource that matches the specified arguments.
            </summary>
            <param name="path">The path to the resource to extract</param>
            <returns>
            a list of files if found; or an empty array if no files are found.
            </returns>
            <exception cref="T:System.ArgumentException">Search path must end with an asterisk for finding arbitrary files</exception>
        </member>
        <member name="M:HttpServer.Helpers.ResourceManager.GetFiles(System.String,System.String)">
            <summary>
            Fetch all files from the resource that matches the specified arguments.
            </summary>
            <param name="path">Where the file should reside.</param>
            <param name="filename">Files to check</param>
            <returns>
            a list of files if found; or an empty array if no files are found.
            </returns>
        </member>
        <member name="M:HttpServer.Helpers.ResourceManager.ContainsResource(System.String)">
            <summary>
            Returns whether or not the loader has an instance of the file requested
            </summary>
            <param name="filename">The name of the template/file</param>
            <returns>True if the loader can provide the file</returns>
        </member>
        <member name="T:HttpServer.Parser.RequestLineEventArgs">
            <summary>
            Used when the request line have been successfully parsed.
            </summary>
        </member>
        <member name="M:HttpServer.Parser.RequestLineEventArgs.#ctor(System.String,System.String,System.String)">
            <summary>
            Initializes a new instance of the <see cref="T:HttpServer.Parser.RequestLineEventArgs"/> class.
            </summary>
            <param name="httpMethod">The HTTP method.</param>
            <param name="uriPath">The URI path.</param>
            <param name="httpVersion">The HTTP version.</param>
        </member>
        <member name="M:HttpServer.Parser.RequestLineEventArgs.#ctor">
            <summary>
            Initializes a new instance of the <see cref="T:HttpServer.Parser.RequestLineEventArgs"/> class.
            </summary>
        </member>
        <member name="P:HttpServer.Parser.RequestLineEventArgs.HttpMethod">
            <summary>
            Gets or sets http method.
            </summary>
            <remarks>
            Should be one of the methods declared in <see cref="T:HttpServer.Method"/>.
            </remarks>
        </member>
        <member name="P:HttpServer.Parser.RequestLineEventArgs.HttpVersion">
            <summary>
            Gets or sets the version of the HTTP protocol that the client want to use.
            </summary>
        </member>
        <member name="P:HttpServer.Parser.RequestLineEventArgs.UriPath">
            <summary>
            Gets or sets requested URI path.
            </summary>
        </member>
        <member name="T:HttpServer.IHttpContextHandler">
            <summary>
            Class that receives Requests from a <see cref="T:HttpServer.IHttpClientContext"/>.
            </summary>
        </member>
        <member name="M:HttpServer.IHttpContextHandler.ClientDisconnected(HttpServer.IHttpClientContext,System.Net.Sockets.SocketError)">
            <summary>
            Client have been disconnected.
            </summary>
            <param name="client">Client that was disconnected.</param>
            <param name="error">Reason</param>
            <see cref="T:HttpServer.IHttpClientContext"/>
        </member>
        <member name="M:HttpServer.IHttpContextHandler.RequestReceived(HttpServer.IHttpClientContext,HttpServer.IHttpRequest)">
            <summary>
            Invoked when a client context have received a new HTTP request
            </summary>
            <param name="client">Client that received the request.</param>
            <param name="request">Request that was received.</param>
            <see cref="T:HttpServer.IHttpClientContext"/>
        </member>
        <member name="T:HttpServer.HttpForm">
            <summary>Container for posted form data</summary>
        </member>
        <member name="F:HttpServer.HttpForm.EmptyForm">
            <summary>Instance to help mark a non-initialized form</summary>
        </member>
        <member name="M:HttpServer.HttpForm.#ctor">
            <summary>Initializes a form container with the specified name</summary>
        </member>
        <member name="M:HttpServer.HttpForm.#ctor(HttpServer.HttpInput)">
            <summary>
            Makes a deep copy of the input
            </summary>
            <param name="input">The input to copy</param>
        </member>
        <member name="M:HttpServer.HttpForm.AddFile(HttpServer.HttpFile)">
            <summary>
            Adds a file to the collection of posted files
            </summary>
            <param name="file">The file to add</param>
            <exception cref="T:System.ArgumentException">If the file is already added</exception>
            <exception cref="T:System.ArgumentNullException">If file is null</exception>
            <exception cref="T:System.InvalidOperationException">If the instance is HttpForm.EmptyForm which cannot be modified</exception>
        </member>
        <member name="M:HttpServer.HttpForm.ContainsFile(System.String)">
            <summary>
            Checks if the form contains a specified file
            </summary>
            <param name="name">Field name of the file parameter</param>
            <returns>True if the file exists</returns>
            <exception cref="T:System.InvalidOperationException">If the instance is HttpForm.EmptyForm which cannot be modified</exception>
        </member>
        <member name="M:HttpServer.HttpForm.GetFile(System.String)">
            <summary>
            Retrieves a file held by by the form
            </summary>
            <param name="name">The identifier of the file</param>
            <returns>The requested file or null if the file was not found</returns>
            <exception cref="T:System.ArgumentNullException">If name is null or empty</exception>
            <exception cref="T:System.InvalidOperationException">If the instance is HttpForm.EmptyForm which cannot be modified</exception>
        </member>
        <member name="M:HttpServer.HttpForm.Clear">
            <summary>Disposes all held HttpFile's and resets values</summary>
        </member>
        <member name="P:HttpServer.HttpForm.Files">
            <summary>
            Retrieves the number of files added to the <see cref="T:HttpServer.HttpForm"/>
            </summary>
            <returns>0 if no files are added</returns>
        </member>
        <member name="T:HttpServer.HttpClientContext">
            <summary>
            Contains a connection to a browser/client.
            </summary>
            <remarks>
            Remember to <see cref="M:HttpServer.HttpClientContext.Start"/> after you have hooked the <see cref="E:HttpServer.HttpClientContext.RequestReceived"/> event.
            </remarks>
            TODO: Maybe this class should be broken up into HttpClientChannel and HttpClientContext?
        </member>
        <member name="M:HttpServer.HttpClientContext.#ctor(System.Boolean,System.Net.IPEndPoint,System.IO.Stream,HttpServer.IRequestParserFactory,System.Int32,System.Net.Sockets.Socket)">
            <summary>
            Initializes a new instance of the <see cref="T:HttpServer.HttpClientContext"/> class.
            </summary>
            <param name="secured">true if the connection is secured (SSL/TLS)</param>
            <param name="remoteEndPoint">client that connected.</param>
            <param name="stream">Stream used for communication</param>
            <param name="parserFactory">Used to create a <see cref="T:HttpServer.IHttpRequestParser"/>.</param>
            <param name="bufferSize">Size of buffer to use when reading data. Must be at least 4096 bytes.</param>
            <exception cref="T:System.Net.Sockets.SocketException">If <see cref="M:System.Net.Sockets.Socket.BeginReceive(System.Byte[],System.Int32,System.Int32,System.Net.Sockets.SocketFlags,System.AsyncCallback,System.Object)"/> fails</exception>
            <exception cref="T:System.ArgumentException">Stream must be writable and readable.</exception>
        </member>
        <member name="M:HttpServer.HttpClientContext.OnBodyBytesReceived(System.Object,HttpServer.Parser.BodyEventArgs)">
            <summary>
            Process incoming body bytes.
            </summary>
            <param name="sender"><see cref="T:HttpServer.IHttpRequestParser"/></param>
            <param name="e">Bytes</param>
        </member>
        <member name="M:HttpServer.HttpClientContext.OnHeaderReceived(System.Object,HttpServer.Parser.HeaderEventArgs)">
            <summary>
            
            </summary>
            <param name="sender"></param>
            <param name="e"></param>
        </member>
        <member name="M:HttpServer.HttpClientContext.Start">
            <summary>
            Start reading content.
            </summary>
            <remarks>
            Make sure to call base.Start() if you override this method.
            </remarks>
        </member>
        <member name="M:HttpServer.HttpClientContext.Cleanup">
            <summary>
            Clean up context.
            </summary>
            <remarks>
            Make sure to call base.Cleanup() if you override the method.
            </remarks>
        </member>
        <member name="M:HttpServer.HttpClientContext.Disconnect(System.Net.Sockets.SocketError)">
            <summary>
            Disconnect from client
            </summary>
            <param name="error">error to report in the <see cref="E:HttpServer.HttpClientContext.Disconnected"/> event.</param>
        </member>
        <member name="M:HttpServer.HttpClientContext.Respond(System.String,System.Net.HttpStatusCode,System.String,System.String,System.String)">
            <summary>
            Send a response.
            </summary>
            <param name="httpVersion">Either <see cref="F:HttpServer.HttpHelper.HTTP10"/> or <see cref="F:HttpServer.HttpHelper.HTTP11"/></param>
            <param name="statusCode">HTTP status code</param>
            <param name="reason">reason for the status code.</param>
            <param name="body">HTML body contents, can be null or empty.</param>
            <param name="contentType">A content type to return the body as, i.e. 'text/html' or 'text/plain', defaults to 'text/html' if null or empty</param>
            <exception cref="T:System.ArgumentException">If <paramref name="httpVersion"/> is invalid.</exception>
        </member>
        <member name="M:HttpServer.HttpClientContext.Respond(System.String,System.Net.HttpStatusCode,System.String)">
            <summary>
            Send a response.
            </summary>
            <param name="httpVersion">Either <see cref="F:HttpServer.HttpHelper.HTTP10"/> or <see cref="F:HttpServer.HttpHelper.HTTP11"/></param>
            <param name="statusCode">HTTP status code</param>
            <param name="reason">reason for the status code.</param>
        </member>
        <member name="M:HttpServer.HttpClientContext.Respond(System.String)">
            <summary>
            Send a response.
            </summary>
            <exception cref="T:System.ArgumentNullException"></exception>
        </member>
        <member name="M:HttpServer.HttpClientContext.Send(System.Byte[])">
            <summary>
            send a whole buffer
            </summary>
            <param name="buffer">buffer to send</param>
            <exception cref="T:System.ArgumentNullException"></exception>
        </member>
        <member name="M:HttpServer.HttpClientContext.Send(System.Byte[],System.Int32,System.Int32)">
            <summary>
            Send data using the stream
            </summary>
            <param name="buffer">Contains data to send</param>
            <param name="offset">Start position in buffer</param>
            <param name="size">number of bytes to send</param>
            <exception cref="T:System.ArgumentNullException"></exception>
            <exception cref="T:System.ArgumentOutOfRangeException"></exception>
        </member>
        <member name="E:HttpServer.HttpClientContext.Cleaned">
            <summary>
            This context have been cleaned, which means that it can be reused.
            </summary>
        </member>
        <member name="E:HttpServer.HttpClientContext.Started">
            <summary>
            Context have been started (a new client have connected)
            </summary>
        </member>
        <member name="P:HttpServer.HttpClientContext.CurrentRequest">
            <summary>
            Overload to specify own type.
            </summary>
            <remarks>
            Must be specified before the context is being used.
            </remarks>
        </member>
        <member name="P:HttpServer.HttpClientContext.Secured">
            <summary>
            Using SSL or other encryption method.
            </summary>
        </member>
        <member name="P:HttpServer.HttpClientContext.IsSecured">
            <summary>
            Using SSL or other encryption method.
            </summary>
        </member>
        <member name="P:HttpServer.HttpClientContext.LogWriter">
            <summary>
            Specify which logger to use.
            </summary>
        </member>
        <member name="P:HttpServer.HttpClientContext.Stream">
            <summary>
            Gets or sets the network stream.
            </summary>
        </member>
        <member name="P:HttpServer.HttpClientContext.RemoteAddress">
            <summary>
            Gets or sets IP address that the client connected from.
            </summary>
        </member>
        <member name="P:HttpServer.HttpClientContext.RemotePort">
            <summary>
            Gets or sets port that the client connected from.
            </summary>
        </member>
        <member name="E:HttpServer.HttpClientContext.Disconnected">
            <summary>
            The context have been disconnected.
            </summary>
            <remarks>
            Event can be used to clean up a context, or to reuse it.
            </remarks>
        </member>
        <member name="E:HttpServer.HttpClientContext.RequestReceived">
            <summary>
            A request have been received in the context.
            </summary>
        </member>
        <member name="T:HttpServer.Helpers.XmlHelper">
            <summary>
            Helpers to make XML handling easier
            </summary>
        </member>
        <member name="M:HttpServer.Helpers.XmlHelper.Serialize(System.Object)">
            <summary>
            Serializes object to XML.
            </summary>
            <param name="value">object to serialize.</param>
            <returns>XML</returns>
            <remarks>
            Removes name spaces and adds indentation
            </remarks>
        </member>
        <member name="M:HttpServer.Helpers.XmlHelper.Deserialize``1(System.String)">
            <summary>
            Create an object from a XML string
            </summary>
            <typeparam name="T">Type of object</typeparam>
            <param name="xml">XML string</param>
            <returns>object</returns>
        </member>
        <member name="M:HttpServer.FormDecoders.HttpMultipart.ReadLine">
            <summary>
            
            </summary>
            <returns></returns>
            <exception cref="T:System.ArgumentOutOfRangeException"></exception>
            <exception cref="T:System.ObjectDisposedException"></exception>
        </member>
        <member name="T:HttpServer.FormDecoders.HttpMultipart.Element">
            <summary>Represents a field in a multipart form</summary>
        </member>
        <member name="T:HttpServer.Check">
            <summary>
            Small design by contract implementation.
            </summary>
        </member>
        <member name="M:HttpServer.Check.NotEmpty(System.String,System.String)">
            <summary>
            Check whether a parameter is empty.
            </summary>
            <param name="value">Parameter value</param>
            <param name="parameterOrErrorMessage">Parameter name, or error description.</param>
            <exception cref="T:System.ArgumentException">value is empty.</exception>
        </member>
        <member name="M:HttpServer.Check.Require(System.Object,System.String)">
            <summary>
            Checks whether a parameter is null.
            </summary>
            <param name="value">Parameter value</param>
            <param name="parameterOrErrorMessage">Parameter name, or error description.</param>
            <exception cref="T:System.ArgumentNullException">value is null.</exception>
        </member>
        <member name="M:HttpServer.Check.Min(System.Int32,System.Object,System.String)">
            <summary>
            Checks whether a parameter is null.
            </summary>
            <param name="minValue"></param>
            <param name="value">Parameter value</param>
            <param name="parameterOrErrorMessage">Parameter name, or error description.</param>
            <exception cref="T:System.ArgumentException">value is null.</exception>
        </member>
        <member name="T:HttpServer.LogPrio">
            <summary>
            Priority for log entries
            </summary>
            <seealso cref="T:HttpServer.ILogWriter"/>
        </member>
        <member name="F:HttpServer.LogPrio.Trace">
            <summary>
            Very detailed logs to be able to follow the flow of the program.
            </summary>
        </member>
        <member name="F:HttpServer.LogPrio.Debug">
            <summary>
            Logs to help debug errors in the application
            </summary>
        </member>
        <member name="F:HttpServer.LogPrio.Info">
            <summary>
            Information to be able to keep track of state changes etc.
            </summary>
        </member>
        <member name="F:HttpServer.LogPrio.Warning">
            <summary>
            Something did not go as we expected, but it's no problem.
            </summary>
        </member>
        <member name="F:HttpServer.LogPrio.Error">
            <summary>
            Something that should not fail failed, but we can still keep
            on going.
            </summary>
        </member>
        <member name="F:HttpServer.LogPrio.Fatal">
            <summary>
            Something failed, and we cannot handle it properly.
            </summary>
        </member>
        <member name="T:HttpServer.ILogWriter">
            <summary>
            Interface used to write to log files.
            </summary>
        </member>
        <member name="M:HttpServer.ILogWriter.Write(System.Object,HttpServer.LogPrio,System.String)">
            <summary>
            Write an entry to the log file.
            </summary>
            <param name="source">object that is writing to the log</param>
            <param name="priority">importance of the log message</param>
            <param name="message">the message</param>
        </member>
        <member name="T:HttpServer.ConsoleLogWriter">
            <summary>
            This class writes to the console. It colors the output depending on the logprio and includes a 3-level stacktrace (in debug mode)
            </summary>
            <seealso cref="T:HttpServer.ILogWriter"/>
        </member>
        <member name="F:HttpServer.ConsoleLogWriter.Instance">
            <summary>
            The actual instance of this class.
            </summary>
        </member>
        <member name="M:HttpServer.ConsoleLogWriter.Write(System.Object,HttpServer.LogPrio,System.String)">
            <summary>
            Logwriters the specified source.
            </summary>
            <param name="source">object that wrote the logentry.</param>
            <param name="prio">Importance of the log message</param>
            <param name="message">The message.</param>
        </member>
        <member name="M:HttpServer.ConsoleLogWriter.GetColor(HttpServer.LogPrio)">
            <summary>
            Get color for the specified logprio
            </summary>
            <param name="prio">prio for the log entry</param>
            <returns>A <see cref="T:System.ConsoleColor"/> for the prio</returns>
        </member>
        <member name="T:HttpServer.NullLogWriter">
            <summary>
            Default log writer, writes everything to null (nowhere).
            </summary>
            <seealso cref="T:HttpServer.ILogWriter"/>
        </member>
        <member name="F:HttpServer.NullLogWriter.Instance">
            <summary>
            The logging instance.
            </summary>
        </member>
        <member name="M:HttpServer.NullLogWriter.Write(System.Object,HttpServer.LogPrio,System.String)">
            <summary>
            Writes everything to null
            </summary>
            <param name="source">object that wrote the log entry.</param>
            <param name="prio">Importance of the log message</param>
            <param name="message">The message.</param>
        </member>
        <member name="T:HttpServer.HttpResponse">
            <summary>
            Response that is sent back to the web browser / client.
            </summary>
            <remarks>
            <para>
            A response can be sent if different ways. The easiest one is
            to just fill the Body stream with content, everything else
            will then be taken care of by the framework. The default content-type
            is text/html, you should change it if you send anything else.
            </para><para>
            The second and slightly more complex way is to send the response
            as parts. Start with sending the header using the SendHeaders method and 
            then you can send the body using SendBody method, but do not forget
            to set <see cref="P:HttpServer.HttpResponse.ContentType"/> and <see cref="P:HttpServer.HttpResponse.ContentLength"/> before doing so.
            </para>
            </remarks>
            <example>
            <code>
            // Example using response body.
            class MyModule : HttpModule
            {
                        public override bool Process(IHttpRequest request, IHttpResponse response, IHttpSession session)
                        {
                                StreamWriter writer = new StreamWriter(response.Body);
                                writer.WriteLine("Hello dear World!");
                                writer.Flush();
            
                                // return true to tell webserver that we've handled the url
                                return true;
                        }
            }
            </code>
            </example>
            todo: add two examples, using SendHeaders/SendBody and just the Body stream.
        </member>
        <member name="M:HttpServer.HttpResponse.#ctor(HttpServer.IHttpClientContext,HttpServer.IHttpRequest)">
            <summary>
            Initializes a new instance of the <see cref="T:HttpServer.IHttpResponse"/> class.
            </summary>
            <param name="context">Client that send the <see cref="T:HttpServer.IHttpRequest"/>.</param>
            <param name="request">Contains information of what the client want to receive.</param>
            <exception cref="T:System.ArgumentException"><see cref="P:HttpServer.IHttpRequest.HttpVersion"/> cannot be empty.</exception>
        </member>
        <member name="M:HttpServer.HttpResponse.#ctor(HttpServer.IHttpClientContext,System.String,HttpServer.ConnectionType)">
            <summary>
            Initializes a new instance of the <see cref="T:HttpServer.IHttpResponse"/> class.
            </summary>
            <param name="context">Client that send the <see cref="T:HttpServer.IHttpRequest"/>.</param>
            <param name="httpVersion">Version of HTTP protocol that the client uses.</param>
            <param name="connectionType">Type of HTTP connection used.</param>
        </member>
        <member name="M:HttpServer.HttpResponse.AddHeader(System.String,System.String)">
            <summary>
            Add another header to the document.
            </summary>
            <param name="name">Name of the header, case sensitive, use lower cases.</param>
            <param name="value">Header values can span over multiple lines as long as each line starts with a white space. New line chars should be \r\n</param>
            <exception cref="T:System.InvalidOperationException">If headers already been sent.</exception>
            <exception cref="T:System.ArgumentException">If value conditions have not been met.</exception>
            <remarks>Adding any header will override the default ones and those specified by properties.</remarks>
        </member>
        <member name="M:HttpServer.HttpResponse.Send">
            <summary>
            Send headers and body to the browser.
            </summary>
            <exception cref="T:System.InvalidOperationException">If content have already been sent.</exception>
        </member>
        <member name="M:HttpServer.HttpResponse.SendBody(System.Byte[],System.Int32,System.Int32)">
            <summary>
            Make sure that you have specified <see cref="P:HttpServer.HttpResponse.ContentLength"/> and sent the headers first.
            </summary>
            <param name="buffer"></param>
            <exception cref="T:System.InvalidOperationException">If headers have not been sent.</exception>
            <see cref="M:HttpServer.HttpResponse.SendHeaders"/>
            <param name="offset">offset of first byte to send</param>
            <param name="count">number of bytes to send.</param>
            <seealso cref="M:HttpServer.HttpResponse.Send"/>
            <seealso cref="M:HttpServer.HttpResponse.SendHeaders"/>
            <remarks>This method can be used if you want to send body contents without caching them first. This
            is recommended for larger files to keep the memory usage low.</remarks>
        </member>
        <member name="M:HttpServer.HttpResponse.SendBody(System.Byte[])">
            <summary>
            Make sure that you have specified <see cref="P:HttpServer.HttpResponse.ContentLength"/> and sent the headers first.
            </summary>
            <param name="buffer"></param>
            <exception cref="T:System.InvalidOperationException">If headers have not been sent.</exception>
            <see cref="M:HttpServer.HttpResponse.SendHeaders"/>
            <seealso cref="M:HttpServer.HttpResponse.Send"/>
            <seealso cref="M:HttpServer.HttpResponse.SendHeaders"/>
            <remarks>This method can be used if you want to send body contents without caching them first. This
            is recommended for larger files to keep the memory usage low.</remarks>
        </member>
        <member name="M:HttpServer.HttpResponse.SendHeaders">
            <summary>
            Send headers to the client.
            </summary>
            <exception cref="T:System.InvalidOperationException">If headers already been sent.</exception>
            <seealso cref="M:HttpServer.HttpResponse.AddHeader(System.String,System.String)"/>
            <seealso cref="M:HttpServer.HttpResponse.Send"/>
            <seealso cref="M:HttpServer.HttpResponse.SendBody(System.Byte[])"/>
        </member>
        <member name="M:HttpServer.HttpResponse.Redirect(System.Uri)">
            <summary>
            Redirect client to somewhere else using the 302 status code.
            </summary>
            <param name="uri">Destination of the redirect</param>
            <exception cref="T:System.InvalidOperationException">If headers already been sent.</exception>
            <remarks>You can not do anything more with the request when a redirect have been done. This should be your last
            action.</remarks>
        </member>
        <member name="M:HttpServer.HttpResponse.Redirect(System.String)">
            <summary>
            redirect to somewhere
            </summary>
            <param name="url">where the redirect should go</param>
            <remarks>
            No body are allowed when doing redirects.
            </remarks>
        </member>
        <member name="P:HttpServer.HttpResponse.Body">
            <summary>
            The body stream is used to cache the body contents
            before sending everything to the client. It's the simplest
            way to serve documents.
            </summary>
        </member>
        <member name="P:HttpServer.HttpResponse.Chunked">
            <summary>
            The chunked encoding modifies the body of a message in order to
            transfer it as a series of chunks, each with its own size indicator,
            followed by an OPTIONAL trailer containing entity-header fields. This
            allows dynamically produced content to be transferred along with the
            information necessary for the recipient to verify that it has
            received the full message.
            </summary>
        </member>
        <member name="P:HttpServer.HttpResponse.ProtocolVersion">
            <summary>
            Defines the version of the HTTP Response for applications where it's required
            for this to be forced.
            </summary>
        </member>
        <member name="P:HttpServer.HttpResponse.Connection">
            <summary>
            Kind of connection
            </summary>
        </member>
        <member name="P:HttpServer.HttpResponse.Encoding">
            <summary>
            Encoding to use when sending stuff to the client.
            </summary>
            <remarks>Default is UTF8</remarks>
        </member>
        <member name="P:HttpServer.HttpResponse.KeepAlive">
            <summary>
            Number of seconds to keep connection alive
            </summary>
            <remarks>Only used if Connection property is set to <see cref="F:HttpServer.ConnectionType.KeepAlive"/>.</remarks>
        </member>
        <member name="P:HttpServer.HttpResponse.Status">
            <summary>
            Status code that is sent to the client.
            </summary>
            <remarks>Default is <see cref="F:System.Net.HttpStatusCode.OK"/></remarks>
        </member>
        <member name="P:HttpServer.HttpResponse.Reason">
            <summary>
            Information about why a specific status code was used.
            </summary>
        </member>
        <member name="P:HttpServer.HttpResponse.ContentLength">
            <summary>
            Size of the body. MUST be specified before sending the header,
            unless property Chunked is set to true.
            </summary>
        </member>
        <member name="P:HttpServer.HttpResponse.ContentType">
            <summary>
            Kind of content in the body
            </summary>
            <remarks>Default type is "text/html"</remarks>
        </member>
        <member name="P:HttpServer.HttpResponse.HeadersSent">
            <summary>
            Headers have been sent to the client-
            </summary>
            <remarks>You can not send any additional headers if they have already been sent.</remarks>
        </member>
        <member name="P:HttpServer.HttpResponse.Sent">
            <summary>
            The whole response have been sent.
            </summary>
        </member>
        <member name="P:HttpServer.HttpResponse.Cookies">
            <summary>
            Cookies that should be created/changed.
            </summary>
        </member>
        <member name="T:HttpServer.Exceptions.NotFoundException">
            <summary>
            The requested resource was not found in the web server.
            </summary>
        </member>
        <member name="M:HttpServer.Exceptions.NotFoundException.#ctor(System.String,System.Exception)">
            <summary>
            Create a new exception
            </summary>
            <param name="message">message describing the error</param>
            <param name="inner">inner exception</param>
        </member>
        <member name="M:HttpServer.Exceptions.NotFoundException.#ctor(System.String)">
            <summary>
            Create a new exception
            </summary>
            <param name="message">message describing the error</param>
        </member>
        <member name="T:HttpServer.ContextTimeoutManager">
            <summary>
            Timeout Manager.   Checks for dead clients.  Clients with open connections that are not doing anything.   Closes sessions opened with keepalive.
            </summary>
        </member>
        <member name="M:HttpServer.ContextTimeoutManager.ProcessContextTimeouts">
            <summary>
            Causes the watcher to immediately check the connections. 
            </summary>
        </member>
        <member name="M:HttpServer.ContextTimeoutManager.EnvironmentTickCount">
            <summary>
            Environment.TickCount is an int but it counts all 32 bits so it goes positive
            and negative every 24.9 days. This trims down TickCount so it doesn't wrap
            for the callers. 
            This trims it to a 12 day interval so don't let your frame time get too long.
            </summary>
            <returns></returns>
        </member>
        <member name="M:HttpServer.ContextTimeoutManager.EnvironmentTickCountSubtract(System.Int32,System.Int32)">
            <summary>
            Environment.TickCount is an int but it counts all 32 bits so it goes positive
            and negative every 24.9 days. Subtracts the passed value (previously fetched by
            'EnvironmentTickCount()') and accounts for any wrapping.
            </summary>
            <param name="newValue"></param>
            <param name="prevValue"></param>
            <returns>subtraction of passed prevValue from current Environment.TickCount</returns>
        </member>
        <member name="M:HttpServer.ContextTimeoutManager.EnvironmentTickCountAdd(System.Int32,System.Int32)">
            <summary>
            Environment.TickCount is an int but it counts all 32 bits so it goes positive
            and negative every 24.9 days. Subtracts the passed value (previously fetched by
            'EnvironmentTickCount()') and accounts for any wrapping.
            </summary>
            <param name="newValue"></param>
            <param name="prevValue"></param>
            <returns>subtraction of passed prevValue from current Environment.TickCount</returns>
        </member>
        <member name="M:HttpServer.ContextTimeoutManager.EnvironmentTickCountSubtract(System.Int32)">
            <summary>
            Environment.TickCount is an int but it counts all 32 bits so it goes positive
            and negative every 24.9 days. Subtracts the passed value (previously fetched by
            'EnvironmentTickCount()') and accounts for any wrapping.
            </summary>
            <returns>subtraction of passed prevValue from current Environment.TickCount</returns>
        </member>
        <member name="T:HttpServer.ContextTimeoutManager.MonitorType">
            <summary>
            Use a Thread or a Timer to monitor the ugly
            </summary>
        </member>
        <member name="T:HttpServer.Sessions.MemorySessionStore">
            <summary>
            Session store using memory for each session.
            </summary>
        </member>
        <member name="T:HttpServer.Sessions.IHttpSessionStore">
            <summary>
            A session store is used to store and load sessions on a media.
            The default implementation (<see cref="T:HttpServer.Sessions.MemorySessionStore"/>) saves/retrieves sessions from memory.
            </summary>
        </member>
        <member name="M:HttpServer.Sessions.IHttpSessionStore.Create">
            <summary>
            Creates a new http session with a generated id.
            </summary>
            <returns>A <see cref="T:HttpServer.Sessions.IHttpSession"/> object</returns>
        </member>
        <member name="M:HttpServer.Sessions.IHttpSessionStore.Create(System.String)">
            <summary>
            Creates a new http session with a specific id
            </summary>
            <param name="id">Id used to identify the new cookie..</param>
            <returns>A <see cref="T:HttpServer.Sessions.IHttpSession"/> object.</returns>
            <remarks>
            Id should be generated by the store implementation if it's null or <see cref="F:System.String.Empty"/>.
            </remarks>
        </member>
        <member name="M:HttpServer.Sessions.IHttpSessionStore.Load(System.String)">
            <summary>
            Load an existing session.
            </summary>
            <param name="sessionId">Session id (usually retrieved from a client side cookie).</param>
            <returns>A session if found; otherwise null.</returns>
        </member>
        <member name="M:HttpServer.Sessions.IHttpSessionStore.Save(HttpServer.Sessions.IHttpSession)">
            <summary>
            Save an updated session to the store.
            </summary>
            <param name="session">Session id (usually retrieved from a client side cookie).</param>
            <exception cref="T:System.ArgumentException">If Id property have not been specified.</exception>
        </member>
        <member name="M:HttpServer.Sessions.IHttpSessionStore.AddUnused(HttpServer.Sessions.IHttpSession)">
            <summary>
            We use the flyweight pattern which reuses small objects
            instead of creating new each time.
            </summary>
            <param name="session">Unused session that should be reused next time Create is called.</param>
        </member>
        <member name="M:HttpServer.Sessions.IHttpSessionStore.Cleanup">
            <summary>
            Remove expired sessions
            </summary>
        </member>
        <member name="M:HttpServer.Sessions.IHttpSessionStore.Remove(System.String)">
            <summary>
            Remove a session
            </summary>
            <param name="sessionId">id of the session.</param>
        </member>
        <member name="P:HttpServer.Sessions.IHttpSessionStore.Item(System.String)">
            <summary>
            Load a session from the store
            </summary>
            <param name="sessionId"></param>
            <returns>null if session is not found.</returns>
        </member>
        <member name="P:HttpServer.Sessions.IHttpSessionStore.ExpireTime">
            <summary>
            Number of minutes before a session expires.
            </summary>
            <value>Default time is 20 minutes.</value>
        </member>
        <member name="M:HttpServer.Sessions.MemorySessionStore.#ctor">
            <summary>
            Initializes the class setting the expirationtimer to clean the session every minute
            </summary>
        </member>
        <member name="M:HttpServer.Sessions.MemorySessionStore.Cleanup(System.Object)">
            <summary>
            Delegate for the cleanup timer
            </summary>
        </member>
        <member name="M:HttpServer.Sessions.MemorySessionStore.Create">
            <summary>
            Creates a new http session
            </summary>
            <returns></returns>
        </member>
        <member name="M:HttpServer.Sessions.MemorySessionStore.Create(System.String)">
            <summary>
            Creates a new http session with a specific id
            </summary>
            <param name="id">Id used to identify the new cookie..</param>
            <returns>A <see cref="T:HttpServer.Sessions.IHttpSession"/> object.</returns>
            <remarks>
            Id should be generated by the store implementation if it's null or <see cref="F:System.String.Empty"/>.
            </remarks>
        </member>
        <member name="M:HttpServer.Sessions.MemorySessionStore.Load(System.String)">
            <summary>
            Load an existing session.
            </summary>
            <param name="sessionId"></param>
            <returns></returns>
        </member>
        <member name="M:HttpServer.Sessions.MemorySessionStore.Save(HttpServer.Sessions.IHttpSession)">
            <summary>
            Save an updated session to the store.
            </summary>
            <param name="session"></param>
        </member>
        <member name="M:HttpServer.Sessions.MemorySessionStore.AddUnused(HttpServer.Sessions.IHttpSession)">
            <summary>
            We use the flyweight pattern which reuses small objects
            instead of creating new each time.
            </summary>
            <param name="session">EmptyLanguageNode (unused) session that should be reused next time Create is called.</param>
        </member>
        <member name="M:HttpServer.Sessions.MemorySessionStore.Cleanup">
            <summary>
            Remove expired sessions
            </summary>
        </member>
        <member name="M:HttpServer.Sessions.MemorySessionStore.Remove(System.String)">
            <summary>
            Remove a session
            </summary>
            <param name="sessionId">id of the session.</param>
        </member>
        <member name="P:HttpServer.Sessions.MemorySessionStore.Item(System.String)">
            <summary>
            Load a session from the store
            </summary>
            <param name="sessionId"></param>
            <returns>null if session is not found.</returns>
        </member>
        <member name="P:HttpServer.Sessions.MemorySessionStore.ExpireTime">
            <summary>
            Number of minutes before a session expires.
            Default is 20 minutes.
            </summary>
        </member>
        <member name="T:HttpServer.Sessions.HttpSessionClearedArgs">
            <summary>
            Arguments sent when a <see cref="T:HttpServer.Sessions.IHttpSession"/> is cleared
            </summary>
        </member>
        <member name="M:HttpServer.Sessions.HttpSessionClearedArgs.#ctor(System.Boolean)">
            <summary>
            Instantiates the arguments for the event
            </summary>
            <param name="expired">True if the session is cleared due to expiration</param>
        </member>
        <member name="P:HttpServer.Sessions.HttpSessionClearedArgs.Expired">
            <summary>
            Returns true if the session is cleared due to expiration
            </summary>
        </member>
        <member name="T:HttpServer.Sessions.HttpSessionClearedHandler">
            <summary>
            Delegate for when a IHttpSession is cleared
            </summary>
            <param name="session"><see cref="T:HttpServer.Sessions.IHttpSession"/> this is being cleared.</param>
            <param name="args">Arguments for the clearing</param>
        </member>
        <member name="T:HttpServer.RequestQueue">
            <summary>
            Used to queue incoming requests.
            </summary>
        </member>
        <member name="M:HttpServer.RequestQueue.#ctor(HttpServer.ProcessRequestHandler)">
            <summary>
            Initializes a new instance of the <see cref="T:HttpServer.RequestQueue"/> class.
            </summary>
            <param name="handler">Called when a request should be processed.</param>
        </member>
        <member name="M:HttpServer.RequestQueue.QueueThread">
            <summary>
            Used to process queued requests.
            </summary>
        </member>
        <member name="P:HttpServer.RequestQueue.MaxRequestCount">
            <summary>
            Gets or sets maximum number of allowed simultaneous requests.
            </summary>
        </member>
        <member name="P:HttpServer.RequestQueue.MaxQueueSize">
            <summary>
            Gets or sets maximum number of requests queuing to be handled.
            </summary>
        </member>
        <member name="P:HttpServer.RequestQueue.CurrentRequestCount">
            <summary>
            Specifies how many requests the HTTP server is currently processing.
            </summary>
        </member>
        <member name="T:HttpServer.RequestQueue.QueueItem">
            <summary>
            Used two queue incoming requests to avoid
            thread starvation.
            </summary>
        </member>
        <member name="T:HttpServer.ProcessRequestHandler">
            <summary>
            Method used to process a queued request
            </summary>
            <param name="context">Context that the request was received from.</param>
            <param name="request">Request to process.</param>
        </member>
        <member name="T:HttpServer.Parser.HeaderEventArgs">
            <summary>
            Event arguments used when a new header have been parsed.
            </summary>
        </member>
        <member name="M:HttpServer.Parser.HeaderEventArgs.#ctor(System.String,System.String)">
            <summary>
            Initializes a new instance of the <see cref="T:HttpServer.Parser.HeaderEventArgs"/> class.
            </summary>
            <param name="name">Name of header.</param>
            <param name="value">Header value.</param>
        </member>
        <member name="M:HttpServer.Parser.HeaderEventArgs.#ctor">
            <summary>
            Initializes a new instance of the <see cref="T:HttpServer.Parser.HeaderEventArgs"/> class.
            </summary>
        </member>
        <member name="P:HttpServer.Parser.HeaderEventArgs.Name">
            <summary>
            Gets or sets header name.
            </summary>
        </member>
        <member name="P:HttpServer.Parser.HeaderEventArgs.Value">
            <summary>
            Gets or sets header value.
            </summary>
        </member>
        <member name="T:HttpServer.HttpRequest">
            <summary>
            Contains server side HTTP request information.
            </summary>
        </member>
        <member name="F:HttpServer.HttpRequest.UriSplitters">
            <summary>
            Chars used to split an URL path into multiple parts.
            </summary>
        </member>
        <member name="M:HttpServer.HttpRequest.AssignForm(HttpServer.HttpForm)">
            <summary>
            Assign a form.
            </summary>
            <param name="form"></param>
        </member>
        <member name="M:HttpServer.HttpRequest.Clone">
            <summary>
            Creates a new object that is a copy of the current instance.
            </summary>
            
            <returns>
            A new object that is a copy of this instance.
            </returns>
            <filterpriority>2</filterpriority>
        </member>
        <member name="M:HttpServer.HttpRequest.DecodeBody(HttpServer.FormDecoders.FormDecoderProvider)">
            <summary>
            Decode body into a form.
            </summary>
            <param name="providers">A list with form decoders.</param>
            <exception cref="T:System.IO.InvalidDataException">If body contents is not valid for the chosen decoder.</exception>
            <exception cref="T:System.InvalidOperationException">If body is still being transferred.</exception>
        </member>
        <member name="M:HttpServer.HttpRequest.SetCookies(HttpServer.RequestCookies)">
            <summary>
             Cookies
            </summary>
            <param name="cookies">the cookies</param>
        </member>
        <member name="M:HttpServer.HttpRequest.CreateResponse(HttpServer.IHttpClientContext)">
            <summary>
            Create a response object.
            </summary>
            <returns>A new <see cref="T:HttpServer.IHttpResponse"/>.</returns>
        </member>
        <member name="M:HttpServer.HttpRequest.AddHeader(System.String,System.String)">
            <summary>
            Called during parsing of a <see cref="T:HttpServer.IHttpRequest"/>.
            </summary>
            <param name="name">Name of the header, should not be URL encoded</param>
            <param name="value">Value of the header, should not be URL encoded</param>
            <exception cref="T:HttpServer.Exceptions.BadRequestException">If a header is incorrect.</exception>
        </member>
        <member name="M:HttpServer.HttpRequest.AddToBody(System.Byte[],System.Int32,System.Int32)">
            <summary>
            Add bytes to the body
            </summary>
            <param name="bytes">buffer to read bytes from</param>
            <param name="offset">where to start read</param>
            <param name="length">number of bytes to read</param>
            <returns>Number of bytes actually read (same as length unless we got all body bytes).</returns>
            <exception cref="T:System.InvalidOperationException">If body is not writable</exception>
            <exception cref="T:System.ArgumentNullException"><c>bytes</c> is null.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><c>offset</c> is out of range.</exception>
        </member>
        <member name="M:HttpServer.HttpRequest.Clear">
            <summary>
            Clear everything in the request
            </summary>
        </member>
        <member name="P:HttpServer.HttpRequest.Secure">
            <summary>
            Gets or sets a value indicating whether this <see cref="T:HttpServer.HttpRequest"/> is secure.
            </summary>
        </member>
        <member name="P:HttpServer.HttpRequest.UriPath">
            <summary>
            Path and query (will be merged with the host header) and put in Uri
            </summary>
            <see cref="P:HttpServer.HttpRequest.Uri"/>
        </member>
        <member name="P:HttpServer.HttpRequest.BodyIsComplete">
            <summary>
            Gets whether the body is complete.
            </summary>
        </member>
        <member name="P:HttpServer.HttpRequest.AcceptTypes">
            <summary>
            Gets kind of types accepted by the client.
            </summary>
        </member>
        <member name="P:HttpServer.HttpRequest.Body">
            <summary>
            Gets or sets body stream.
            </summary>
        </member>
        <member name="P:HttpServer.HttpRequest.Connection">
            <summary>
            Gets or sets kind of connection used for the session.
            </summary>
        </member>
        <member name="P:HttpServer.HttpRequest.ContentLength">
            <summary>
            Gets or sets number of bytes in the body.
            </summary>
        </member>
        <member name="P:HttpServer.HttpRequest.Headers">
            <summary>
            Gets headers sent by the client.
            </summary>
        </member>
        <member name="P:HttpServer.HttpRequest.HttpVersion">
            <summary>
            Gets or sets version of HTTP protocol that's used.
            </summary>
            <remarks>
            Probably <see cref="F:HttpServer.HttpHelper.HTTP10"/> or <see cref="F:HttpServer.HttpHelper.HTTP11"/>.
            </remarks>
            <seealso cref="T:HttpServer.HttpHelper"/>
        </member>
        <member name="P:HttpServer.HttpRequest.Method">
            <summary>
            Gets or sets requested method.
            </summary>
            <value></value>
            <remarks>
            Will always be in upper case.
            </remarks>
            <see cref="!:HttpServer.Method"/>
        </member>
        <member name="P:HttpServer.HttpRequest.QueryString">
            <summary>
            Gets variables sent in the query string
            </summary>
        </member>
        <member name="P:HttpServer.HttpRequest.Uri">
            <summary>
            Gets or sets requested URI.
            </summary>
        </member>
        <member name="P:HttpServer.HttpRequest.UriParts">
            <summary>
            Uri absolute path splitted into parts.
            </summary>
            <example>
            // uri is: http://gauffin.com/code/tiny/
            Console.WriteLine(request.UriParts[0]); // result: code
            Console.WriteLine(request.UriParts[1]); // result: tiny
            </example>
            <remarks>
            If you're using controllers than the first part is controller name,
            the second part is method name and the third part is Id property.
            </remarks>
            <seealso cref="P:HttpServer.HttpRequest.Uri"/>
        </member>
        <member name="P:HttpServer.HttpRequest.Param">
            <summary>
            Gets parameter from <see cref="P:HttpServer.HttpRequest.QueryString"/> or <see cref="P:HttpServer.HttpRequest.Form"/>.
            </summary>
        </member>
        <member name="P:HttpServer.HttpRequest.Form">
            <summary>
            Gets form parameters.
            </summary>
        </member>
        <member name="P:HttpServer.HttpRequest.IsAjax">
            <summary>
            Gets whether the request was made by Ajax (Asynchronous JavaScript)
            </summary>
        </member>
        <member name="P:HttpServer.HttpRequest.Cookies">
            <summary>
            Gets cookies that was sent with the request.
            </summary>
        </member>
        <member name="M:HttpServer.ComponentProvider.AddInstance``1(System.Object)">
            <summary>
            Add a component instance
            </summary>
            <typeparam name="T">Interface type</typeparam>
            <param name="instance">Instance to add</param>
        </member>
        <member name="M:HttpServer.ComponentProvider.Get``1">
            <summary>
            Get a component.
            </summary>
            <typeparam name="T">Interface type</typeparam>
            <returns>Component if registered, otherwise null.</returns>
            <remarks>
            Component will get created if needed.
            </remarks>
        </member>
        <member name="M:HttpServer.ComponentProvider.Create(HttpServer.ComponentProvider.TypeInformation)">
            <exception cref="T:System.InvalidOperationException">If instance cannot be created.</exception>
        </member>
        <member name="M:HttpServer.ComponentProvider.Contains(System.Type)">
            <summary>
            Checks if the specified component interface have been added.
            </summary>
            <param name="interfaceType"></param>
            <returns>true if found; otherwise false.</returns>
        </member>
        <member name="M:HttpServer.ComponentProvider.Add``2">
            <summary>
            Add a component.
            </summary>
            <typeparam name="InterfaceType">Type being requested.</typeparam>
            <typeparam name="InstanceType">Type being created.</typeparam>
            <exception cref="T:System.InvalidOperationException">Type have already been mapped.</exception>
        </member>
        <member name="T:HttpServer.Rules.RegexRedirectRule">
            <summary>
            Class to make dynamic binding of redirects. Instead of having to specify a number of similar redirect rules
            a regular expression can be used to identify redirect URLs and their targets.
            </summary>
            <example>
            <![CDATA[
            new RegexRedirectRule("/(?<target>[a-z0-9]+)", "/users/${target}?find=true", RegexOptions.IgnoreCase)
            ]]>
            </example>
        </member>
        <member name="M:HttpServer.Rules.RegexRedirectRule.#ctor(System.String,System.String)">
            <summary>
            Initializes a new instance of the <see cref="T:HttpServer.Rules.RegexRedirectRule"/> class.
            </summary>
            <param name="fromUrlExpression">Expression to match URL</param>
            <param name="toUrlExpression">Expression to generate URL</param>
            <example>
            <![CDATA[
            server.Add(new RegexRedirectRule("/(?<first>[a-zA-Z0-9]+)", "/user/${first}"));
            Result of ie. /employee1 will then be /user/employee1
            ]]>
            </example>
        </member>
        <member name="M:HttpServer.Rules.RegexRedirectRule.#ctor(System.String,System.String,System.Text.RegularExpressions.RegexOptions)">
            <summary>
            Initializes a new instance of the <see cref="T:HttpServer.Rules.RegexRedirectRule"/> class.
            </summary>
            <param name="fromUrlExpression">Expression to match URL</param>
            <param name="toUrlExpression">Expression to generate URL</param>
            <param name="options">Regular expression options to use, can be null</param>
            <example>
            <![CDATA[
            server.Add(new RegexRedirectRule("/(?<first>[a-zA-Z0-9]+)", "/user/{first}", RegexOptions.IgnoreCase));
            Result of ie. /employee1 will then be /user/employee1
            ]]>
            </example>
        </member>
        <member name="M:HttpServer.Rules.RegexRedirectRule.#ctor(System.String,System.String,System.Text.RegularExpressions.RegexOptions,System.Boolean)">
            <summary>
            Initializes a new instance of the <see cref="T:HttpServer.Rules.RegexRedirectRule"/> class.
            </summary>
            <param name="fromUrlExpression">Expression to match URL</param>
            <param name="toUrlExpression">Expression to generate URL</param>
            <param name="options">Regular expression options to apply</param>
            <param name="shouldRedirect"><c>true</c> if request should be redirected, <c>false</c> if the request URI should be replaced.</param>
            <example>
            <![CDATA[
            server.Add(new RegexRedirectRule("/(?<first>[a-zA-Z0-9]+)", "/user/${first}", RegexOptions.None));
            Result of ie. /employee1 will then be /user/employee1
            ]]>
            </example>
            <exception cref="T:System.ArgumentNullException">Argument is null.</exception>
            <seealso cref="P:HttpServer.Rules.RedirectRule.ShouldRedirect"/>
        </member>
        <member name="M:HttpServer.Rules.RegexRedirectRule.Process(HttpServer.IHttpRequest,HttpServer.IHttpResponse)">
            <summary>
            Process the incoming request.
            </summary>
            <param name="request">incoming HTTP request</param>
            <param name="response">outgoing HTTP response</param>
            <returns>true if response should be sent to the browser directly (no other rules or modules will be processed).</returns>
            <remarks>
            returning true means that no modules will get the request. Returning true is typically being done
            for redirects.
            </remarks>
            <exception cref="T:System.ArgumentNullException">If request or response is null</exception>
        </member>
        <member name="T:HttpServer.Helpers.ResourceInfo">
            <summary>
            Container to bind resource names to assemblies
            </summary>
        </member>
        <member name="M:HttpServer.Helpers.ResourceInfo.#ctor(System.String,System.String,System.Reflection.Assembly)">
            <summary>
            Instantiates an instance of <see cref="T:HttpServer.Helpers.ResourceInfo"/>
            </summary>
            <param name="uri">The dot seperated uri the resource maps to</param>
            <param name="resourceName">The full resource name</param>
            <param name="assembly">The assembly the resource exists in</param>
        </member>
        <member name="M:HttpServer.Helpers.ResourceInfo.GetStream">
            <summary>
            Retrieves a stream to the resource
            </summary>
            <returns>Null if the resource couldn't be located somehow</returns>
        </member>
        <member name="P:HttpServer.Helpers.ResourceInfo.Assembly">
            <summary>
            Retrieves the assembly the resource resides in
            </summary>
        </member>
        <member name="P:HttpServer.Helpers.ResourceInfo.Uri">
            <summary>
            Retrieves the full name/path of the assembly
            </summary>
        </member>
        <member name="P:HttpServer.Helpers.ResourceInfo.Extension">
            <summary>
            Retrieves the extension of the resource
            </summary>
        </member>
        <member name="P:HttpServer.Helpers.ResourceInfo.ExtensionLessUri">
            <summary>Returns the Uri without extension</summary>
        </member>
        <member name="P:HttpServer.Helpers.ResourceInfo.ResourceName">
            <summary>Retrieves the full path name to the resource file</summary>
        </member>
        <member name="T:HttpServer.Authentication.BasicAuthentication">
            <summary>
            The "basic" authentication scheme is based on the model that the
            client must authenticate itself with a user-ID and a password for
            each realm.  The realm value should be considered an opaque string
            which can only be compared for equality with other realms on that
            server. The server will service the request only if it can validate
            the user-ID and password for the protection space of the Request-URI.
            There are no optional authentication parameters.
            </summary>
        </member>
        <member name="M:HttpServer.Authentication.BasicAuthentication.#ctor(HttpServer.Authentication.AuthenticationHandler,HttpServer.Authentication.AuthenticationRequiredHandler)">
            <summary>
            Initializes a new instance of the <see cref="T:HttpServer.Authentication.BasicAuthentication"/> class.
            </summary>
            <param name="authenticator">Delegate used to provide information used during authentication.</param>
            <param name="authenticationRequiredHandler">Delegate used to determine if authentication is required (may be null).</param>
        </member>
        <member name="M:HttpServer.Authentication.BasicAuthentication.#ctor(HttpServer.Authentication.AuthenticationHandler)">
            <summary>
            Initializes a new instance of the <see cref="T:HttpServer.Authentication.BasicAuthentication"/> class.
            </summary>
            <param name="authenticator">Delegate used to provide information used during authentication.</param>
        </member>
        <member name="M:HttpServer.Authentication.BasicAuthentication.CreateResponse(System.String,System.Object[])">
            <summary>
            Create a response that can be sent in the WWW-Authenticate header.
            </summary>
            <param name="realm">Realm that the user should authenticate in</param>
            <param name="options">Not used in basic auth</param>
            <returns>A correct auth request.</returns>
        </member>
        <member name="M:HttpServer.Authentication.BasicAuthentication.Authenticate(System.String,System.String,System.String,System.Object[])">
            <summary>
            An authentication response have been received from the web browser.
            Check if it's correct
            </summary>
            <param name="authenticationHeader">Contents from the Authorization header</param>
            <param name="realm">Realm that should be authenticated</param>
            <param name="httpVerb">GET/POST/PUT/DELETE etc.</param>
            <param name="options">Not used in basic auth</param>
            <returns>Authentication object that is stored for the request. A user class or something like that.</returns>
            <exception cref="T:System.ArgumentException">if authenticationHeader is invalid</exception>
            <exception cref="T:System.ArgumentNullException">If any of the paramters is empty or null.</exception>
        </member>
        <member name="P:HttpServer.Authentication.BasicAuthentication.Name">
            <summary>
            name used in http request.
            </summary>
        </member>
        <member name="T:HttpServer.RequestParserState">
            <summary>
            Current state in the parsing.
            </summary>
        </member>
        <member name="F:HttpServer.RequestParserState.FirstLine">
            <summary>
            Should parse the request line
            </summary>
        </member>
        <member name="F:HttpServer.RequestParserState.HeaderName">
            <summary>
            Searching for a complete header name
            </summary>
        </member>
        <member name="F:HttpServer.RequestParserState.AfterName">
            <summary>
            Searching for colon after header name (ignoring white spaces)
            </summary>
        </member>
        <member name="F:HttpServer.RequestParserState.Between">
            <summary>
            Searching for start of header value (ignoring white spaces)
            </summary>
        </member>
        <member name="F:HttpServer.RequestParserState.HeaderValue">
            <summary>
            Searching for a complete header value (can span over multiple lines, as long as they are prefixed with one/more whitespaces)
            </summary>
        </member>
        <member name="F:HttpServer.RequestParserState.Body">
            <summary>
            Adding bytes to body
            </summary>
        </member>
        <member name="T:HttpServer.Helpers.JSHelper">
            <summary>
            Will contain helper functions for javascript.
            </summary>
        </member>
        <member name="M:HttpServer.Helpers.JSHelper.AjaxRequest(System.String,System.String[])">
            <summary>
            Requests a url through ajax
            </summary>
            <param name="url">url to fetch. Url is NOT enclosed in quotes by the implementation. You need to do that yourself.</param>
            <param name="options">optional options in format "key, value, key, value", used in JS request object. All keys should end with colon.</param>
            <returns>a link tag</returns>
            <remarks>onclick attribute is used by this method.</remarks>
            <example>
            <code>
            // plain text
            JSHelper.AjaxRequest("'/user/show/1'");
            
            // ajax request using this.href
            string link = "&lt;a href=\"/user/call/1\" onclick=\"" + JSHelper.AjaxRequest("this.href") + "/&lt;call user&lt;/a&gt;";
            </code>
            </example>
        </member>
        <member name="M:HttpServer.Helpers.JSHelper.AjaxUpdater(System.String,System.String,System.String[])">
            <summary>
            Ajax requests that updates an element with
            the fetched content
            </summary>
            <param name="url">url to fetch. Url is NOT enclosed in quotes by the implementation. You need to do that yourself.</param>
            <param name="targetId">element to update</param>
            <param name="options">options in format "key, value, key, value". All keys should end with colon.</param>
            <returns>A link tag.</returns>
            <example>
            <code>
            JSHelper.AjaxUpdater("'/user/show/1'", "user", "onsuccess:", "alert('hello');", "asynchronous:", "true");
            </code>
            </example>
        </member>
        <member name="M:HttpServer.Helpers.JSHelper.CreateDialog(System.String,System.String,System.String[])">
            <summary>
            Opens contents in a dialog window.
            </summary>
            <param name="url">url to contents of dialog</param>
            <param name="title">link title</param>
            <param name="options">name, value, name, value, all parameter names should end with colon.</param>
        </member>
        <member name="M:HttpServer.Helpers.JSHelper.CloseDialog">
            <summary>
            Close a javascript dialog window/div.
            </summary>
            <returns>javascript for closing a dialog.</returns>
            <see cref="M:HttpServer.Helpers.JSHelper.CreateDialog(System.String,System.String,System.String[])"/>
        </member>
        <member name="T:HttpServer.ContentType">
            <summary>
            Lists content type mime types.
            </summary>
        </member>
        <member name="F:HttpServer.ContentType.Text">
            <summary>
            text/plain
            </summary>
        </member>
        <member name="F:HttpServer.ContentType.Html">
            <summary>
            text/haml
            </summary>
        </member>
        <member name="F:HttpServer.ContentType.Javascript">
            <summary>
            content type for javascript documents = application/javascript
            </summary>
            <remarks>
            <para>
            RFC 4329 states that text/javascript have been superseeded by
            application/javascript. You might still want to check browser versions
            since older ones do not support application/javascript.
            </para>
            <para>Browser support: http://krijnhoetmer.nl/stuff/javascript/mime-types/</para>
            </remarks>
        </member>
        <member name="F:HttpServer.ContentType.Xml">
            <summary>
            text/xml
            </summary>
        </member>
        <member name="T:HttpServer.ContentTypes">
            <summary>
            A list of content types
            </summary>
        </member>
        <member name="M:HttpServer.ContentTypes.#ctor(System.String)">
            <summary>
            
            </summary>
            <param name="types">Semicolon separated content types.</param>
        </member>
        <member name="M:HttpServer.ContentTypes.GetEnumerator">
            <summary>
            Returns an enumerator that iterates through a collection.
            </summary>
            <returns>
            An <see cref="T:System.Collections.IEnumerator"/> object that can be used to iterate through the collection.
            </returns>
        </member>
        <member name="M:HttpServer.ContentTypes.Contains(System.String)">
            <summary>
            Searches for the specified type
            </summary>
            <param name="type">Can also be a part of a type (searching for "xml" would return true for "application/xml").</param>
            <returns>true if type was found.</returns>
        </member>
        <member name="P:HttpServer.ContentTypes.First">
            <summary>
            Get this first content type.
            </summary>
        </member>
        <member name="P:HttpServer.ContentTypes.Item(System.String)">
            <summary>
            Fetch a content type
            </summary>
            <param name="type">Part of type ("xml" would return "application/xml")</param>
            <returns></returns>
            <remarks>All content types are in lower case.</remarks>
        </member>
        <member name="T:HttpServer.RequestParserFactory">
            <summary>
            Creates request parsers when needed.
            </summary>
        </member>
        <member name="T:HttpServer.IRequestParserFactory">
            <summary>
            Creates request parsers when needed.
            </summary>
        </member>
        <member name="M:HttpServer.IRequestParserFactory.CreateParser(HttpServer.ILogWriter)">
            <summary>
            Create a new request parser.
            </summary>
            <param name="logWriter">Used when logging should be enabled.</param>
            <returns>A new request parser.</returns>
        </member>
        <member name="M:HttpServer.RequestParserFactory.CreateParser(HttpServer.ILogWriter)">
            <summary>
            Create a new request parser.
            </summary>
            <param name="logWriter">Used when logging should be enabled.</param>
            <returns>A new request parser.</returns>
        </member>
        <member name="T:HttpServer.Exceptions.UnauthorizedException">
            <summary>
            The request requires user authentication. The response MUST include a 
            WWW-Authenticate header field (section 14.47) containing a challenge 
            applicable to the requested resource. 
            
            The client MAY repeat the request with a suitable Authorization header 
            field (section 14.8). If the request already included Authorization 
            credentials, then the 401 response indicates that authorization has been 
            refused for those credentials. If the 401 response contains the same challenge 
            as the prior response, and the user agent has already attempted authentication 
            at least once, then the user SHOULD be presented the entity that was given in the response, 
            since that entity might include relevant diagnostic information. 
            
            HTTP access authentication is explained in rfc2617:
            http://www.ietf.org/rfc/rfc2617.txt
            
            (description is taken from 
            http://www.submissionchamber.com/help-guides/error-codes.php#sec10.4.2)
            </summary>
        </member>
        <member name="M:HttpServer.Exceptions.UnauthorizedException.#ctor">
            <summary>
            Create a new unauhtorized exception.
            </summary>
            <seealso cref="T:HttpServer.Exceptions.UnauthorizedException"/>
        </member>
        <member name="M:HttpServer.Exceptions.UnauthorizedException.#ctor(System.String,System.Exception)">
            <summary>
            Create a new unauhtorized exception.
            </summary>
            <param name="message">reason to why the request was unauthorized.</param>
            <param name="inner">inner exception</param>
        </member>
        <member name="M:HttpServer.Exceptions.UnauthorizedException.#ctor(System.String)">
            <summary>
            Create a new unauhtorized exception.
            </summary>
            <param name="message">reason to why the request was unauthorized.</param>
        </member>
        <member name="T:HttpServer.HttpModules.FileModule">
            <summary>
            The purpose of this module is to serve files.
            </summary>
        </member>
        <member name="M:HttpServer.HttpModules.FileModule.#ctor(System.String,System.String,System.Boolean)">
            <summary>
            Initializes a new instance of the <see cref="T:HttpServer.HttpModules.FileModule"/> class.
            </summary>
            <param name="baseUri">Uri to serve, for instance "/files/"</param>
            <param name="basePath">Path on hard drive where we should start looking for files</param>
            <param name="useLastModifiedHeader">If true a Last-Modifed header will be sent upon requests urging web browser to cache files</param>
        </member>
        <member name="M:HttpServer.HttpModules.FileModule.#ctor(System.String,System.String)">
            <summary>
            Initializes a new instance of the <see cref="T:HttpServer.HttpModules.FileModule"/> class.
            </summary>
            <param name="baseUri">Uri to serve, for instance "/files/"</param>
            <param name="basePath">Path on hard drive where we should start looking for files</param>
        </member>
        <member name="M:HttpServer.HttpModules.FileModule.AddDefaultMimeTypes">
            <summary>
            Mimtypes that this class can handle per default
            </summary>
        </member>
        <member name="M:HttpServer.HttpModules.FileModule.CanHandle(System.Uri)">
            <summary>
            Determines if the request should be handled by this module.
            Invoked by the <see cref="T:HttpServer.HttpServer"/>
            </summary>
            <param name="uri"></param>
            <returns>true if this module should handle it.</returns>
        </member>
        <member name="M:HttpServer.HttpModules.FileModule.GetPath(System.Uri)">
            <exception cref="T:HttpServer.Exceptions.BadRequestException">Illegal path</exception>
        </member>
        <member name="M:HttpServer.HttpModules.FileModule.Contains(System.String,System.Collections.Generic.IEnumerable{System.String})">
            <summary>
            check if source contains any of the chars.
            </summary>
            <param name="source"></param>
            <param name="chars"></param>
            <returns></returns>
        </member>
        <member name="M:HttpServer.HttpModules.FileModule.Process(HttpServer.IHttpRequest,HttpServer.IHttpResponse,HttpServer.Sessions.IHttpSession)">
            <summary>
            Method that process the Uri.
            </summary>
            <param name="request">Information sent by the browser about the request</param>
            <param name="response">Information that is being sent back to the client.</param>
            <param name="session">Session used to </param>
            <exception cref="T:HttpServer.Exceptions.InternalServerException">Failed to find file extension</exception>
            <exception cref="T:HttpServer.Exceptions.ForbiddenException">File type is forbidden.</exception>
        </member>
        <member name="M:HttpServer.HttpModules.FileModule.GetFileExtension(System.String)">
            <summary>
            return a file extension from an absolute Uri path (or plain filename)
            </summary>
            <param name="uri"></param>
            <returns></returns>
        </member>
        <member name="P:HttpServer.HttpModules.FileModule.MimeTypes">
            <summary>
            List with all mime-type that are allowed. 
            </summary>
            <remarks>All other mime types will result in a Forbidden http status code.</remarks>
        </member>
        <member name="P:HttpServer.HttpModules.FileModule.ForbiddenChars">
            <summary>
            characters that may not  exist in a path.
            </summary>
            <example>
            fileMod.ForbiddenChars = new string[]{ "\\", "..", ":" };
            </example>
        </member>
        <member name="T:HttpServer.Helpers.WebHelper">
            <summary>
            Webhelper provides helpers for common tasks in HTML.
            </summary>
        </member>
        <member name="F:HttpServer.Helpers.WebHelper.JSImplementation">
            <summary>
            Used to let the website use different javascript libraries.
            Default is <see cref="T:HttpServer.Helpers.Implementations.PrototypeImp"/>
            </summary>
        </member>
        <member name="M:HttpServer.Helpers.WebHelper.AjaxRequest(System.String,System.String,System.String[])">
            <summary>
            Creates a link that invokes through ajax.
            </summary>
            <param name="url">url to fetch</param>
            <param name="title">link title</param>
            <param name="options">
            optional options in format "key, value, key, value". 
            Javascript options starts with ':'.
            </param>
            <returns>a link tag</returns>
            <example>
            WebHelper.AjaxRequest("/users/add/", "Add user", "method:", "post", "onclick", "validate('this');");
            </example>
        </member>
        <member name="M:HttpServer.Helpers.WebHelper.AjaxUpdater(System.String,System.String,System.String,System.String[])">
            <summary>
            Builds a link that updates an element with the fetched ajax content.
            </summary>
            <param name="url">Url to fetch content from</param>
            <param name="title">link title</param>
            <param name="targetId">html element to update with the results of the ajax request.</param>
            <param name="options">optional options in format "key, value, key, value"</param>
            <returns>A link tag.</returns>
        </member>
        <member name="M:HttpServer.Helpers.WebHelper.DialogLink(System.String,System.String,System.String[])">
            <summary>
            A link that pop ups a Dialog (overlay div)
            </summary>
            <param name="url">url to contents of dialog</param>
            <param name="title">link title</param>
            <param name="htmlAttributes">name/value of html attributes.</param>
            <returns>A "a"-tag that popups a dialog when clicked</returns>
            <example>
            WebHelper.DialogLink("/user/show/1", "show user", "onmouseover", "alert('booh!');");
            </example>
        </member>
        <member name="M:HttpServer.Helpers.WebHelper.CreateDialog(System.String,System.String,System.String[])">
            <summary>
            Create/Open a dialog box using ajax
            </summary>
            <param name="url"></param>
            <param name="title"></param>
            <param name="parameters"></param>
            <returns></returns>
        </member>
        <member name="M:HttpServer.Helpers.WebHelper.CloseDialog">
            <summary>
            Close a javascript dialog window/div.
            </summary>
            <returns>javascript for closing a dialog.</returns>
            <see cref="M:HttpServer.Helpers.WebHelper.DialogLink(System.String,System.String,System.String[])"/>
        </member>
        <member name="M:HttpServer.Helpers.WebHelper.FormStart(System.String,System.String,System.Boolean)">
            <summary>
            Create a &lt;form&gt; tag.
            </summary>
            <param name="name">name of form</param>
            <param name="action">action to invoke on submit</param>
            <param name="isAjax">form should be posted as ajax</param>
            <returns>html code</returns>
            <example>
            WebHelper.FormStart("frmLogin", "/user/login", Request.IsAjax);
            </example>
        </member>
        <member name="M:HttpServer.Helpers.WebHelper.Link(System.String,System.String,System.String[])">
            <summary>
            Create a link tag.
            </summary>
            <param name="url">url to go to</param>
            <param name="title">link title (text that is displayed)</param>
            <param name="htmlAttributes">html attributes, name, value, name, value</param>
            <returns>html code</returns>
            <example>
            WebHelper.Link("/user/show/1", "Show user", "id", "showUser", "onclick", "return confirm('Are you shure?');");
            </example>
        </member>
        <member name="M:HttpServer.Helpers.WebHelper.BuildLink(System.String,System.String,System.String[])">
            <summary>
            Build a link
            </summary>
            <param name="url">url to go to.</param>
            <param name="title">title of link (displayed text)</param>
            <param name="htmlAttributes">extra html attributes.</param>
            <returns>a complete link</returns>
        </member>
        <member name="M:HttpServer.Helpers.WebHelper.BuildLink(System.String,System.String,System.String[],System.String[])">
            <summary>
            Build a link
            </summary>
            <param name="url">url to go to.</param>
            <param name="title">title of link (displayed text)</param>
            <param name="htmlAttributes">extra html attributes.</param>
            <returns>a complete link</returns>
            <param name="options">more options</param>
        </member>
        <member name="M:HttpServer.Helpers.WebHelper.Select(System.String,System.Collections.ICollection,HttpServer.Helpers.GetIdTitle,System.Object,System.Boolean)">
            <summary>
            Obsolete
            </summary>
            <param name="name">Obsolete</param>
            <param name="collection">Obsolete</param>
            <param name="getIdTitle">Obsolete</param>
            <param name="selectedValue">Obsolete</param>
            <param name="firstEmpty">Obsolete</param>
            <returns>Obsolete</returns>
        </member>
        <member name="M:HttpServer.Helpers.WebHelper.Select(System.String,System.String,System.Collections.ICollection,HttpServer.Helpers.GetIdTitle,System.Object,System.Boolean)">
            <summary>
            Obsolete
            </summary>
            <param name="name">Obsolete</param>
            <param name="id">Obsolete</param>
            <param name="collection">Obsolete</param>
            <param name="getIdTitle">Obsolete</param>
            <param name="selectedValue">Obsolete</param>
            <param name="firstEmpty">Obsolete</param>
            <returns>Obsolete</returns>
        </member>
        <member name="M:HttpServer.Helpers.WebHelper.List(System.Collections.Generic.IEnumerable{System.Object},System.String)">
            <summary>
            Render errors into a UL with class "errors"
            </summary>
            <param name="className">class used by UL-tag.</param>
            <param name="theList">items to list</param>
            <returns>an unordered html list.</returns>
        </member>
        <member name="M:HttpServer.Helpers.WebHelper.List(System.Collections.Specialized.NameValueCollection,System.String)">
            <summary>
            Render errors into a UL with class "errors"
            </summary>
            <param name="className">class used by UL-tag.</param>
            <param name="theList">items to list</param>
            <returns>an unordered html list.</returns>
        </member>
        <member name="M:HttpServer.Helpers.WebHelper.Errors(System.Collections.Specialized.NameValueCollection)">
            <summary>
            Render errors into a UL with class "errors"
            </summary>
            <param name="errors"></param>
            <returns></returns>
        </member>
        <member name="M:HttpServer.Helpers.WebHelper.GenerateHtmlAttributes(System.Text.StringBuilder,System.String[],System.String[])">
            <summary>
            Generates a list with html attributes.
            </summary>
            <param name="sb">StringBuilder that the options should be added to.</param>
            <param name="firstOptions">attributes set by user.</param>
            <param name="secondOptions">attributes set by any of the helper classes.</param>
        </member>
        <member name="M:HttpServer.Helpers.WebHelper.GenerateHtmlAttributes(System.Text.StringBuilder,System.String[])">
            <summary>
            Generates a list with html attributes.
            </summary>
            <param name="sb">StringBuilder that the options should be added to.</param>
            <param name="options"></param>
        </member>
        <member name="T:HttpServer.Helpers.GetIdTitle">
            <summary>
            Delegate used by <see cref="M:HttpServer.Helpers.FormHelper.Select(System.String,System.Collections.IEnumerable,HttpServer.Helpers.GetIdTitle,System.Object,System.Boolean)"/> to populate select options.
            </summary>
            <param name="obj">current object (for instance a User).</param>
            <param name="id">Text that should be displayed in the value part of a &lt;optiongt;-tag.</param>
            <param name="title">Text shown in the select list.</param>
            <example>
            // Class that is going to be used in a SELECT-tag.
            public class User
            {
                private readonly string _realName;
                private readonly int _id;
                public User(int id, string realName)
                {
                    _id = id;
                    _realName = realName;
                }
                public string RealName
                {
                    get { return _realName; }
                }
            
                public int Id
                {
                    get { return _id; }
                }
            }
            
            // Using an inline delegate to generate the select list
            public void UserInlineDelegate()
            {
                List&lt;User&gt; items = new List&lt;User&gt;();
                items.Add(new User(1, "adam"));
                items.Add(new User(2, "bertial"));
                items.Add(new User(3, "david"));
                string htmlSelect = Select("users", "users", items, delegate(object o, out object id, out object value)
                                                                    {
                                                                        User user = (User)o;
                                                                        id = user.Id;
                                                                        value = user.RealName;
                                                                    }, 2, true);
            }
            
            // Using an method as delegate to generate the select list.
            public void UseExternalDelegate()
            {
                List&lt;User&gt; items = new List&lt;User&gt;();
                items.Add(new User(1, "adam"));
                items.Add(new User(2, "bertial"));
                items.Add(new User(3, "david"));
                string htmlSelect = Select("users", "users", items, UserOptions, 1, true);
            }
            
            // delegate returning id and title
            public static void UserOptions(object o, out object id, out object title)
            {
                User user = (User)o;
                id = user.Id;
                value = user.RealName;
            }    /// </example>
        </member>
    </members>
</doc>