Example #1
0
 private void ReadOne(Buffer buffer, LowLevelTcpConnection connection)
 {
     connection.ReadAsync(buffer.Segment.Array, buffer.Segment.Offset, buffer.Segment.Count,
         readBytes =>
             {
                 var readSegment = new ArraySegment<byte>(buffer.Segment.Array, 0, buffer.Segment.Offset + readBytes);
                 int headersSize;
                 var headers = TryParse(readSegment, out headersSize);
                 if (headers != null)
                 {
                     FixBuffer(buffer.Segment.Array, headersSize, buffer.Segment.Offset + readBytes);
                     StartHttp(headers, buffer.Segment.Array, connection);
                 }
                 else
                 {
                     ReadOne(new Buffer()
                                 {
                                     Segment =
                                         new ArraySegment<byte>(buffer.Segment.Array,
                                                                buffer.Segment.Offset + readBytes,
                                                                buffer.Segment.Count - readBytes),
                                 }, connection);
                 }
             });
 }
Example #2
0
 private void BuildNewListenerProcess(TcpClient client)
 {
     var process = _daemonManager.Spawn(
         (daemon) =>
             {
                 Logger.Trace("Started new TCP process.");
                 var connection = new LowLevelTcpConnection(client, daemon);
                 daemon.OnShutdown(connection.Close);
                 _processInitializator(daemon, connection);
             });
 }
Example #3
0
 private void BuildNewListenerProcess(TcpClient client)
 {
     var process = _daemonManager.Spawn(
         (daemon) =>
     {
         Logger.Trace("Started new TCP process.");
         var connection = new LowLevelTcpConnection(client, daemon);
         daemon.OnShutdown(connection.Close);
         _processInitializator(daemon, connection);
     });
 }
Example #4
0
 private void StartHttp(string[] headers, byte[] buffer, LowLevelTcpConnection connection)
 {
     _daemonFactory.Spawn(
         (daemon) =>
             {
                 Logger.Debug("Staring http request processing :"+ headers[0]);
                 var startTime = DateTime.UtcNow;
                 daemon.OnShutdown(() =>
                                        {
                                            //connection.Process.Shutdown();
                                            connection.Stream.Flush();
                                            KeepAlive(buffer, connection);
                                            Logger.DebugFormat("Ending http request processing {0}", (DateTime.UtcNow - startTime).TotalMilliseconds);
                                        });
                 // todo add killer
                 _httpProcessInitializer(daemon, HttpRequest.Create(headers), new HttpResponse(connection));
             });
 }
Example #5
0
 private void KeepAlive(byte[] buffer, LowLevelTcpConnection connection)
 {
     ReadOne(new Buffer() { Segment = new ArraySegment<byte>(buffer, 0, buffer.Length) }, connection);
 }
Example #6
0
 private void TcpProcess(IDaemon daemon, LowLevelTcpConnection connection)
 {
     Buffer buffer =
         new Buffer()
             {
                 Segment = new ArraySegment<byte>(new byte[2048])
             };
     ReadOne(buffer, connection);
 }
Example #7
0
 public HttpResponse(LowLevelTcpConnection connection)
 {
     _connection = connection;
     Stream = new HttpResponseStream(connection);
 }
Example #8
0
 public HttpResponseStream(LowLevelTcpConnection connection)
 {
     _connection = connection;
 }