Пример #1
0
        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);
        }
Пример #2
0
        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);
        }
Пример #3
0
        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);
        }