public bool HandlePacket(SocketAsyncEventArgs ioEventArgs, PacketStreamer streamer) { var dataToken = (DataToken)ioEventArgs.UserToken; var offset = ioEventArgs.Offset; var count = ioEventArgs.BytesTransferred; do { if (!dataToken.IsPrefixReady) { HandlePrefix(dataToken, ioEventArgs.Buffer, ref offset, ref count); if (dataToken.IsPrefixReady && (dataToken.MessageLength > DataToken.MaxMessageLength || dataToken.MessageLength <= 0)) { return(false); } if (count == 0) { break; } } HandleBody(dataToken, ioEventArgs.Buffer, ref offset, ref count); if (dataToken.IsMessageReady) { streamer.Enqueue(dataToken.ByteArrayForMessage); dataToken.Reset(); } } while (count > 0); return(true); }
public bool HandlePacket(SocketAsyncEventArgs ioEventArgs, PacketStreamer streamer) { var length = ioEventArgs.BytesTransferred; var bytes = new byte[length]; Array.Copy(ioEventArgs.Buffer, ioEventArgs.Offset, bytes, 0, length); streamer.Enqueue(bytes); return(true); }