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(); }