private void ProcessReceive(SocketAsyncEventArgs receiveSendEventArgs) { P2PPortClientConnectionHandler clientHandler = (P2PPortClientConnectionHandler)receiveSendEventArgs.UserToken; if (receiveSendEventArgs.SocketError != SocketError.Success) { //--------------------------------------------------------- // at this point the client has disconnected unexpectedly clientHandler.Reset(); CloseClientSocket(receiveSendEventArgs); return; } if (receiveSendEventArgs.BytesTransferred == 0) { clientHandler.Reset(); CloseClientSocket(receiveSendEventArgs); return; } Int32 remainingBytesToProcess = receiveSendEventArgs.BytesTransferred; if (clientHandler.receivedPrefixBytesDoneCount < P2PNetworkingDefinitions.DATA_SEND_RECEIVE_PREFIX_LENGHT) { remainingBytesToProcess = _prefixHandler.HandlePrefix(receiveSendEventArgs, clientHandler, remainingBytesToProcess); if (remainingBytesToProcess == 0) { StartReceive(receiveSendEventArgs); return; } } bool incomingTcpMessageIsReady; incomingTcpMessageIsReady = this._messageHandler.HandleData(receiveSendEventArgs, clientHandler, remainingBytesToProcess); if (incomingTcpMessageIsReady != true) { clientHandler.receiveMessageOffset = clientHandler.BufferOffsetReceive; clientHandler.recPrefixBytesDoneThisOp = 0; StartReceive(receiveSendEventArgs); } else { //the data transmission is finished //the data is treated this.ProcessReceivedData(clientHandler); clientHandler.CreateNewDataReceivedBuffer(P2PNetworkingDefinitions.DATABUFFER_SIZE); clientHandler.Reset(); } }
private void ProcessSend(SocketAsyncEventArgs receiveSendEventArgs) { P2PPortClientConnectionHandler clientHandler = (P2PPortClientConnectionHandler)receiveSendEventArgs.UserToken; if (receiveSendEventArgs.SocketError == SocketError.Success) { clientHandler.sendBytesRemainingCount = clientHandler.sendBytesRemainingCount - receiveSendEventArgs.BytesTransferred; if (clientHandler.sendBytesRemainingCount == 0) { StartReceive(receiveSendEventArgs); } else { clientHandler.bytesSentAlreadyCount += receiveSendEventArgs.BytesTransferred; StartSend(receiveSendEventArgs); } } else { //If we are in this else-statement, there was a socket error. clientHandler.Reset(); CloseClientSocket(receiveSendEventArgs); } }