示例#1
0
 void m_Peer_DataReceived(object sender, Utf8TcpPeerEventArgs e)
 {
     if (DataReceived != null)
     {
         DataReceived(this, e);
     }
 }
示例#2
0
 private void OnPeerDataReceived(object sender, Utf8TcpPeerEventArgs e)
 {
     if (DataReceived != null)
     {
         DataReceived(this, e);
     }
 }
示例#3
0
        private void AddNewClient(Socket socket)
        {
            if ((Options & Utf8TcpServerOptions.SingleClientOnly) != 0)
            {
                lock (m_PeerListLock)
                {
                    foreach (var pp in m_PeerList)
                    {
                        pp.Disconnect();
                    }
                }
            }

            Utf8TcpPeer peer = new Utf8TcpPeer(this, socket);

            lock (m_PeerListLock)
            {
                m_PeerList.Add(peer);
                peer.ConnectionClosed += OnPeerDisconnected;
                peer.DataReceived     += OnPeerDataReceived;
            }


            if (ClientConnected != null)
            {
                Utf8TcpPeerEventArgs args = new Utf8TcpPeerEventArgs(peer);
                ClientConnected(this, args);
            }

            peer.Start();
        }
示例#4
0
        void m_Peer_ConnectionClosed(object sender, Utf8TcpPeerEventArgs e)
        {
            if (m_Peer != null)
            {
                m_Peer.ConnectionClosed -= m_Peer_ConnectionClosed;
                m_Peer.DataReceived     -= m_Peer_DataReceived;
                m_Peer.Disconnect();
            }

            m_Peer = null;

            if (ClientDisconnected != null)
            {
                ClientDisconnected(this, e);
            }

            RetryConnectionIfNeeded();
        }
示例#5
0
        void OnPeerDisconnected(object sender, Utf8TcpPeerEventArgs e)
        {
            try
            {
                if (ClientDisconnected != null)
                {
                    ClientDisconnected(this, e);
                }

                lock (m_PeerListLock)
                {
                    m_PeerList.Remove(e.Peer);
                    e.Peer.ConnectionClosed -= OnPeerDisconnected;
                    e.Peer.DataReceived     -= OnPeerDataReceived;
                }
            }
            catch
            {
            }
        }