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); }
protected virtual void HandleActive(IClientObject client, RequestObject request) { RoomObject room = null; room = Manager.FindRoom(request.Args.ToString()); if (room != null) { room.AddListener(this); LogProvider.AppendRecord(string.Format("[{0}]: entered room {1}", client.Username, room.Name)); ChatMessage[] msgs = room.GetMessageHistoryTo(DateTime.Now); if (msgs.Length > 0) { client.SendMessage(ResponseConstructor.GetRoomHistoryResponse(room.Name, msgs)); } } }