public bool SendResponse(ApiRequest request) { _garbage.Collect(); try { var url = new UrlSplitter(request.Url); HandleStuff(request, url); } catch (Exception ex) { request.Client.Send500_Failure(ex.ToString()); } _garbage.Collect(); return(true); }
public void WriteJsonObject(IWebRequest req, object obj) { var data = JsonSerializer.SerializeObject(obj); var encoded = Encoding.UTF8.GetBytes(data); req.ContentLength = encoded.Length; var output = req.GetRequestStream(); output.Write(encoded, 0, encoded.Length); // ReSharper disable RedundantAssignment // Clean up data = null; encoded = null; _garbage.Collect(); // ReSharper restore RedundantAssignment }
private void WaitForNetworkRequest() { while (ServerShouldBeUp) { _running = true; try { using (var clientSocket = _listeningSocket.Accept()) { var availableBytes = AwaitAvailableBytes(clientSocket, Settings.MAX_HEADER_SIZE); if (availableBytes <= 0) { continue; } var headerBody = ReadAndBreakApart(clientSocket, availableBytes); var longBody = new ClientRequestBody(headerBody.Body, clientSocket); using (var request = new Request(headerBody.Header, longBody, clientSocket)) { _logger.Debug(" * Client connected / URL: " + request.Url + " / Initial byte count: " + availableBytes); SendResponse(request); } try { clientSocket.Close(); } catch (Exception ex) { _logger.Debug(ex.ToString()); } _logger.Debug(" * Request finished"); _garbage.Collect(); } } catch (SocketException ex) { if (ServerShouldBeUp) { _logger.Debug(ex.Message); } } catch (Exception ex) { _logger.Debug(ex.Message); } } _logger.Debug("Web server has exited"); _running = false; }