private void Receive()
        {
            while (this.m_started)
            {
                this.m_receiveResetEvent.WaitOne();

                while (this.m_receiveQueue.TryDequeue(out ServerMessage message))
                {
                    try
                    {
                        switch (message.GetMessageCategory())
                        {
                        case ServerMessageCategory.ACCOUNT:
                            this.m_messageManager.OnReceiveAccountMessage((ServerAccountMessage)message);
                            break;

                        case ServerMessageCategory.REQUEST:
                            this.m_messageManager.OnReceiveRequestMessage((ServerRequestMessage)message);
                            break;

                        case ServerMessageCategory.SESSION:
                            this.m_messageManager.OnReceiveSessionMessage((ServerSessionMessage)message);
                            break;

                        case ServerMessageCategory.RESPONSE:
                            ServerRequestManager.ResponseReceived((ServerResponseMessage)message);
                            break;

                        case ServerMessageCategory.CORE:
                            if (!ServerMessageManager.ReceiveCoreMessage((ServerCoreMessage)message))
                            {
                                this.m_messageManager.OnReceiveCoreMessage((ServerCoreMessage)message);
                            }
                            break;

                        default:
                            Logging.Error("ServerMessageHandler.receive: unknown message category: " + message.GetMessageCategory());
                            break;
                        }
                    }
                    catch (Exception exception)
                    {
                        Logging.Warning("ServerMessageHandler.receive: exception when the handle of message type " + message.GetMessageType() + ", trace: " + exception);
                    }
                }
            }
        }