private void SaveMessage(Message message) { var sender = _participants.FirstOrDefault(p => p.Id == message.Sender); using (var database = new RozmawiatorDb()) { var senderUser = database.Users.FirstOrDefault(u => u.UserName == sender.Nickname); if (senderUser == null) { return; } var conversation = database.Conversations.First(c => c.Id == _conversationId); var msg = new Database.Entities.Message { Content = message.GetTextContent(), Conversation = conversation, Sender = senderUser, Timestamp = DateTime.Now }; database.Messages.Add(msg); database.SaveChanges(); } }
public void HandleMessage(Message message) { switch (message.Type) { case Message.MessageType.Hello: case Message.MessageType.Bye: case Message.MessageType.KeepAlive: case Message.MessageType.Call: case Message.MessageType.CallRequest: case Message.MessageType.CallResponse: case Message.MessageType.CloseConversation: case Message.MessageType.DirectText: return; case Message.MessageType.Text: SaveMessage(message); break; case Message.MessageType.Audio: Resend(message, true); return; case Message.MessageType.HelloConversation: break; case Message.MessageType.ByeConversation: Disconnect(Server.GetClient(message.Sender)); break; default: throw new ArgumentOutOfRangeException(); } Resend(message); }
public void Broadcast(Message message, bool skipSender = false) { var sender = Server.GetClient(message.Sender); foreach (var client in _participants.Where(p => !skipSender || p != sender)) { client.Send(message); } }
public void Resend(Message message, bool skipSender = false) { Broadcast(message, skipSender); return; /* * if (message.Receiver == 0) * { * Broadcast(message); * } * else * { * Server.Send(Server.GetClient(message.Receiver), message); * } */ }