示例#1
0
        private bool HandleReceiveQueue()
        {
            TunnelDataMessage[] tdmsgs = null;

            lock ( ReceiveQueue )
            {
                if (ReceiveQueue.Count == 0)
                {
                    return(true);
                }

                if (ReceiveQueue.Any(mq => mq.MessageType == I2NPMessage.MessageTypes.TunnelData))
                {
                    var removelist = ReceiveQueue.Where(mq => mq.MessageType == I2NPMessage.MessageTypes.TunnelData);
                    tdmsgs = removelist.Select(mq => (TunnelDataMessage)mq.Message).ToArray();
                }

                ReceiveQueue.Clear(); // Just drop the non-TunnelData
            }

            if (tdmsgs != null)
            {
                return(HandleTunnelData(tdmsgs));
            }

            return(true);
        }
        /// <summary>
        /// 
        /// </summary>
        internal ClientSocketManager( Listener listener, ServiceHandler serviceHandler, ReceiveQueue receiveBuffer )
        {
            if ( listener == null )
                throw new Exception( "ClientSocketHandler.ClientSocketManager(...) - listener == null error!" );

            if ( serviceHandler == null )
                throw new Exception( "ClientSocketHandler.ClientSocketManager(...) - serviceHandle == null error!" );

            if ( receiveBuffer == null )
                throw new Exception( "ClientSocketHandler.ClientSocketManager(...) - receiveBuffer == null error!" );

            m_Listener = listener;
            m_ServiceHandle = serviceHandler;
            m_ReceiveBuffer = receiveBuffer;
            {
                // 清空数据
                m_ReceiveBuffer.Clear();
            }

            m_ServiceHandle.EventProcessData += new EventHandler<ProcessDataAtServerEventArgs>( this.OnListenerProcessMessageBlock );
            m_ServiceHandle.EventDisconnect += new EventHandler<DisconnectAtServerEventArgs>( this.OnListenerDisconnect );

            // 初始化数据 表示还没调用过Free(...)函数
            m_LockFree.SetValid();
        }
        public void ClearTest()
        {
            ReceiveQueue target = new ReceiveQueue(); // TODO: 初始化为适当的值

            target.Clear();
            Assert.Inconclusive("无法验证不返回值的方法。");
        }
示例#4
0
 public void Disconnect()
 {
     if (_port.IsOpen)
     {
         _port.Close();
     }
     IsConnected = false;
     ReceiveQueue.Clear();
 }
示例#5
0
        public void ProcessMessages()
        {
            MemoryStream stream;

            lock (ReceiveQueue)
            {
                stream = new MemoryStream(ReceiveQueue.ToArray());
                ReceiveQueue.Clear();
            }
            ReceivedMessages = Message.FromPackedBytes(stream);
        }
示例#6
0
        internal void Stop()
        {
            DhtMessageFactory = new DhtMessageFactory();
            SendQueue.Clear();
            ReceiveQueue.Clear();
            WaitingResponse.Clear();
            WaitingResponseTimedOut.Clear();

            if (Listener.Status != ListenerStatus.NotListening)
            {
                Listener.Stop();
            }
        }
示例#7
0
        protected virtual void OnDisconnect(TCPClient client)
        {
            if (this.ProgramRunning)
            {
                ErrorLog.Warn("TCP Client to {0} disconnected!", client.AddressClientConnectedTo);
                _sendQueue.Clear();
                ReceiveQueue.Clear();

                if (_shouldReconnect)
                {
#if DEBUG
                    CrestronConsole.PrintLine("Retrying connection to {0}", _client.AddressClientConnectedTo);
#endif
                    this.Connect(_shouldReconnect);
                }
            }
        }
示例#8
0
        /// <summary>
        /// 
        /// </summary>
        internal ClientSocketManager( Listener listener, ServiceHandler serviceHandler, ReceiveQueue receiveBuffer )
        {
            if ( listener == null )
                throw new ArgumentNullException( "listener", "ClientSocketHandler.ClientSocketManager(...) - listener == null error!" );

            if ( serviceHandler == null )
                throw new ArgumentNullException( "serviceHandler", "ClientSocketHandler.ClientSocketManager(...) - serviceHandle == null error!" );

            if ( receiveBuffer == null )
                throw new ArgumentNullException( "receiveBuffer", "ClientSocketHandler.ClientSocketManager(...) - receiveBuffer == null error!" );

            m_Listener = listener;
            m_ServiceHandle = serviceHandler;
            m_ReceiveBuffer = receiveBuffer;
            {
                // �������
                m_ReceiveBuffer.Clear();
            }

            m_ServiceHandle.EventProcessData += OnListenerProcessMessageBlock;
            m_ServiceHandle.EventDisconnect += OnListenerDisconnect;

            // ��ʼ������ ��ʾ��û���ù�Free(...)����
            m_LockFree.SetValid();
        }
示例#9
0
        /// <summary>
        /// 
        /// </summary>
        internal ClientSocketManager( Connecter connecter, ConnectHandler connectHandler, ReceiveQueue receiveBuffer  )
        {
            if ( connecter == null )
                throw new ArgumentNullException( "ClientSocketHandler.ClientSocketManager(...) - listener == null error!" );

            if ( connectHandler == null )
                throw new ArgumentNullException( "ClientSocketHandler.ClientSocketManager(...) - serviceHandle == null error!" );

            if ( receiveBuffer == null )
                throw new ArgumentNullException( "receiveBuffer", "ClientSocketHandler.ClientSocketManager(...) - receiveBuffer == null error!" );

            m_Connecter = connecter;
            m_ConnectHandle = connectHandler;
            m_ReceiveBuffer = receiveBuffer;
            {
                // �������
                m_ReceiveBuffer.Clear();
            }

            // ��ʼ������ ��ʾ��û���ù�Free(...)����
            m_LockFree.SetValid();
        }
        /// <summary>
        /// 
        /// </summary>
        internal ClientSocketManager( Connecter connecter, ConnectHandler connectHandler, ReceiveQueue receiveBuffer  )
        {
            if ( connecter == null )
                throw new Exception( "ClientSocketHandler.ClientSocketManager(...) - listener == null error!" );

            if ( connectHandler == null )
                throw new Exception( "ClientSocketHandler.ClientSocketManager(...) - serviceHandle == null error!" );

            if ( receiveBuffer == null )
                throw new Exception( "ClientSocketHandler.ClientSocketManager(...) - receiveBuffer == null error!" );

            m_Connecter = connecter;
            m_ConnectHandle = connectHandler;
            m_ReceiveBuffer = receiveBuffer;
            {
                // 清空数据
                m_ReceiveBuffer.Clear();
            }

            // 初始化数据 表示还没调用过Free(...)函数
            m_LockFree.SetValid();
        }