public bool RegisterHandler(PhotonServerHandler handler) { var registered = false; if (CheckHandler(handler, MessageType.Request, _requestHandlerList, "RequestHandler")) { registered = true; } if (CheckHandler(handler, MessageType.Response, _responseHandlerList, "ResponseHandler")) { registered = true; } if (CheckHandler(handler, MessageType.Async, _eventsHandlerList, "EventHandler")) { registered = true; } return(registered); }
private bool CheckHandler(PhotonServerHandler handler, MessageType type, Dictionary <int, PhotonServerHandler> list, string checkName) { var registered = false; if ((handler.Type & type) == type) { if (handler.SubCode.HasValue && !list.ContainsKey(handler.SubCode.Value)) { list.Add(handler.SubCode.Value, handler); registered = true; } else if (!list.ContainsKey(handler.Code)) { list.Add(handler.Code, handler); registered = true; } else { Log.ErrorFormat("{0} list already contains handler for {1} - cannot add {2}", checkName, handler.Code, handler.GetType().Name); } } return(registered); }
private bool CheckMessage(IMessage message, PhotonServerPeer peer, Dictionary <int, PhotonServerHandler> list, PhotonServerHandler defaultHandler) { var handled = false; if (message.SubCode.HasValue && list.ContainsKey(message.SubCode.Value)) { list[message.SubCode.Value].HandleMessage(message, peer); handled = true; } else if (!message.SubCode.HasValue && list.ContainsKey(message.Code)) { list[message.Code].HandleMessage(message, peer); handled = true; } else { defaultHandler.HandleMessage(message, peer); } return(handled); }