private static void WriteCommand(dynamic dynamicElement, Command command) { switch (command.CommandType) { case CommandType.Login: LoginCommand loginCommand = (LoginCommand)command; dynamicElement.command.userInfo.name = loginCommand.UserInfo.Name; break; case CommandType.Ack: AckCommand ackCommand = (AckCommand)command; dynamicElement.command.messageId = ackCommand.MessageId; break; case CommandType.UserState: UserStateCommand userStateCommand = (UserStateCommand)command; dynamicElement.command.userInfo.name = userStateCommand.UserInfo.Name; dynamicElement.command.userState = userStateCommand.UserState; break; case CommandType.TextMessage: TextMessageCommand textMessageCommand = (TextMessageCommand)command; dynamicElement.command.from.userInfo.name = textMessageCommand.From.Name; dynamicElement.command.to.userInfo.name = textMessageCommand.To.Name; dynamicElement.command.textMessage = textMessageCommand.Message; break; default: throw new InvalidOperationException("Unsupported command type: " + command.CommandType); } }
public void SendTextMessage(string userName, string textMessage) { Contract.Requires(!string.IsNullOrEmpty(userName)); Contract.Requires(!string.IsNullOrEmpty(textMessage)); var textMessageCommand = new TextMessageCommand(new UserInfo(currentUserName), new UserInfo(userName), textMessage); var message = CreateMessage(textMessageCommand); SendMessage(message); }
private void HandleTextMessageCommand(long incomiMessageId, TextMessageCommand command) { using (usersSync.UseReadLock()) { var fromUserInfo = users.SingleOrDefault(ui => ui.UserInfo.Name == command.From.Name); var toUserInfo = users.SingleOrDefault(ui => ui.UserInfo.Name == command.To.Name); if (fromUserInfo == null || toUserInfo == null || toUserInfo.EndPoint == null) { // Can't forward message return; } var message = CreateMessage(command); SendMessage(toUserInfo.EndPoint, message); } }
public void ConvertTextMessageCommandTest() { long version = 1; long messageId = 123123; TextMessageCommand command = new TextMessageCommand( new UserInfo("from user"), new UserInfo("to user"), "text message"); Message message = new Message(version, messageId, command); //Converting to xml DynamicXmlMessageConverter converter = new DynamicXmlMessageConverter(); XElement xml = converter.ConvertToXml(message); // And back again Message message2 = converter.ConvertFromXml(xml); TextMessageCommand command2 = (TextMessageCommand)message2.Command; Assert.That(command2.From.Name, Is.EqualTo(command.From.Name)); Assert.That(command2.To.Name, Is.EqualTo(command.To.Name)); Assert.That(command2.Message, Is.EqualTo(command.Message)); }
public void TextMessageCommandTest() { string stringMessage = @"<message> <version>1</version> <messageId>123</messageId> <command type=""TextMessage""> <from> <userInfo> <name>Sender</name> </userInfo> </from> <to> <userInfo> <name>Receiver</name> </userInfo> </to> <textMessage>Some silly text message</textMessage> </command> </message>"; XElement xml = XElement.Parse(stringMessage); DynamicXmlMessageConverter converter = new DynamicXmlMessageConverter(); Message message = converter.ConvertFromXml(xml); // Checking command Command command = message.Command; Assert.That(command.CommandType, Is.EqualTo(CommandType.TextMessage)); TextMessageCommand textMessageCommand = (TextMessageCommand)command; Assert.That(textMessageCommand.From.Name, Is.EqualTo("Sender")); Assert.That(textMessageCommand.To.Name, Is.EqualTo("Receiver")); Assert.That(textMessageCommand.Message, Is.EqualTo("Some silly text message")); }