Exemplo n.º 1
0
 public ClientSession(IChannel channel, bool isWorldClient) : base(channel)
 {
     _isWorldClient = isWorldClient;
     foreach (var controller in PacketControllerFactory.GenerateControllers())
     {
         controller.RegisterSession(this);
         foreach (var methodInfo in controller.GetType().GetMethods().Where(x =>
                                                                            x.GetParameters().FirstOrDefault()?.ParameterType.BaseType == typeof(PacketDefinition)))
         {
             var type         = methodInfo.GetParameters().FirstOrDefault()?.ParameterType;
             var packetheader = (PacketHeaderAttribute)Array.Find(type?.GetCustomAttributes(true),
                                                                  ca => ca.GetType() == typeof(PacketHeaderAttribute));
             _headerMethod.Add(packetheader, new Tuple <IPacketController, Type>(controller, type));
             _controllerMethods.Add(packetheader,
                                    DelegateBuilder.BuildDelegate <Action <object, object> >(methodInfo));
         }
     }
 }
Exemplo n.º 2
0
 public ClientSession(IChannel channel, bool isWorldClient) : base(channel)
 {
     // set last received
     lastPacketReceive = DateTime.Now.Ticks;
     _random           = new Random((int)ClientId);
     _isWorldClient    = isWorldClient;
     foreach (var controller in PacketControllerFactory.GenerateControllers())
     {
         controller.RegisterSession(this);
         foreach (MethodInfo methodInfo in controller.GetType().GetMethods().Where(x => x.GetParameters().FirstOrDefault()?.ParameterType.BaseType == typeof(PacketDefinition)))
         {
             var type = methodInfo.GetParameters().FirstOrDefault()?.ParameterType;
             PacketHeaderAttribute packetheader = (PacketHeaderAttribute)Array.Find(type.GetCustomAttributes(true), ca => ca.GetType().Equals(typeof(PacketHeaderAttribute)));
             HeaderMethod.Add(packetheader, new Tuple <IPacketController, Type>(controller, type));
             ControllerMethods.Add(packetheader, DelegateBuilder.BuildDelegate <Action <object, object> >(methodInfo));
         }
     }
 }