/// <summary> /// Internal constructor, used each time client connects. /// </summary> /// <param name="clientStream">The stream that is connected to the client. A stream is needed, to /// provide information about the connected client. /// See also the <see cref="System.Net.HttpListenerRequest"/> class. /// </param> /// <param name="httpListener">TBD</param> internal HttpListenerContext(OutputNetworkStreamWrapper clientStream, HttpListener httpListener) { // Saves the stream. m_clientOutputStream = clientStream; // Input stream does not own socket. m_clientInputStream = new InputNetworkStreamWrapper(clientStream.m_Stream, clientStream.m_Socket, false, null); // Constructs request and response classes. m_ClientRequest = new HttpListenerRequest(m_clientInputStream, httpListener.m_maxResponseHeadersLen); // Closing reponse to client causes removal from clientSocketsList. // Thus we need to pass clientSocketsList to client response. m_ResponseToClient = new HttpListenerResponse(m_clientOutputStream, httpListener); // There is incoming connection HTTP connection. Add new Socket to the list of connected sockets // The socket is removed from this array after correponding HttpListenerResponse is closed. httpListener.AddClientStream(m_clientOutputStream); // Set flag that HTTP request was not parsed yet. // It will be parsed on first access to m_ClientRequest or m_ResponseToClient m_IsHTTPRequestParsed = false; }