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); }
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); } }
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); } }
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); } } }
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); } }