/* 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); } }
/* 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); } }
/* The TakeNewCert MessageHandler * It handles messages of MESSAGE_TYPE type. */ private static void TakeNewCert(RMessage message, TcpClient connection) { List <object> list = (List <object>)message.Data; UserData user = (UserData)list[0]; DomainData domain = (DomainData)list[1]; int score = (int)list[2]; UserConnector.UpdateUserRank(user.Id, GetRank(score)); ValidationConnector.AddValidation(user.Id, domain.ID); }
private static void AddAnswer(RMessage message, TcpClient connection) { Console.WriteLine("ChangeQuestionStatus"); AnswerData answer = (AnswerData)message.Data; LogConnector.AddAnswer(answer); UserConnector.UpdateUserRank(answer.Owner, Ranking.ADD_ANSWER); foreach (ClientWorker workersIterator in ServerCore.GetAllWorkers()) { workersIterator.SendMessage(new RMessage(MessageType.ADD_ANSWER_REPLY, answer)); } }
/* The GetFriendList MessageHandler * It handles messages of ADD_SAY_REQUEST type. */ private static void AddSay(RMessage message, TcpClient connection) { Console.WriteLine("AddSay"); SayData say = (SayData)(message.Data); uint id = say.Id; say.Id = ServerCore.GetIdByConnection(connection); if (ServerCore.GetWorkerById(id) != null) { RMessage replyMessage = new RMessage(MessageType.ADD_SAY_REPLY, say); ServerCore.GetWorkerById(id).SendMessage(replyMessage); } UserConnector.UpdateUserRank(say.Id, Ranking.ADD_SAY); }
/* The PostResource MessageHandler * It handles messages of ADD_RESOURCE_REQUEST type. */ private static void PostResource(RMessage message, TcpClient connection) { Console.WriteLine("PostResource"); ResourceConnector.AddResource((ResourceData)message.Data); // a lil' something for the user UserConnector.UpdateUserRank(ServerCore.GetIdByConnection(connection), Ranking.USER_POSTED_RESOURCE_VALUE); ResourceData adddedResource = ResourceConnector.GetResource((ResourceData)message.Data); RMessage replyMessage = new RMessage(MessageType.ADD_RESOURCE_REPLY, adddedResource); List <ClientWorker> clientList = ServerCore.GetAllWorkers(); foreach (ClientWorker client in clientList) { client.SendMessage(replyMessage); } }
/* The ResourceVote MessageHandler * It handles messages of VOTE_RESOURCE_REQUEST type. */ private static void ResourceVote(RMessage message, TcpClient connection) { Console.WriteLine("VoteResource"); ResourceVoteData resVote = (ResourceVoteData)message.Data; ResourceVoteData oldResVote = ResourceVoteConnector.UpdateVote(resVote); ResourceConnector.VoteResource(oldResVote, resVote); UserConnector.UpdateUserRank(ServerCore.GetIdByConnection(connection), Ranking.USER_VOTED_RESOURCE_VALUE); ResourceData editedResource = ResourceConnector.GetResource(resVote.Id_Resource); RMessage replyMessage = new RMessage(MessageType.EDIT_RESOURCE_REPLY, editedResource); List <ClientWorker> clientList = ServerCore.GetAllWorkers(); foreach (ClientWorker client in clientList) { client.SendMessage(replyMessage); } }
/* The AddQuestion MessageHandler * It handles messages of ADD_QUESTION_REQUEST type. */ private static void AddQuestion(RMessage message, TcpClient connection) { Console.WriteLine("AddQuestion"); List <Object> data = (List <Object>)message.Data; QuestionData question0 = (QuestionData)data[0]; List <DomainData> domains = (List <DomainData>)data[1]; QuestionConnector.AddQuestion(question0); UserConnector.UpdateUserRank(question0.Owner, Ranking.ADD_QUESTION); UInt32 id = (UInt32)(Int64Connector.GetLastInsertId()); QuestionData question = QuestionConnector.GetQuestion(id); QuestionConnector.AddDomainQuestion(id, domains); List <ClientWorker> allWorkers = ServerCore.GetAllWorkers(); foreach (ClientWorker workersIterator in allWorkers) { workersIterator.SendMessage(new RMessage(MessageType.ADD_QUESTION_REPLY, question)); } }
/* The LogConnector MessageHandler * It handles messages of RANK_USER_LOGGED_TIME_REQUEST type. */ private static void LogConnector(RMessage message, TcpClient connection) { double value = Ranking.USER_UP_TIME_POINT_VALUE * (Double)message.Data; UserConnector.UpdateUserRank(ServerCore.GetIdByConnection(connection), value); }