Ejemplo n.º 1
0
        private void OnDataArrive(IConnection connection, byte[] data)
        {
            _worker.Queue(() => {
                var peer          = _peers[connection.Endpoint];
                var butesReceived = data.Length;

                GlobalReceiveSpeedWatcher.AddBytes(butesReceived);

                peer.Statistics.AddReceivedBytes(butesReceived);
                peer.ReceiveSpeedWatcher.AddBytes(butesReceived);

                Events.RaiseAsync(PeerDataReceived, this, new PeerDataEventArgs(peer, data));
            });
        }
Ejemplo n.º 2
0
        internal async Task <int> ReceiveAsync(byte[] buffer, int offset, int count, IPEndPoint endpoint)
        {
            Guard.NotNull(buffer, "buffer");
            Guard.NotNull(endpoint, "endpoint");
            Guard.ContainsKey(_peers, endpoint, "Peer is not registered.");

            var peer = _peers[endpoint];

            try
            {
                var received = await peer.Connection.ReceiveAsync(new ArraySegment <byte>(buffer, offset, count));

                GlobalReceiveSpeedWatcher.AddBytes(received);
                peer.Statistics.AddReceivedBytes(received);
                peer.ReceiveSpeedWatcher.AddBytes(received);
                return(received);
            }
            catch (SocketException)
            {
                DisconnectPeer(peer);
                return(0);
            }
        }