public static void HandlePacket(WorldConnection connection, WORLDMSG msgID, BinReader data)
        {
            try {
                DebugLogger.Logger.Log("LoginClient handling packet " + msgID.ToString());

                bool handled_packet = false;

                ILoginServerPacketHandler handler = (ILoginServerPacketHandler)loginServerHandlers[msgID];
                if (handler != null)
                {
                    handled_packet = true;
                    handler.HandlePacket(connection, msgID, data);
                }
                LoginServerPacketDelegate wspd = (LoginServerPacketDelegate)loginServerDelegates[(int)msgID];
                if (wspd != null)
                {
                    handled_packet = true;
                    wspd(connection, msgID, data);
                }

                if (handled_packet == false)
                {
                    DebugLogger.Logger.Log("WARNING: No valid handler found for " + msgID.ToString());
                }
            } catch (Exception exp) {
                DebugLogger.Logger.Log("", exp);
            }
        }
Ejemplo n.º 2
0
 public static void RegisterPacketHandler(WORLDMSG msgID, LoginServerPacketDelegate wspd)
 {
     if (loginServerDelegates[(int)msgID] != null)
     {
         LoginServerPacketDelegate dele = (LoginServerPacketDelegate)loginServerDelegates[(int)msgID];
         loginServerDelegates[(int)msgID] = dele + wspd;
     }
     else
     {
         loginServerDelegates[(int)msgID] = wspd;
     }
 }
        public static void RegisterPacketHandler(WORLDMSG msgID, LoginServerPacketDelegate wspd)
        {
            DebugLogger.Logger.Log("Registering login packet delegate for " + msgID);

            if (loginServerDelegates[(int)msgID] != null)
            {
                LoginServerPacketDelegate dele = (LoginServerPacketDelegate)loginServerDelegates[(int)msgID];
                loginServerDelegates[(int)msgID] = dele + wspd;
            }
            else
            {
                loginServerDelegates[(int)msgID] = wspd;
            }
        }
 static void SearchForDelegates(Type type)
 {
     try {
         MethodInfo[] methods = type.GetMethods(BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static);
         foreach (MethodInfo method in methods)
         {
             LoginPacketDelegate[] attribs = (LoginPacketDelegate[])method.GetCustomAttributes(typeof(LoginPacketDelegate), true);
             if (attribs.Length == 0)
             {
                 continue;
             }
             if (method.IsStatic)
             {
                 foreach (LoginPacketDelegate attrib in attribs)
                 {
                     if (attrib.ClientMessage)
                     {
                         LoginClientPacketDelegate wcpd = (LoginClientPacketDelegate)Delegate.CreateDelegate(typeof(LoginClientPacketDelegate), method);
                         RegisterPacketHandler((CMSG)attrib.MsgID, wcpd);
                     }
                     else
                     {
                         LoginServerPacketDelegate wspd = (LoginServerPacketDelegate)Delegate.CreateDelegate(typeof(LoginServerPacketDelegate), method);
                         RegisterPacketHandler((WORLDMSG)attrib.MsgID, wspd);
                     }
                 }
             }
             else
             {
                 object obj = GetHandlerObject(type);
                 foreach (LoginPacketDelegate attrib in attribs)
                 {
                     if (attrib.ClientMessage)
                     {
                         LoginClientPacketDelegate wcpd = (LoginClientPacketDelegate)Delegate.CreateDelegate(typeof(LoginClientPacketDelegate), obj, method.Name);
                         RegisterPacketHandler((CMSG)attrib.MsgID, wcpd);
                     }
                     else
                     {
                         LoginServerPacketDelegate wspd = (LoginServerPacketDelegate)Delegate.CreateDelegate(typeof(LoginServerPacketDelegate), obj, method.Name);
                         RegisterPacketHandler((WORLDMSG)attrib.MsgID, wspd);
                     }
                 }
             }
         }
     } catch (Exception exp) {
         DebugLogger.Log("", exp);
     }
 }
Ejemplo n.º 5
0
        public static void HandlePacket(WorldConnection connection, WORLDMSG msgID, BinReader data)
        {
            ILoginServerPacketHandler handler = (ILoginServerPacketHandler)loginServerHandlers[msgID];

            if (handler != null)
            {
                handler.HandlePacket(connection, msgID, data);
            }
            LoginServerPacketDelegate wspd = (LoginServerPacketDelegate)loginServerDelegates[(int)msgID];

            if (wspd != null)
            {
                wspd(connection, msgID, data);
            }
        }
Ejemplo n.º 6
0
        public static void UnregisterPacketHandler(WORLDMSG msgID, LoginServerPacketDelegate wspd)
        {
            LoginServerPacketDelegate dele = (LoginServerPacketDelegate)loginServerDelegates[(int)msgID];

            loginServerDelegates[(int)msgID] = dele - wspd;
        }