/* The GetFriendList MessageHandler * It handles messages of UPDATE_FRIENDSHIP_REQ type. */ private static void UpdateFriendship(RMessage message, TcpClient connection) { Console.WriteLine("UpdateFriendship"); FriendshipData friendship = (FriendshipData)message.Data; RMessage replyMessageFormer, replyMessageLatter; if (friendship.Status) { FriendshipConnector.ConfirmFriendship(friendship); replyMessageFormer = new RMessage(MessageType.CONFIRM_FRIENDSHIP_REPLY, friendship.Latter); replyMessageLatter = new RMessage(MessageType.CONFIRM_FRIENDSHIP_REPLY, friendship.Former); UserConnector.UpdateUserRank(friendship.Latter, Ranking.ADD_FRIEND); UserConnector.UpdateUserRank(friendship.Former, Ranking.ADD_FRIEND); } else { FriendshipConnector.DeleteFriendship(friendship); replyMessageFormer = new RMessage(MessageType.DENY_FRIENDSHIP_REPLY, friendship.Latter); replyMessageLatter = new RMessage(MessageType.DENY_FRIENDSHIP_REPLY, friendship.Former); } ClientWorker formerWorker = ServerCore.GetWorkerById(friendship.Former); if (formerWorker != null) { formerWorker.SendMessage(replyMessageFormer); } ClientWorker latterWorker = ServerCore.GetWorkerById(friendship.Latter); if (latterWorker != null) { latterWorker.SendMessage(replyMessageLatter); } }
private SMessage SetDicObj(RMessage m) { string name; if (!m.Parameters.TryGetValue("name", out name)) { throw new ShareMemoryException("Message 中缺少参数 \"name\", 应通过 \"name\" 参数指定要访问的 Dictionary 的 名字 。"); } string key; if (!m.Parameters.TryGetValue("key", out key)) { throw new ShareMemoryException("Message 中缺少参数 \"key\", 应通过 \"key\" 参数指定要存的值的 键 。"); } if (m.Content == null) { throw new ShareMemoryException("Message 中缺少 Content , 应通过 Content 传递要放到 Dictionary 里的 对象 的 序列化数据 。"); } byte[] b = new byte[m.ContentLength]; Read(m.Content, b); this.mm.SetDicObj(name, key, b); SMessage sMsg = new SMessage(); return(sMsg); }
public void OnListDomainQuestions(RMessage message) { List <QuestionData> questions = (List <QuestionData>)message.Data; model.Current_all_questions = questions; QuestionsDomainsUpdated(model); }
/* The StartTest MessageHandler * It handles messages of START_TEST_REQUEST type. */ private static void StartTest(RMessage message, TcpClient connection) { List <DomainData> reqDomains = (List <DomainData>)message.Data; List <QuizSetData> quizList = new List <QuizSetData>(); for (int i = 0; i < reqDomains.Count; ++i) { // Get all questions from the database List <QuizItemData> allQuestions = QuizItemConnector.GetAllItems(reqDomains[i].ID); // Select random questions from the set List <int> selected = GetRandoms(allQuestions.Count, QUESTIONS_PER_SET); // Create a new QuizSet with the selected questions QuizSetData quizSet = new QuizSetData(reqDomains[i].Name); for (int j = 0; j < QUESTIONS_PER_SET; ++j) { quizSet.AddQuestion(allQuestions[selected[j]]); } quizList.Add(quizSet); } RMessage replyMessage = new RMessage( MessageType.START_TEST_REPLY, quizList); ServerCore.GetWorkerByConnection(connection).SendMessage(replyMessage); }
public void Xml2RLocationMessage() { XDocument xml = XDocument.Parse(@"<xml> <ToUserName><![CDATA[toUser]]></ToUserName> <FromUserName><![CDATA[fromUser]]></FromUserName> <CreateTime>1351776360</CreateTime> <MsgType><![CDATA[location]]></MsgType> <Location_X>23.134521</Location_X> <Location_Y>113.358803</Location_Y> <Scale>20</Scale> <Label><![CDATA[位置信息]]></Label> <MsgId>1234567890123456</MsgId> </xml>"); RMessage msg = RMessageFactory.CreateFromXml(xml); Assert.IsInstanceOfType(msg, typeof(RLocationMessage)); RLocationMessage img = (RLocationMessage)msg; Assert.AreEqual("toUser", img.ToUserName); Assert.AreEqual("fromUser", img.FromUserName); Assert.AreEqual(1351776360, img.CreateTime); Assert.AreEqual("location", img.MsgType); Assert.AreEqual("23.134521", img.Location_X); Assert.AreEqual("113.358803", img.Location_Y); Assert.AreEqual(20, img.Scale); Assert.AreEqual("位置信息", img.Label); Assert.AreEqual("1234567890123456", img.MsgId); }
public void DeleteResource() { ResourceData reqContent = model.Resource; RMessage msg = new RMessage(MessageType.DELETE_RESOURCE_REQUEST, reqContent); Service.Instance.AddMessage(msg); }
private SMessage GetDicObj(RMessage m) { string name; if (!m.Parameters.TryGetValue("name", out name)) { throw new ShareMemoryException("Message 中缺少参数 \"name\", 应通过 \"name\" 参数指定要访问的 Dictionary 的 名字 。"); } string key; if (!m.Parameters.TryGetValue("key", out key)) { throw new ShareMemoryException("Message 中缺少参数 \"key\", 应通过 \"key\" 参数指定要取的值的 键 。"); } byte[] b = this.mm.GetDicObj(name, key); SMessage sMsg = new SMessage(); if (b != null) { sMsg.Content = new MemoryStream(b); sMsg.ContentLength = b.Length; } return(sMsg); }
public void OnChangeQuestionStatus(RMessage message) { QuestionData question = (QuestionData)message.Data; for (int i = 0; i < model.All_questions.Count; i++) { if (model.All_questions[i].Id == question.Id) { model.All_questions[i].Status = question.Status; break; } } for (int i = 0; i < model.Current_my_questions.Count; i++) { if (model.Current_my_questions[i].Id == question.Id) { model.Current_my_questions[i].Status = question.Status; break; } } for (int i = 0; i < model.Current_all_questions.Count; i++) { if (model.Current_all_questions[i].Id == question.Id) { model.Current_all_questions[i].Status = question.Status; break; } } QuestionsDomainsUpdated(model); }
/* * Callback functions section (for asynchronous actions). * These methods will be triggered by the Context. */ #region callbacks public void OnListQuestions(RMessage message) { List <QuestionData> questions = (List <QuestionData>)message.Data; model.All_questions = questions; QuestionListReset(); }
public void OnListDomains(RMessage message) { List <DomainData> domains = (List <DomainData>)message.Data; model.Domains = domains; QuestionsDomainsUpdated(model); }
public RMessage AddObj(RMessage obj) { var data = db.RMessages.Add(obj); db.SaveChanges(); return(obj); }
public bool HandleMessage(TMessage msg) { string type = msg.MsgType; try { if (!object.Equals(null, MsgHandlers[type])) { List <MessageHandler> handlerList = MsgHandlers[type]; for (int i = 0; i < handlerList.Count; i++) { MessageHandler handler = handlerList[i]; bool handled = false; RMessage msg_r = handler(msg.GetMessage(), ref handled); if (handled) { StreamWriter sw = new StreamWriter(this.OutStream); sw.Write(msg_r.ToString()); sw.Close(); break; } } return(true); } } catch (Exception e) { return(false); } return(false); }
/* The AddUserVote MessageHandler * It handles messages of ADD_USER_VOTE_REQUEST type. */ private static void AddUserVote(RMessage message, TcpClient connection) { Console.WriteLine("AddUserVote"); // Get the vote data from the message UserVoteData vote = (UserVoteData)message.Data; // Update the voter's rank UserVoteData rating = UserVoteConnector.CheckUserVote(vote); if (rating == null) { UserConnector.UpdateUserRank(vote.Id_voter_user, Ranking.VOTE_USER); } // Update the votee's rank UserConnector.VoteUser(vote); // Send the vote back to the client RMessage replyMessage = new RMessage(MessageType.ADD_USER_VOTE_REPLY, vote); ServerCore.GetWorkerByConnection(connection).SendMessage(replyMessage); // Send the updated user rank to all clients UserData user = UserConnector.GetUserById(vote.Id_votee_user); replyMessage = new RMessage(MessageType.RANK_USER_UPDATED, user); List <ClientWorker> allWorkers = ServerCore.GetAllWorkers(); foreach (ClientWorker workersIterator in allWorkers) { workersIterator.SendMessage(replyMessage); } }
public JsonResult LayDS(string ngay) { RMessage message = new RMessage { code = Resources.Global.Message_Error, success = false }; List <ThongTinSanPhamVayModel> rs = new List <ThongTinSanPhamVayModel>(); try { DateTime dtDate = DateTime.MinValue; if (ngay != "") { dtDate = DateTimeFormat.ConvertddMMyyyyToDateTime(ngay); } rs = new SanPhamBLL().LayThongTinSanPhamByID(3, dtDate); if (rs == null) { rs = new List <ThongTinSanPhamVayModel>(); } } catch (BusinessException ex) { message.success = false; message.code = ex.Message; } return(Json(rs, JsonRequestBehavior.AllowGet)); }
public void Xml2RVideoMessage() { XDocument xml = XDocument.Parse(@"<xml> <ToUserName><![CDATA[toUser]]></ToUserName> <FromUserName><![CDATA[fromUser]]></FromUserName> <CreateTime>1357290913</CreateTime> <MsgType><![CDATA[video]]></MsgType> <MediaId><![CDATA[media_id]]></MediaId> <ThumbMediaId><![CDATA[thumb_media_id]]></ThumbMediaId> <MsgId>1234567890123456</MsgId> </xml>"); RMessage msg = RMessageFactory.CreateFromXml(xml); Assert.IsInstanceOfType(msg, typeof(RVideoMessage)); RVideoMessage img = (RVideoMessage)msg; Assert.AreEqual("toUser", img.ToUserName); Assert.AreEqual("fromUser", img.FromUserName); Assert.AreEqual(1357290913, img.CreateTime); Assert.AreEqual("video", img.MsgType); Assert.AreEqual("media_id", img.MediaId); Assert.AreEqual("thumb_media_id", img.ThumbMediaId); Assert.AreEqual("1234567890123456", img.MsgId); }
public void Xml2RImageMessage() { XDocument xml = XDocument.Parse(@"<xml> <ToUserName><![CDATA[toUser]]></ToUserName> <FromUserName><![CDATA[fromUser]]></FromUserName> <CreateTime>1348831860</CreateTime> <MsgType><![CDATA[image]]></MsgType> <PicUrl><![CDATA[this is a url]]></PicUrl> <MediaId><![CDATA[media_id]]></MediaId> <MsgId>1234567890123456</MsgId> </xml>"); RMessage msg = RMessageFactory.CreateFromXml(xml); Assert.IsInstanceOfType(msg, typeof(RImageMessage)); RImageMessage img = (RImageMessage)msg; Assert.AreEqual("toUser", img.ToUserName); Assert.AreEqual("fromUser", img.FromUserName); Assert.AreEqual(1348831860, img.CreateTime); Assert.AreEqual("image", img.MsgType); Assert.AreEqual("this is a url", img.PicUrl); Assert.AreEqual("media_id", img.MediaId); Assert.AreEqual("1234567890123456", img.MsgId); }
public void Xml2RLinkMessage() { XDocument xml = XDocument.Parse(@"<xml> <ToUserName><![CDATA[toUser]]></ToUserName> <FromUserName><![CDATA[fromUser]]></FromUserName> <CreateTime>1351776360</CreateTime> <MsgType><![CDATA[link]]></MsgType> <Title><![CDATA[公众平台官网链接]]></Title> <Description><![CDATA[公众平台官网链接]]></Description> <Url><![CDATA[url]]></Url> <MsgId>1234567890123456</MsgId> </xml>"); RMessage msg = RMessageFactory.CreateFromXml(xml); Assert.IsInstanceOfType(msg, typeof(RLinkMessage)); RLinkMessage img = (RLinkMessage)msg; Assert.AreEqual("toUser", img.ToUserName); Assert.AreEqual("fromUser", img.FromUserName); Assert.AreEqual(1351776360, img.CreateTime); Assert.AreEqual("link", img.MsgType); Assert.AreEqual("公众平台官网链接", img.Title); Assert.AreEqual("公众平台官网链接", img.Description); Assert.AreEqual("url", img.Url); Assert.AreEqual("1234567890123456", img.MsgId); }
public bool OnGetResourceOwnerRule(RMessage message) { if (message.Type != MessageType.GET_RESOURCE_OWNER_REPLY) { return(false); } DomainData dom = (DomainData)(((List <Object>)message.Data)[0]); if (model.Domain != null && dom.ID != model.Domain.ID) { return(false); } ResourceData res = (ResourceData)(((List <Object>)message.Data)[1]); try { if (res.Id != model.Resource.Id) { return(false); } } catch (NullReferenceException) { return(false); } return(true); }
public bool TryDe <T>(out T value) { SMessage m = new SMessage(); m.Parameters.Add(new Para("method", "Dequeue")); m.Parameters.Add(new Para("name", this.name)); RMessage rMsg = this.rpc.Send(m); Type t = typeof(T); if (rMsg.ContentLength == 0) { value = default(T); return(false); } byte[] b = new byte[rMsg.ContentLength]; Util.Read(rMsg.Content, b); DeSerializer deSerializer = new DeSerializer(); value = deSerializer.DeSerialize <T>(b); return(true); }
public void OnResourceDeleted(RMessage message) { // remove deleted resource from model ResourceData delResource = (ResourceData)message.Data; ResourceData localResource; localResource = null; foreach (ResourceData res in model.Resources) { if (res.Id == delResource.Id) { localResource = res; } } model.Resources.Remove(localResource); localResource = null; foreach (ResourceData res in model.Resources_All) { if (res.Id == delResource.Id) { localResource = res; } } model.Resources_All.Remove(localResource); ResourceDeleted(model); ShelfResourceList(model); }
public bool TryGet <T>(string key, out T value) { if (key == null) { throw new ShareMemoryClientException("参数 key 不能为 null 。"); } SMessage m = new SMessage(); m.Parameters.Add(new Para("method", "GetDicObj")); m.Parameters.Add(new Para("name", this.name)); m.Parameters.Add(new Para("key", key)); RMessage rMsg = this.rpc.Send(m); Type t = typeof(T); if (rMsg.ContentLength == 0) { value = default(T); return(false); } byte[] b = new byte[rMsg.ContentLength]; Util.Read(rMsg.Content, b); DeSerializer deSerializer = new DeSerializer(); value = deSerializer.DeSerialize <T>(b); return(true); }
private void WriteMsg(RMessage m) { foreach (KeyValuePair <string, string> o in m.Parameters) { WriteMsg(o.Key + " " + o.Value); } }
public void AddFriend(String userName) { RMessage msg = new RMessage(MessageType.ADD_FRIEND_REQUEST, userName); // Handle the request to the service Service.Instance.AddMessage(msg); }
/* * Callback functions section (for asynchronous actions). * These methods will be triggered by the Context. */ #region callbacks public void OnChangeUserState(RMessage message) { UserData friend = (UserData)message.Data; model.Partner.Status = friend.Status; ChangeUserState(model); }
public void OnFriendshipConfirmed(RMessage message) { uint thisUserId = LoggedInUserModel.Instance.User.Id; model.GetFriendshipById((uint)(message.Data)).Status = true; FriendListStateChanged(model); }
/* * Commands section */ #region commands public void GetPartnerInfo() { // Create a new request RMessage msg = new RMessage(MessageType.PARTNER_INFO_REQUEST, id); // Handle the request to the service Service.Instance.AddMessage(msg); }
public void OnFriendshipDenied(RMessage message) { uint thisUserId = LoggedInUserModel.Instance.User.Id; model.Friendships.Remove(model.GetFriendshipById((uint)(message.Data))); model.Users.Remove(model.GetFriendById((uint)(message.Data))); FriendListStateChanged(model); }
/* * Callback functions section (for asynchronous actions). * These methods will be triggered by the Context. */ #region callbacks public void OnAddSay(RMessage message) { ConversationView newConversation; SayData sayData = (SayData)message.Data; newConversation = new ConversationView(sayData.Id, model.StyleChoice); Context.FireCallback(message); }
public void UpdateUserState(Boolean newState) { // Create a new request RMessage msg = new RMessage(MessageType.CHANGE_USER_STATE_REQUEST, newState); // Handle the request to the service Service.Instance.AddMessage(msg); }
public bool OnGetUserInfoRule(RMessage message) { if (message.Type != MessageType.GET_USER_INFO_REPLY) { return(false); } return(true); }
/// <summary> /// Sends a message to the rendering thread. /// </summary> /// <param name="whatMessage">The message to send</param> public void sendMessage(RMessage whatMessage) { lock (messageQueue) { messageQueue.Enqueue(whatMessage); System.Threading.Monitor.PulseAll(messageQueue); } }