public FastcgiRequest(FastcgiHandler FastcgiHandler, ushort RequestId) { this.FastcgiHandler = FastcgiHandler; this.RequestId = RequestId; this.ParamsStream = new FascgiRequestInputStream(); this.StdinStream = new FascgiRequestInputStream(); this.StdoutStream = new FascgiResponseOutputStream(this, Fastcgi.PacketType.FCGI_STDOUT); this.StderrStream = new FascgiResponseOutputStream(this, Fastcgi.PacketType.FCGI_STDERR); }
/* * class ConnectionState * { * public AsyncCallback ReadAsyncCallback; * public Socket ClientSocket; * public const int DataSize = 1024; * public byte[] Data = new byte[DataSize]; * public ProduceConsumeBuffer<byte> Buffer = new ProduceConsumeBuffer<byte>(); * * public ConnectionState(Socket ClientSocket, AsyncCallback ReadAsyncCallback) * { * this.ClientSocket = ClientSocket; * this.ReadAsyncCallback = ReadAsyncCallback; * } * * public void BeginReceive() * { * ClientSocket.BeginReceive(Data, 0, DataSize, 0, ReadAsyncCallback, this); * } * } * * void HandleAcceptedCallbackAsync(IAsyncResult AsyncResult) { * Socket ClientSocket = TcpListener.EndAcceptSocket(AsyncResult); * * AcceptMutex.Set(); * * var ConnectionState = new ConnectionState(ClientSocket, new AsyncCallback(HandleReadCallbackAsync)); * ConnectionState.BeginReceive(); * * Console.WriteLine("HandleAcceptedCallbackAsync"); * } * * void HandleReadCallbackAsync(IAsyncResult AsyncResult) * { * ConnectionState ConnectionState = (ConnectionState)AsyncResult.AsyncState; * Socket ClientSocket = ConnectionState.ClientSocket; * int ReadedCount = ClientSocket.EndReceive(AsyncResult); * * Console.WriteLine("HandleReadCallbackAsync"); * * if (ReadedCount > 0) * { * ConnectionState.Buffer.Produce(ConnectionState.Data, 0, ReadedCount); * Console.WriteLine(ConnectionState.Buffer.ConsumeRemaining); * ConnectionState.BeginReceive(); * } * else * { * ClientSocket.Close(); * } * } */ protected void HandleAcceptedSocket(Object _Socket) { var Socket = (Socket)_Socket; if (Debug) { Console.WriteLine("HandleAcceptedSocket: " + Socket); } //Console.Write("."); var FastcgiHandler = new FastcgiHandler(new FastcgiPipeSocket(Socket), Debug); FastcgiHandler.HandleFastcgiRequest += HandleFascgiRequest; FastcgiHandler.Reader.ReadAllPackets(); }
public void FastcgiHandlerConstructorTest() { var ConsumerMemoryStream = new ConsumerMemoryStream(); WriteBeginRequest(ConsumerMemoryStream); var FastcgiHandler = new FastcgiHandler(new FastcgiPipeStream(ConsumerMemoryStream)); FastcgiHandler.Reader.HandlePacket += delegate(Fastcgi.PacketType Type, ushort RequestId, byte[] Content) { Assert.AreEqual(Type, Fastcgi.PacketType.FCGI_BEGIN_REQUEST); Assert.AreEqual(RequestId, 1); Console.WriteLine(Content.Implode(",")); CollectionAssert.AreEqual(Content, new byte[] { 1, 2, 3, 4, 5, 6, 7, 8 }); return true; }; FastcgiHandler.Reader.ReadPacket(); }
/* class ConnectionState { public AsyncCallback ReadAsyncCallback; public Socket ClientSocket; public const int DataSize = 1024; public byte[] Data = new byte[DataSize]; public ProduceConsumeBuffer<byte> Buffer = new ProduceConsumeBuffer<byte>(); public ConnectionState(Socket ClientSocket, AsyncCallback ReadAsyncCallback) { this.ClientSocket = ClientSocket; this.ReadAsyncCallback = ReadAsyncCallback; } public void BeginReceive() { ClientSocket.BeginReceive(Data, 0, DataSize, 0, ReadAsyncCallback, this); } } void HandleAcceptedCallbackAsync(IAsyncResult AsyncResult) { Socket ClientSocket = TcpListener.EndAcceptSocket(AsyncResult); AcceptMutex.Set(); var ConnectionState = new ConnectionState(ClientSocket, new AsyncCallback(HandleReadCallbackAsync)); ConnectionState.BeginReceive(); Console.WriteLine("HandleAcceptedCallbackAsync"); } void HandleReadCallbackAsync(IAsyncResult AsyncResult) { ConnectionState ConnectionState = (ConnectionState)AsyncResult.AsyncState; Socket ClientSocket = ConnectionState.ClientSocket; int ReadedCount = ClientSocket.EndReceive(AsyncResult); Console.WriteLine("HandleReadCallbackAsync"); if (ReadedCount > 0) { ConnectionState.Buffer.Produce(ConnectionState.Data, 0, ReadedCount); Console.WriteLine(ConnectionState.Buffer.ConsumeRemaining); ConnectionState.BeginReceive(); } else { ClientSocket.Close(); } } */ protected void HandleAcceptedSocket(Object _Socket) { var Socket = (Socket)_Socket; if (Debug) { Console.WriteLine("HandleAcceptedSocket: " + Socket); } //Console.Write("."); var FastcgiHandler = new FastcgiHandler(new FastcgiPipeSocket(Socket), Debug); FastcgiHandler.HandleFastcgiRequest += HandleFascgiRequest; FastcgiHandler.Reader.ReadAllPackets(); }