public void Unregister(IMonitoredTcpConnection connection)
 {
     lock (_lock)
     {
         DoUnregisterConnection(connection);
     }
 }
예제 #2
0
 public void Unregister(IMonitoredTcpConnection connection)
 {
     lock (_connectionsLock)
     {
         DoUnregisterConnection(connection);
     }
 }
예제 #3
0
        private static void CheckPendingSend(IMonitoredTcpConnection connection)
        {
            int pendingSendBytes = connection.PendingSendBytes;

            if (pendingSendBytes > 128 * 1024)
            {
                Log.Information("# {connection} {pendingSendKiloBytes}kb pending send", connection, pendingSendBytes / 1024);
            }
        }
예제 #4
0
        private static void CheckPendingReceived(IMonitoredTcpConnection connection)
        {
            uint pendingReceivedBytes = connection.PendingReceivedBytes;

            if (pendingReceivedBytes > 128 * 1024)
            {
                Log.Info("# {0} {1}kb are not dispatched", connection, pendingReceivedBytes / 1024);
            }
        }
        private static void CheckPendingReceived(IMonitoredTcpConnection connection)
        {
            uint pendingReceivedBytes = connection.PendingReceivedBytes;

            if (pendingReceivedBytes > 128*1024)
            {
                Console.WriteLine("# {0} {1}kb are not dispatched", connection, pendingReceivedBytes/1024);
            }
        }
예제 #6
0
        private void CheckPendingSend(IMonitoredTcpConnection connection)
        {
            uint pendingSendBytes = connection.PendingSendBytes;

            if (pendingSendBytes > 128 * 1024)
            {
                _log.Debug("# {0} {1}kb pending send", connection, pendingSendBytes / 1024);
            }
        }
예제 #7
0
        private static void CheckPendingSend(IMonitoredTcpConnection connection)
        {
            uint pendingSendBytes = connection.PendingSendBytes;

            if (pendingSendBytes > 128 * 1024)
            {
                Log.Info("# {0} {1}kb pending send", connection, pendingSendBytes / 1024);
            }
        }
        private static void CheckMissingReceiveCallback(ConnectionData connectionData, IMonitoredTcpConnection connection)
        {
            bool inReceive = connection.InReceive;
            bool isReadyForReceive = connection.IsReadyForReceive;
            DateTime? lastReceiveStarted = connection.LastReceiveStarted;

            int sinceLastReceive = (int)(DateTime.UtcNow - lastReceiveStarted.GetValueOrDefault()).TotalMilliseconds;
            bool missingReceiveCallback = inReceive && isReadyForReceive && sinceLastReceive > 500;

            if (missingReceiveCallback && connectionData.LastMissingReceiveCallBack)
            {
                Log.Error("# {0} {1}ms since last Receive started. No completion callback received, but socket status is READY_FOR_RECEIVE",
                          connection, sinceLastReceive);
            }
            connectionData.LastMissingReceiveCallBack = missingReceiveCallback;
        }
예제 #9
0
        private void CheckMissingReceiveCallback(ConnectionData connectionData, IMonitoredTcpConnection connection)
        {
            bool     inReceive          = connection.InReceive;
            bool     isReadyForReceive  = connection.IsReadyForReceive;
            DateTime?lastReceiveStarted = connection.LastReceiveStarted;

            int  sinceLastReceive       = (int)(DateTime.UtcNow - lastReceiveStarted.GetValueOrDefault()).TotalMilliseconds;
            bool missingReceiveCallback = inReceive && isReadyForReceive && sinceLastReceive > 500;

            if (missingReceiveCallback && connectionData.LastMissingReceiveCallBack)
            {
                _log.Error("# {0} {1}ms since last Receive started. No completion callback received, but socket status is READY_FOR_RECEIVE",
                           connection, sinceLastReceive);
            }
            connectionData.LastMissingReceiveCallBack = missingReceiveCallback;
        }
예제 #10
0
        private void CheckMissingSendCallback(ConnectionData connectionData, IMonitoredTcpConnection connection)
        {
            // snapshot all data?
            bool     inSend          = connection.InSend;
            bool     isReadyForSend  = connection.IsReadyForSend;
            DateTime?lastSendStarted = connection.LastSendStarted;
            uint     inSendBytes     = connection.InSendBytes;

            int  sinceLastSend       = (int)(DateTime.UtcNow - lastSendStarted.GetValueOrDefault()).TotalMilliseconds;
            bool missingSendCallback = inSend && isReadyForSend && sinceLastSend > 500;

            if (missingSendCallback && connectionData.LastMissingSendCallBack)
            {
                // _anySendBlockedOnLastRun = true;
                Log.Error(
                    "# {0} {1}ms since last send started. No completion callback received, but socket status is READY_FOR_SEND. In send: {2}",
                    connection, sinceLastSend, inSendBytes);
            }
            connectionData.LastMissingSendCallBack = missingSendCallback;
        }
예제 #11
0
 public void Register(IMonitoredTcpConnection connection)
 {
     lock (_connectionsLock)
     {
         DoRegisterConnection(connection);
     }
 }
 private static void CheckReceiveTimeout(ConnectionData connectionData, IMonitoredTcpConnection connection)
 {
     DateTime? lastReceiveStarted = connection.LastReceiveStarted;
     if (lastReceiveStarted == null)
         return;
     int sinceLastReceive = (int)(DateTime.Now - lastReceiveStarted.GetValueOrDefault()).TotalMilliseconds;
     if (sinceLastReceive > 10000)
     {
         Console.Error.WriteLine(
             "# {0} {1}ms since last Receive started. No data receive din 10000ms. TIMEOUT DETECTED",
             connection, sinceLastReceive);
     }
 }
예제 #13
0
        public void Unregister(IMonitoredTcpConnection connection)
        {
            ConnectionData data;

            _connections.TryRemove(connection, out data);
        }
예제 #14
0
 public void Register(IMonitoredTcpConnection connection)
 {
     _connections.TryAdd(connection, new ConnectionData(connection));
 }
예제 #15
0
 private void DoUnregisterConnection(IMonitoredTcpConnection connection)
 {
     _connections.Remove(connection);
 }
예제 #16
0
 public ConnectionData(IMonitoredTcpConnection connection)
 {
     _connection = connection;
 }
예제 #17
0
 public void Unregister(IMonitoredTcpConnection connection)
 {
     _connections.TryRemove(connection, out ConnectionData _);
 }
예제 #18
0
 private void DoRegisterConnection(IMonitoredTcpConnection connection)
 {
     _connections.Add(connection, new ConnectionData(connection));
 }
예제 #19
0
 private void DoUnregisterConnection(IMonitoredTcpConnection connection)
 {
     _connections.Remove(connection);
 }
예제 #20
0
        private void CheckPendingSend(IMonitoredTcpConnection connection)
        {
            uint pendingSendBytes = connection.PendingSendBytes;

            if (pendingSendBytes > 128 * 1024)
            {
                _log.Debug("# {0} {1}kb pending send", connection, pendingSendBytes / 1024);
            }
        }
 private void CheckPendingReceived(IMonitoredTcpConnection connection)
 {
     int pendingReceivedBytes = connection.PendingReceivedBytes;
     if (pendingReceivedBytes > 128 * 1024)
     {
         _log.Info("# {0} {1}kb are not dispatched", connection, pendingReceivedBytes / 1024);
     }
 }
 public void Unregister(IMonitoredTcpConnection connection)
 {
     ConnectionData data;
     _connections.TryRemove(connection, out data);
 }
 public void Register(IMonitoredTcpConnection connection)
 {
     _connections.TryAdd(connection, new ConnectionData(connection));
 }
예제 #24
0
 private void DoRegisterConnection(IMonitoredTcpConnection connection)
 {
     _connections.Add(connection, new ConnectionData(connection));
 }
예제 #25
0
        private void CheckMissingSendCallback(ConnectionData connectionData, IMonitoredTcpConnection connection)
        {
            // snapshot all data?
            bool inSend = connection.InSend;
            bool isReadyForSend = connection.IsReadyForSend;
            DateTime? lastSendStarted = connection.LastSendStarted;
            uint inSendBytes = connection.InSendBytes;

            int sinceLastSend = (int)(DateTime.UtcNow - lastSendStarted.GetValueOrDefault()).TotalMilliseconds;
            bool missingSendCallback = inSend && isReadyForSend && sinceLastSend > 500;

            if (missingSendCallback && connectionData.LastMissingSendCallBack)
            {
                // _anySendBlockedOnLastRun = true;
                Log.Error(
                    "# {0} {1}ms since last send started. No completion callback received, but socket status is READY_FOR_SEND. In send: {2}",
                    connection, sinceLastSend, inSendBytes);
            }
            connectionData.LastMissingSendCallBack = missingSendCallback;
        }
예제 #26
0
 public ConnectionData(IMonitoredTcpConnection connection)
 {
     _connection = connection;
 }
예제 #27
0
        private static void CheckPendingSend(IMonitoredTcpConnection connection)
        {
            uint pendingSendBytes = connection.PendingSendBytes;

            if (pendingSendBytes > 128 * 1024)
            {
                Log.Info("# {0} {1}kb pending send", connection, pendingSendBytes / 1024);
            }
        }