コード例 #1
0
        /*******************************************************************/
        /************************* PUBLIC METHODS **************************/
        /*******************************************************************/

        public void Communicate(Message message)
        {
            lock (this)
            {
                while (!client.Connected)
                {
                    SmartConsole.PrintLine("Lost connection, reconnecting...", SmartConsole.DebugLevel.Advanced);
                    client.Connect();
                }

                // Send to server
                client.Send(message);

                // Wait for response
                List <Message> responseMessage = client.ReceiveMessages();

                for (int i = 0; i < responseMessage.Count; i++)
                {
                    // handle response
                    // This is wrong Socket, but we dont use it anyway.
                    MessagePackage package = new MessagePackage(responseMessage[i], client.Socket);
                    messageHandler.HandleMessage(package);
                }
            }
        }
コード例 #2
0
        /*******************************************************************/
        /************************ PRIVATE METHODS **************************/
        /*******************************************************************/

        /// <summary>
        ///     The logic of message processors
        /// </summary>
        private void startMessageProcessor()
        {
            SmartConsole.PrintLine("Message Processor Actived", SmartConsole.DebugLevel.Advanced);
            while (Active)
            {
                // TODO busy waiting
                if (messageQueue.Queue.Count != 0)
                {
                    MessagePackage package = messageQueue.Queue.Dequeue();
                    messageHandler.HandleMessage(package);
                }
            }
            SmartConsole.PrintLine("Message Processor Deactived", SmartConsole.DebugLevel.Advanced);
        }