Inheritance: System.EventArgs
コード例 #1
0
ファイル: HttpServer.cs プロジェクト: sq/Fracture
        private IEnumerator<object> KeepAliveTask(ListenerContext context, IncomingConnection incomingConnection)
        {
            var socket = incomingConnection.Socket;
            EndPoint localEp = socket.LocalEndPoint, remoteEp = socket.RemoteEndPoint;
            var evtArgs = new ConnectionEventArgs(localEp, remoteEp);

            var keepAliveStarted = DateTime.UtcNow;

            if (SocketOpened != null)
                SocketOpened(this, evtArgs);

            int requestCount = 0;

            try {
                using (var adapter = new SocketDataAdapter(socket, true)) {
                    while (!adapter.IsDisposed && adapter.Socket.Connected) {
                        var fTask = Scheduler.Start(RequestTask(context, adapter));
                        yield return fTask;

                        requestCount += 1;

                        if (fTask.Failed) {
                            adapter.Dispose();
                            yield break;
                        }
                    }
                }
            } finally {
                var keepAliveEnded = DateTime.UtcNow;

                if (SocketClosed != null)
                    SocketClosed(this, evtArgs);

                if (Trace != null)
                    Trace(
                        String.Format(
                            "KA_START {0:0000.0}ms  KA_LENGTH {1:00000.0}ms  {2} REQ(S)",
                            (keepAliveStarted - incomingConnection.AcceptedWhenUTC).TotalMilliseconds,
                            (keepAliveEnded - keepAliveStarted).TotalMilliseconds,
                            requestCount
                        )
                    );
            }
        }
コード例 #2
0
ファイル: Program.cs プロジェクト: sq/Fracture
 static void OnSocketOpened(object server, ConnectionEventArgs e)
 {
     Console.WriteLine("{0} <- {1} open", e.LocalEndPoint, e.RemoteEndPoint);
 }