Ejemplo n.º 1
0
        private void HandleUserStateCommand(long incomingMessageId, UserStateCommand command)
        {
            using (usersSync.UseReadLock())
            {
                var userInfo = users.SingleOrDefault(ui => ui.UserInfo.Name == command.UserInfo.Name);
                if (userInfo == null)
                {
                    // Nothing to handle. This user unknown
                    return;
                }

                userInfo.ChangeUserState(command.UserState);
                SendUpdatedUserState(userInfo);
            }
        }
Ejemplo n.º 2
0
        private void SendUpdatedUserState(FullUserInfo userInfo)
        {
            Contract.Requires(userInfo != null);
            // Creating message to send
            var userStateCommand = new UserStateCommand(userInfo.UserInfo, userInfo.UserState);
            var message = new Message(1, messageId, userStateCommand);
            string xml = messageConverter.ConvertToXml(message).ToString();

            // Finding all connected users (without this particular user)
            var collectionToSend = users.Where(ui => ui.EndPoint != null && ui != userInfo);

            // And sending user information to them
            foreach (var ui in collectionToSend)
            {
                tcpServer.SendString(ui.EndPoint, xml);
            }
        }
        public void ConvertUserInfoCommandTest()
        {
            long version = 1;
            long messageId = 123123;

            UserStateCommand command = new UserStateCommand(new UserInfo("userName"), "userState");
            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);
            UserStateCommand command2 = (UserStateCommand)message2.Command;
            Assert.That(command2.UserInfo.Name, Is.EqualTo(command.UserInfo.Name));
            Assert.That(command2.UserState, Is.EqualTo(command.UserState));
        }