Esempio n. 1
0
        void ProcessMessage(MessageData msg)
        {
            switch (msg.CmdCommand)
            {
                case MessageData.Command.Login:

                    break;
                case MessageData.Command.ChangeName:
                    UserName = msg.UserName;
                    break;
                case MessageData.Command.Message:
                    MessageReceived?.Invoke(msg);
                    break;
                case MessageData.Command.List:
                    
                    break;
                default:
                    break;
            }

        }
        public void TestMessageDataToByteConvertion2()
        {
            MessageData expectedMessage = new MessageData
            {
                Id = Guid.Empty,
                CmdCommand = MessageData.Command.Login,
                Status = MessageData.UserStatus.Offline,
                Message = null,
                UserName = "",
                MessageTime = DateTime.MinValue,
            };


            byte[] bytes = expectedMessage.ToByteArray();
            var convertedMessage = bytes.ByteArrayToMessage() as MessageData;

            Assert.That(expectedMessage.Message, Is.EqualTo(convertedMessage.Message));
            Assert.That(expectedMessage.UserName, Is.EqualTo(convertedMessage.UserName));
            Assert.That(expectedMessage.Id, Is.EqualTo(convertedMessage.Id));
            Assert.That(expectedMessage.Status, Is.EqualTo(convertedMessage.Status));
            Assert.That(expectedMessage.CmdCommand, Is.EqualTo(convertedMessage.CmdCommand));
        }
Esempio n. 3
0
        public async Task WriteMessageAsync(MessageData message)
        {
            if(Stream == null)
                throw new Exception("WriteMessageAsync() : Stream is null");
            byte[] bytes = message.ToByteArray();
            Stream.WriteAsync(bytes, 0, bytes.Length);

        }
 private UserMessageViewModel ConvertMessageDataToViewModel(MessageData msgData)
 {
     return new UserMessageViewModel()
     {
         Message = msgData.Message,
         Command = msgData.CmdCommand.ToString(),
         Id = msgData.Id.ToString(),
         Status = msgData.Status.ToString(),
         MessageTime = msgData.MessageTime.ToString(CultureInfo.InvariantCulture),
     };
 }
 public void OnMessageDataReceived(MessageData message)
 {
     UserMessages.Add(ConvertMessageDataToViewModel(message));
 }
Esempio n. 6
0
        void ProcessMessage(MessageData msg)
        {
            switch (msg.CmdCommand)
            {
                case MessageData.Command.Login:
                    
                    break;
                case MessageData.Command.ChangeName:
                    break;
                case MessageData.Command.Message:
                    WriteLine(msg.Message);
                    Broadcast(msg);
                    break;
                case MessageData.Command.List:
                    ReturnUserList(msg);
                    break;
                case MessageData.Command.Logout:
                default:
                    RemoveClient(msg);
                    break;
            }

        }
Esempio n. 7
0
 public async Task WriteMessage(TcpClient client, MessageData message)
 {
     byte[] bytes = message.ToByteArray();
     var stream = client?.GetStream();
     stream?.WriteAsync(bytes, 0, bytes.Length);
 }
Esempio n. 8
0
 private void RemoveClient(MessageData msg)
 {
     User user;
     _clients.TryRemove(msg.Id, out user);
     user.Client.Close();
 }
Esempio n. 9
0
        private void ReturnUserList(MessageData msg)
        {
            Guid id = msg.Id;
            string name = msg.UserName;

            string usersList = string.Join(String.Empty, _clients.Where(u => u.Key != id).Select(user => $"{user.Value.Name},"));
            
            var responce = new MessageData()
            {
                Id = id,
                Message = usersList,
                UserName = name,
                CmdCommand = MessageData.Command.List,
                MessageTime = DateTime.Now
            };

            WriteMessage(_clients[id].Client , responce);
        }
Esempio n. 10
0
 private void Broadcast(MessageData msg)
 {
     foreach (var client in _clients.Where(client => client.Key != msg.Id))
     {
         WriteMessage(client.Value.Client, msg);
     }
 }