Exemplo n.º 1
0
        private void CompleteReceiveFrom(SocketAsyncEventArgs args)
        {
            PacketReadToken token = (PacketReadToken)args.UserToken;

            byte[] receiveBuffer = args.Buffer;

            switch (args.SocketError)
            {
            case SocketError.Success:
                receiveBuffer.CopyTo(token.UserBuffer);
                token.CompletionSource.SetResult(args.BytesTransferred);
                break;

            case SocketError.OperationAborted:
                token.CompletionSource.SetCanceled();
                break;

            default:
                token.CompletionSource.SetException(new SocketException((int)args.SocketError));
                break;
            }

            BufferPool.Return(receiveBuffer, true);
            ArgsPool.Return(args);
        }