Esempio n. 1
0
        public void Read_DataBelongsToTheNextPacket_ReturnsTheSameDataOfTheFirstPacket_StartsNewSessionAndReturnsTheDataOfTheSecondPacket()
        {
            byte[] dataOne = { 0, 1, 2 };
            byte[] dataTwo = { 3, 4, 5 };

            byte[] finalBytes = new byte[dataOne.Length + dataTwo.Length];
            dataOne.CopyTo(finalBytes, 0);
            dataTwo.CopyTo(finalBytes, dataOne.Length);


            byte[] framedDataOne = MessageFramingProtocol.Frame(dataOne);
            byte[] framedDataTwo = MessageFramingProtocol.Frame(dataTwo);

            byte[] finalFramedBytes = new byte[framedDataOne.Length + framedDataTwo.Length];
            framedDataOne.CopyTo(finalFramedBytes, 0);
            framedDataTwo.CopyTo(finalFramedBytes, framedDataOne.Length);

            byte[] receivedData = null;
            var    protocol     = new MessageFramingProtocol(20);

            protocol.DataReceivedEvent += (received) => Task.Run(() =>
            {
                if (receivedData == null)
                {
                    receivedData = received;
                }
                else
                {
                    received.FlexCopyTo <byte>(ref receivedData);
                }
            });
            protocol.Read(finalFramedBytes);

            Assert.AreEqual(finalBytes, receivedData);
        }
Esempio n. 2
0
        public void Read_PassingHighSizeDataWithNetworkSimulation_ReturnsTheSameData()
        {
            var path = Path.GetFullPath(TestContext.CurrentContext.TestDirectory) + @"\SampleTextFile_1000kb.txt";

            byte[] data         = File.ReadAllBytes(path);
            byte[] framedData   = MessageFramingProtocol.Frame(data);
            byte[] receivedData = null;
            var    protocol     = new MessageFramingProtocol(20 * 1024 * 1024);

            protocol.DataReceivedEvent += (receive) => Task.Run(() => receivedData = receive);

            using (var ms = new MemoryStream(framedData))
            {
                var tempBuffer = new byte[100];

                for (int i = 100; i <= framedData.Length; i += 100)
                {
                    ms.Read(tempBuffer, 0, tempBuffer.Length);
                    protocol.Read(tempBuffer);
                    ms.Seek(i, SeekOrigin.Begin);
                }
            }

            Assert.AreEqual(data, receivedData);
        }
Esempio n. 3
0
        public void Frame__ReturnsDataWithHeaderThatContainsItsLength()
        {
            byte[] data   = { 0, 1, 2 };
            var    result = MessageFramingProtocol.Frame(data);
            var    dataLengthFromTheHeader = BitConverter.ToInt32(result.Take(4).ToArray(), 0);

            Assert.Greater(result.Length, data.Length);
            Assert.AreEqual(dataLengthFromTheHeader, data.Length);
        }
Esempio n. 4
0
 public void Dispose()
 {
     if (!IsDisposed)
     {
         _receivingBuffer             = null;
         _protocol.DataReceivedEvent -= MessageFraming_DataReceivedEvent;
         _protocol = null;
         ClientSocket.Dispose();
         ClientSocket = null;
         IsDisposed   = true;
     }
 }
Esempio n. 5
0
        public void Read_PassingLowSizeData_ReturnsTheSameData()
        {
            byte[] data         = { 0, 1, 2 };
            byte[] framedData   = MessageFramingProtocol.Frame(data);
            byte[] receivedData = null;
            var    protocol     = new MessageFramingProtocol(20);

            protocol.DataReceivedEvent += (receive) => Task.Run(() => receivedData = receive);

            protocol.Read(framedData);

            Assert.AreEqual(data, receivedData);
        }
Esempio n. 6
0
        public void Read_PassingHighSizeData_ReturnsTheSameData()
        {
            var path = Path.GetFullPath(TestContext.CurrentContext.TestDirectory) + @"\SampleTextFile_1000kb.txt";

            byte[] data         = File.ReadAllBytes(path);
            byte[] framedData   = MessageFramingProtocol.Frame(data);
            byte[] receivedData = null;
            var    protocol     = new MessageFramingProtocol(20 * 1024 * 1024);

            protocol.DataReceivedEvent += (receive) => Task.Run(() => receivedData = receive);

            protocol.Read(framedData);

            Assert.AreEqual(data, receivedData);
        }
Esempio n. 7
0
        public async Task SendPacket(IPacket packet)
        {
            byte[] buffer;

            using (var ms = new MemoryStream())
            {
                await LightRATUtils.Instance.packetSerializer.SerializeAsync(ms, packet);

                buffer = ms.ToArray();
            }

            var compressedData = await CryptEngine.CompressAsync(buffer);

            var framedData = await MessageFramingProtocol.FrameAsync(compressedData);

            ClientSocket.BeginSend(framedData, 0, framedData.Length, SocketFlags.None, SendCallback, null);
        }
Esempio n. 8
0
 public void Frame_PassingNullData_ThrowsNullException()
 {
     Assert.Throws <ArgumentNullException>(() => MessageFramingProtocol.Frame(null));
 }