Exemple #1
0
        public void CommandMessageTest()
        {
            // try setting value with constructor
            CommandMessage message = new CommandMessage
            {
                netId          = 42,
                componentIndex = 4,
                functionHash   = 0xABCDEF,
                payload        = new ArraySegment <byte>(new byte[] { 0x01, 0x02 })
            };

            // serialize
            NetworkWriter writer = new NetworkWriter();

            message.Serialize(writer);
            byte[] writerData = writer.ToArray();

            // deserialize the same data - do we get the same result?
            CommandMessage fresh = new CommandMessage();

            fresh.Deserialize(new NetworkReader(writerData));
            Assert.That(fresh.netId, Is.EqualTo(message.netId));
            Assert.That(fresh.componentIndex, Is.EqualTo(message.componentIndex));
            Assert.That(fresh.functionHash, Is.EqualTo(message.functionHash));
            Assert.That(fresh.payload.Count, Is.EqualTo(message.payload.Count));
            for (int i = 0; i < fresh.payload.Count; ++i)
            {
                Assert.That(fresh.payload.Array[fresh.payload.Offset + i],
                            Is.EqualTo(message.payload.Array[message.payload.Offset + i]));
            }
        }
        protected override void OnWorkerStart(CancellationToken token)
        {
            commandsQueue.Subscribe(command =>
            {
                var cmd = CommandMessage <ConfigurationDto> .Deserialize(command);
                SimpleLog.WriteLine($"cmd: {cmd.CommandName}");
                switch (cmd.CommandName)
                {
                case CommandMessageName.UPDATE_CONFIGURATION_COMMAND_NAME:
                    var cfg = cmd.Payload;
                    ConfigurationContext.Timeout          = cfg.Timeout;
                    ConfigurationContext.BarcodeSeparator = cfg.BarcodeSeparator;

                    break;

                case CommandMessageName.SEND_STATUS_COMMAND_NAME:
                    statusObserver.PublishStatusMessages();
                    break;
                }
            });

            token.WaitHandle.WaitOne();
        }