public bool Handle(IClientObject client, RequestObject request) { if (request.Module != "history") { return(false); } object[] args = JsonConvert.DeserializeObject <object[]>(request.Args.ToString()); DateTime last; switch (request.Cmd) { case "room": string rstr = args[0] as string; string time = args[1].ToString(); last = DateTime.Parse(time).ToUniversalTime(); ChatMessage[] h = Manager.FindRoom(rstr)?.GetMessageHistoryTo(last); client.SendMessage(ResponseConstructor.GetRoomHistoryResponse(rstr, h)); break; case "private": string user1 = (string)args[0]; string user2 = (string)args[1]; time = args[2].ToString(); last = DateTime.Parse(time).ToUniversalTime(); h = HistoryDataprovider.GetPrivateHistory(user1, user2, last); client.SendMessage(ResponseConstructor.GetPrivateHistoryResponse(user2, h)); break; default: break; } return(true); }
public static void CloseRoom(string roomName) { RoomObject room = FindRoom(roomName); if (room != null) { Rooms.Remove(room); room.NewMessage -= HistoryDataprovider.AppendMessage; OnRoomDeleted(roomName); } HistoryDataprovider.RemoveHistory(roomName); }
public RoomObject(string name, string creator) { Name = name; Creator = creator; var history = HistoryDataprovider.GetHistory(name); if (history != null) { foreach (ChatMessage msg in history) { Messages.AddLast(msg); } } }
public bool Handle(IClientObject client, RequestObject request) { if (request.Module != "private") { return(false); } IClientObject recipient = Manager.FindClient(request.Cmd); if (recipient != null) { recipient.SendMessage(JsonConvert.SerializeObject(new RequestObject("private", null, request.Args))); ChatMessage msg = JsonConvert.DeserializeObject <ChatMessage>(request.Args.ToString()); msg.TimeStamp = msg.TimeStamp.ToUniversalTime(); HistoryDataprovider.AppendPrivateMessage(client.Username, recipient.Username, msg); } return(true); }