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);
            }
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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);
            }
        }
Esempio n. 4
0
        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));
        }
Esempio n. 5
0
        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"));
        }