protected virtual void OnRequest(RequestCommandEventArgs e) { EventHandler <RequestCommandEventArgs> handler = Request; if (handler != null) { handler(this, e); } }
private static RequestCommandEventArgs ReadCommand(HttpListenerRequest request) { using (TextReader reader = new StreamReader(request.InputStream, Encoding.UTF8)) { string requestJson = reader.ReadToEnd(); CommandServiceEventArgs requestArgs = Resolve.Serializer.Deserialize <CommandServiceEventArgs>(requestJson); RequestCommandEventArgs args = new RequestCommandEventArgs(requestArgs); return(args); } }
private void ListenerCallback(IAsyncResult result) { HttpListener listener = (HttpListener)result.AsyncState; if (!listener.IsListening) { return; } HttpListenerContext context = null; try { context = listener.EndGetContext(result); } catch (HttpListenerException) { return; } if (listener.IsListening) { listener.BeginGetContext(ListenerCallback, listener); } if (context == null) { return; } HttpListenerRequest request = context.Request; if (request.Url != Url) { throw new InvalidOperationException($"Request received with wrong URL: '{request.Url}'."); } RequestCommandEventArgs args = ReadCommand(request); try { using (HttpListenerResponse response = context.Response) { response.StatusCode = (int)HttpStatusCode.OK; response.StatusDescription = "OK"; } } catch (HttpListenerException) { return; } OnRequest(args); }