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);
 }
Example #2
0
        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
        }
Example #3
0
        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;
        }