Example #1
0
        public void HandleMessage(IPCMessage message)
        {
            Action <object, IPCMessage> handler;

            if (!m_handlers.TryGetValue(message.GetType(), out handler))
            {
                logger.Error("Received message {0} but no method handle it !", message.GetType());
                return;
            }

            handler(this, message);
        }
Example #2
0
 protected override void ProcessRequest(IPCMessage request)
 {
     if (request is IPCErrorMessage)
     {
         this.HandleError(request as IPCErrorMessage);
     }
     if (request is DisconnectClientMessage)
     {
         this.HandleMessage(request as DisconnectClientMessage);
     }
     if (this.m_additionalsHandlers.ContainsKey(request.GetType()))
     {
         this.m_additionalsHandlers[request.GetType()](request);
     }
 }
Example #3
0
        protected override void ProcessRequest(IPCMessage request)
        {
            if (request is IIPCErrorMessage)
            {
                HandleError(request as IIPCErrorMessage);
            }
            if (request is DisconnectClientMessage)
            {
                HandleMessage(request as DisconnectClientMessage);
            }

            if (m_additionalsHandlers.ContainsKey(request.GetType()))
            {
                m_additionalsHandlers[request.GetType()](request);
            }
            else if (!(request is IIPCErrorMessage) && !(request is DisconnectClientMessage) &&
                     !(request is CommonOKMessage))
            {
                logger.Warn("IPC Message {0} not handled", request);
            }
        }
Example #4
0
        public void HandleMessage(IPCMessage message)
        {
            Action <object, IPCMessage> action;

            if (!m_handlers.TryGetValue(message.GetType(), out action))
            {
                IPCOperations.logger.Error <Type>("Received message {0} but no method handle it !", message.GetType());
            }
            else
            {
                action(this, message);
            }
        }
 protected override void ProcessRequest(IPCMessage message)
 {
     if (m_operations == null)
     {
         if (!(message is HandshakeMessage))
         {
             SendError(string.Format("The first received packet should be a HandshakeMessage not {0}", message.GetType()));
             Disconnect();
         }
         else
         {
             HandshakeMessage handshakeMessage = message as HandshakeMessage;
             WorldServer      server;
             try
             {
                 server = WorldServerManager.Instance.RequestConnection(this, handshakeMessage.World);
             }
             catch (Exception exception)
             {
                 SendError(exception);
                 Disconnect();
                 return;
             }
             Server       = server;
             m_operations = new IPCOperations(this);
             Send(new CommonOKMessage
             {
                 RequestGuid = message.RequestGuid
             });
         }
     }
     else
     {
         if (message.RequestGuid != Guid.Empty)
         {
             m_currentRequest = message;
         }
         else
         {
             m_currentRequest = null;
         }
         try
         {
             m_operations.HandleMessage(message);
         }
         catch (Exception exception)
         {
             SendError(exception);
         }
     }
 }
Example #6
0
        protected override void ProcessMessage(IPCMessage message)
        {
            // handshake not done yet
            if (m_operations == null)
            {
                if (!(message is HandshakeMessage))
                {
                    SendError(string.Format("The first received packet should be a HandshakeMessage not {0}", message.GetType()), message);
                    Disconnect();
                }
                else
                {
                    // the handshake is managed by the IO thread, the other messages by an other DB connection
                    AuthServer.Instance.IOTaskPool.AddMessage(() =>
                    {
                        var handshake = message as HandshakeMessage;
                        WorldServer server;
                        try
                        {
                            server = WorldServerManager.Instance.RequestConnection(this, handshake.World);
                        }
                        catch (Exception ex)
                        {
                            SendError(ex, message);
                            Disconnect();
                            return;
                        }

                        Server       = server;
                        m_operations = new IPCOperations(this);
                        // guid setted manually cause the request is not stored
                        ReplyRequest(new CommonOKMessage(), message);
                    });
                }
            }
            else
            {
                base.ProcessMessage(message);
            }
        }