//----------------------[ RTM Operations ]-------------------// public Answer Ping(Int64 connectionId, string endpoint, Quest quest) { AdvanceAnswer.SendAnswer(new Answer(quest)); Int64 now = ClientEngine.GetCurrentSeconds(); Interlocked.Exchange(ref lastPingTime, now); return(null); }
public Answer DuplexQuest(Int64 connectionId, string endpoint, Quest quest) { Console.WriteLine("Received server push. Value of key 'int' is{0}", quest.Want <int>("int")); AdvanceAnswer.SendAnswer(new Answer(quest)); Console.WriteLine("Answer is sent, processor will do other thing, and function will not return."); Thread.Sleep(2000); Console.WriteLine("processor function will return."); return(null); }
public Answer PushRoomMessage(Int64 connectionId, string endpoint, Quest quest) { AdvanceAnswer.SendAnswer(new Answer(quest)); if (questProcessor == null) { return(null); } long from = quest.Want <long>("from"); long roomId = quest.Want <long>("rid"); long mid = quest.Want <long>("mid"); if (duplicatedFilter.CheckRoomMessage(roomId, from, mid) == false) { return(null); } RTMMessage rtmMessage = BuildRTMMessage(quest, from, roomId, mid); if (rtmMessage.messageType == (byte)MessageType.Chat) { if (rtmMessage.translatedInfo != null) { questProcessor.PushRoomChat(rtmMessage); } } else if (rtmMessage.messageType == (byte)MessageType.Cmd) { questProcessor.PushRoomCmd(rtmMessage); } else if (rtmMessage.messageType >= 40 && rtmMessage.messageType <= 50) { questProcessor.PushRoomFile(rtmMessage); } else { questProcessor.PushRoomMessage(rtmMessage); } return(null); }
public Answer PushBroadcastMessage(Int64 connectionId, string endpoint, Quest quest) { AdvanceAnswer.SendAnswer(new Answer(quest)); if (questProcessor == null) { return(null); } long from = quest.Want <long>("from"); long mid = quest.Want <long>("mid"); if (duplicatedFilter.CheckBroadcastMessage(from, mid) == false) { return(null); } byte mtype = quest.Want <byte>("mtype"); string attrs = quest.Want <string>("attrs"); long mtime = quest.Want <long>("mtime"); if (mtype == RTMClient.MessageMType_Chat) { TranslatedMessage tm = ProcessChatMessage(quest, out string orginialMessage); if (tm == null) { questProcessor.PushBroadcastChat(from, mid, orginialMessage, attrs, mtime); } else { questProcessor.PushBroadcastChat(from, mid, tm, attrs, mtime); } return(null); } MessageInfo messageInfo = BuildMessageInfo(quest); if (mtype == RTMClient.MessageMType_Audio) { byte[] audioData = messageInfo.binaryData; if (!messageInfo.isBinary) { audioData = RTMClient.ConvertStringToByteArray(messageInfo.message); } questProcessor.PushBroadcastAudio(from, mid, audioData, attrs, mtime); return(null); } if (mtype == RTMClient.MessageMType_Cmd) { questProcessor.PushBroadcastCmd(from, mid, messageInfo.message, attrs, mtime); } else if (mtype >= 40 && mtype <= 50) { questProcessor.PushBroadcastFile(from, mtype, mid, messageInfo.message, attrs, mtime); } else { if (messageInfo.isBinary) { questProcessor.PushBroadcastMessage(from, mtype, mid, messageInfo.binaryData, attrs, mtime); } else { questProcessor.PushBroadcastMessage(from, mtype, mid, messageInfo.message, attrs, mtime); } } return(null); }