public void ParseIncomingDataWithHeaderTest(int bytesTransfered)
        {
            _packetParser = new NetPacketParser(new DefaultNetPacketProcessor(includeHeader: true));

            var token = new NetDataToken();
            int numberOfReceivesNeeded = (_buffer.Length / bytesTransfered) + 1;
            var receviedMessages       = new List <byte[]>();

            for (int i = 0; i < numberOfReceivesNeeded; i++)
            {
                byte[] incomingBuffer = _buffer.Skip(i * bytesTransfered).Take(bytesTransfered).ToArray();

                IEnumerable <byte[]> messages = _packetParser.ParseIncomingData(token, incomingBuffer, Math.Min(bytesTransfered, incomingBuffer.Length));

                if (messages.Any())
                {
                    receviedMessages.AddRange(messages);
                }
            }

            Assert.Single(receviedMessages);

            string messageContent = Encoding.UTF8.GetString(_buffer);

            Assert.Equal(messageContent, Encoding.UTF8.GetString(receviedMessages.Single().ToArray()));
        }
        public void ParseIncomingDataWithInvalidSizeTest()
        {
            _packetParser = new NetPacketParser(_packetProcessor);
            var token = new NetDataToken();

            Assert.Throws <InvalidOperationException>(() => _packetParser.ParseIncomingData(token, _invalidBuffer, 32));
        }
        public NetPacketParserTests()
        {
            this._packetProcessor    = new NetPacketProcessor();
            this._packetParser       = new NetPacketParser(this._packetProcessor);
            this._buffer             = new List <int>(new[] { 16, 0, 0, 0, 12, 0, 0, 0, 72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33 }).Select(x => (byte)x).ToArray();
            this._bufferHeader       = this._buffer.Take(this._packetProcessor.HeaderSize).ToArray();
            this._bufferContent      = this._buffer.Skip(this._packetProcessor.HeaderSize).ToArray();
            this._bufferContentSize  = this._bufferContent.Take(sizeof(int)).ToArray();
            this._messageSize        = BitConverter.ToInt32(this._bufferHeader);
            this._messageContentSize = BitConverter.ToInt32(this._bufferContentSize) + sizeof(int); // extra int size for string length
            this._messageContent     = Encoding.UTF8.GetString(this._bufferContent.Skip(sizeof(int)).ToArray());

            this._invalidBuffer = new List <int>(new[] { 255, 255, 255, 255, 12, 0, 0, 0, 72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33 }).Select(x => (byte)x).ToArray();
        }
Пример #4
0
 /// <summary>
 /// Creates a new <see cref="NetReceiver"/> instance.
 /// </summary>
 /// <param name="packetProcessor">Default packet processor.</param>
 public NetReceiver(IPacketProcessor packetProcessor)
 {
     _packetParser = new NetPacketParser(packetProcessor);
 }
Пример #5
0
 /// <summary>
 /// Creates a new <see cref="NetReceiver"/> instance.
 /// </summary>
 /// <param name="packetProcessor">Default packet processor.</param>
 public NetReceiver(IPacketProcessor packetProcessor)
 {
     this._packetParser      = new NetPacketParser(packetProcessor);
     this._messageDispatcher = new NetMessageDispatcher(packetProcessor);
 }