예제 #1
0
        /* The GetQuestion MessageHandler
         * It handles messages of GET_QUESTION_REQUEST type.
         */
        private static void GetQuestion(RMessage message, TcpClient connection)
        {
            Console.WriteLine("GetQuestion");
            QuestionData question     = QuestionConnector.GetQuestion((UInt32)(message.Data));
            RMessage     replyMessage = new RMessage(MessageType.GET_QUESTION_REPLY, question);

            ServerCore.GetWorkerByConnection(connection).SendMessage(replyMessage);
        }
예제 #2
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));
            }
        }