예제 #1
0
        public void TryGetState_WithInvalidPackageLength()
        {
            var state   = new byte[] { 1, 2, 4, 8, 16, 32, 64, 128 };
            var package = LightPiProtocol.CreatePackage(state);

            // Destroy the length of the package.
            Array.Resize(ref package, 9);

            byte[] returnState;
            var    hasSucceeded = LightPiProtocol.TryParsePackage(package, out returnState);

            Assert.IsFalse(hasSucceeded);
        }
예제 #2
0
        public void TryGetState_WithInvalidPackagePrefix()
        {
            var state   = new byte[] { 1, 2, 4, 8, 16, 32, 64, 128 };
            var package = LightPiProtocol.CreatePackage(state);

            // Destroy the prefix of the package.
            package[0] = 32;

            byte[] returnState;
            var    hasSucceeded = LightPiProtocol.TryParsePackage(package, out returnState);

            Assert.IsFalse(hasSucceeded);
        }
예제 #3
0
        public void TryGetState()
        {
            var state   = new byte[] { 1, 2, 4, 8, 16, 32, 64, 128 };
            var package = LightPiProtocol.CreatePackage(state);

            byte[] returnState;
            var    hasSucceeded = LightPiProtocol.TryParsePackage(package, out returnState);

            Assert.IsTrue(hasSucceeded);
            Assert.AreEqual(state.Length, returnState.Length);

            for (var i = 0; i < state.Length; i++)
            {
                Assert.AreEqual(state[i], returnState[i]);
            }
        }
예제 #4
0
        private void ProcessMessage(DatagramSocket sender, DatagramSocketMessageReceivedEventArgs message)
        {
            var package = ReadPackageFromMessage(message);

            if (package == null)
            {
                return;
            }

            byte[] state;
            if (!LightPiProtocol.TryParsePackage(package, out state))
            {
                return;
            }

            _engine.EnqueueState(state);
        }
예제 #5
0
        private void ProcessIncomingData()
        {
            while (true)
            {
                try
                {
                    IPEndPoint remoteIPEndpoint = null;
                    byte[]     package          = _datagramSocket.Receive(ref remoteIPEndpoint);

                    byte[] state;
                    if (!LightPiProtocol.TryParsePackage(package, out state))
                    {
                        continue;
                    }

                    _callback(state);
                }
                catch (Exception exception)
                {
                    Debug.WriteLine(exception.ToString());
                }
            }
        }