Пример #1
0
        /* 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);
            }
        }
Пример #2
0
        /* 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);
            }
        }
Пример #3
0
        /* 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);
        }
Пример #4
0
        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));
            }
        }
Пример #5
0
        /* 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);
        }
Пример #6
0
        /* 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);
            }
        }
Пример #7
0
        /* 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);
            }
        }
Пример #8
0
        /* 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));
            }
        }
Пример #9
0
        /* 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);
        }