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)); }
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)); }
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; } }
public async Task WriteMessage(TcpClient client, MessageData message) { byte[] bytes = message.ToByteArray(); var stream = client?.GetStream(); stream?.WriteAsync(bytes, 0, bytes.Length); }
private void RemoveClient(MessageData msg) { User user; _clients.TryRemove(msg.Id, out user); user.Client.Close(); }
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); }
private void Broadcast(MessageData msg) { foreach (var client in _clients.Where(client => client.Key != msg.Id)) { WriteMessage(client.Value.Client, msg); } }