public OperandSelectorMessage Parse(OperandSelectorMessage unparsedMessage) { if (unparsedMessage.IsParsed) { throw new ArgumentException($"{nameof(OperandSelectorMessage)} has been already parsed"); } string[] tokens = unparsedMessage.Content.Split(OperandSelectorMessage.CONTENT_DELIMITER); if (tokens.Length == 3 && short.TryParse(tokens[0], out short senderId) && tokens[1].Length == 1) { unparsedMessage.SenderId = senderId; unparsedMessage.Type = (OperandSelectorMessageType)tokens[1][0]; unparsedMessage.Operand = tokens[2]; unparsedMessage.Content = string.Empty; } else { throw new ArgumentException($"{nameof(OperandSelectorMessage)} is in invalid format"); } return(unparsedMessage); }
public void ProcessParsedMessage(OperandSelectorMessage parsedMessage) { switch (parsedMessage.Type) { case OperandSelectorMessageType.NotParsed: throw new ArgumentException($"{nameof(OperandSelectorMessage)} must be parsed before being processed"); case OperandSelectorMessageType.OperandAvailable: NetworkOperator.Registers.Get <OperandSelector>(parsedMessage.SenderId).RegisterOperand(parsedMessage.Operand); break; case OperandSelectorMessageType.OperandUnavailable: NetworkOperator.Registers.Get <OperandSelector>(parsedMessage.SenderId).UnregisterOperand(parsedMessage.Operand); break; case OperandSelectorMessageType.SetOperand: NetworkOperator.Registers.Get <OperandSelector>(parsedMessage.SenderId).SelectOperand(parsedMessage.Operand); break; default: break; } }
public void ProcessUnparsedMessage(OperandSelectorMessage unparsedMessage) => ProcessParsedMessage(OperandSelectorMessageParser.Current.Parse(unparsedMessage));