Exemplo n.º 1
0
        /// <summary>
        /// Unpack and override target from packet
        /// </summary>
        /// <typeparam name="T">unpackable type</typeparam>
        /// <param name="target">unpackable target</param>
        public static void Unpack <T>(ref T target, GSFPacket packet)
        {
            Type          type   = typeof(T);
            PacketUtility packer = GetUtil(type);

            packer.unpack(ref target, packet);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Unpack and override target from packet
        /// </summary>
        /// <typeparam name="T">unpackable type</typeparam>
        public static T Unpack <T>(GSFPacket packet)
        {
            Type          type   = typeof(T);
            PacketUtility packer = GetUtil(type);

            return(packer.unpack <T>(packet));
        }
        /// <summary>
        /// Unpack packet and override values of target
        /// </summary>
        /// <param name="target">overrided target</param>
        public override void unpack(ref object target, GSFPacket packet)
        {
            Dictionary <byte, object> dict = (Dictionary <byte, object>)packet.data;

            for (int i = 0; i < memberUtils.Length; i++)
            {
                object value;
                if (dict.TryGetValue(memberUtils[i].memberID, out value))
                {
                    // unpack value and set unpacked value to member
                    memberUtils[i].Set(target, memberUtils[i].unpack((GSFPacket)value));
                }
            }
        }
        public override void unpack(ref object target, GSFPacket packet)
        {
            Type type = target.GetType();
            Dictionary <byte, object> values   = (Dictionary <byte, object>)((object[])packet.data)[1];
            List <MemberUtility>      memUtils = initMemberUtils(type);
            object value;

            for (int i = 0; i < memUtils.Count; i++)
            {
                if (values.TryGetValue(memUtils[i].memberID, out value))
                {
                    memUtils[i].Set(target, memUtils[i].unpack((GSFPacket)value));
                }
            }
        }
        public override GSFPacket pack(object obj)
        {
            Type          type        = obj.GetType();
            Type          elementType = type.GetElementType();
            TypeInfo      typeInfo    = PackType(type);
            PacketUtility util        = GetUtil(elementType);
            int           length      = (int)type.GetProperty("Length").GetValue(obj);
            MethodInfo    getMethod   = type.GetMethod("Get");

            GSFPacket[] values = new GSFPacket[length];
            for (int i = 0; i < length; i++)
            {
                values[i] = util.pack(getMethod.Invoke(obj, new object[] { i }));
            }
            return(new GSFPacket(classID, new object[] { typeInfo, values }));
        }
        public override object unpack(GSFPacket packet)
        {
            object[] data = (object[])packet.data;
            Type     type = UnpackType((TypeInfo)data[0]);

            GSFPacket[] values = (GSFPacket[])data[1];
            // get utility of element type
            PacketUtility util      = GetUtil(type.GetElementType());
            object        array     = Activator.CreateInstance(type, new object[] { values.Length });
            MethodInfo    setMethod = type.GetMethod("Set");

            for (int i = 0; i < values.Length; i++)
            {
                setMethod.Invoke(array, new object[] { i, util.unpack(values[i]) });
            }
            return(array);
        }
        public override T unpack <T>(GSFPacket packet)
        {
            object[] data     = (object[])packet.data;
            Type     type     = typeof(T);
            T        instance = Activator.CreateInstance <T>();
            Dictionary <byte, object> values   = (Dictionary <byte, object>)((object[])packet.data)[1];
            List <MemberUtility>      memUtils = initMemberUtils(type);
            object value;

            for (int i = 0; i < memUtils.Count; i++)
            {
                if (values.TryGetValue(memUtils[i].memberID, out value))
                {
                    memUtils[i].Set(instance, memUtils[i].unpack((GSFPacket)value));
                }
            }
            return(instance);
        }
        public override object unpack(GSFPacket packet, Type type)
        {
            object[]      data    = (object[])packet.data;
            Type          keyType = type.GetGenericArguments()[0];
            Type          valType = type.GetGenericArguments()[1];
            PacketUtility keyUtil = GetUtil(keyType);
            PacketUtility valUtil = GetUtil(valType);
            object        dict    = Activator.CreateInstance(type);

            object[]   values    = (object[])data[1];
            MethodInfo addMethod = type.GetMethod("Add");

            for (int i = 0; i < values.Length; i += 2)
            {
                addMethod.Invoke(dict, new object[] { keyUtil.unpack((GSFPacket)values[i]), valUtil.unpack((GSFPacket)values[i + 1]) });
            }
            return(dict);
        }
        public override void unpack(ref object target, GSFPacket packet)
        {
            object[]      data     = (object[])packet.data;
            Type          dictType = target.GetType();
            Type          keyType  = dictType.GetGenericArguments()[0];
            Type          valType  = dictType.GetGenericArguments()[1];
            PacketUtility keyUtil  = GetUtil(keyType);
            PacketUtility valUtil  = GetUtil(valType);

            object[]   values      = (object[])data[1];
            MethodInfo clearMethod = dictType.GetMethod("Clear");

            clearMethod.Invoke(target, new object[0]);
            MethodInfo addMethod = dictType.GetMethod("Add");

            for (int i = 0; i < values.Length; i += 2)
            {
                addMethod.Invoke(target, new object[] { keyUtil.unpack((GSFPacket)values[i], keyType), valUtil.unpack((GSFPacket)values[i + 1], valType) });
            }
        }
        /// <summary>
        /// Unpack packet
        /// </summary>
        public override object unpack(GSFPacket packet)
        {
            if (packet.classID != classID)
            {
                throw new InvalidOperationException("Cannot unpack packet by different class id.");
            }

            object instance = Activator.CreateInstance(classType);
            Dictionary <byte, object> dict = (Dictionary <byte, object>)packet.data;

            for (int i = 0; i < memberUtils.Length; i++)
            {
                object value;
                if (dict.TryGetValue(memberUtils[i].memberID, out value))
                {
                    // unpack value and set unpacked value to member
                    memberUtils[i].Set(instance, memberUtils[i].unpack((GSFPacket)value));
                }
            }
            return(instance);
        }
Exemplo n.º 11
0
 public override ulong Unpack(GSFPacket packet)
 {
     return((ulong)packet.data);
 }
 public override byte Unpack(GSFPacket packet)
 {
     return((byte)packet.data);
 }
 public override short Unpack(GSFPacket packet)
 {
     return((short)packet.data);
 }
Exemplo n.º 14
0
 public abstract void unpack(ref object target, GSFPacket packet);
Exemplo n.º 15
0
 public virtual T unpack <T>(GSFPacket packet)
 {
     return((T)unpack(packet));
 }
Exemplo n.º 16
0
 public override int Unpack(GSFPacket packet)
 {
     return((int)packet.data);
 }
 public override string Unpack(GSFPacket packet)
 {
     return((string)packet.data);
 }
 public override double Unpack(GSFPacket packet)
 {
     return((double)packet.data);
 }
Exemplo n.º 19
0
 public override float Unpack(GSFPacket packet)
 {
     return((float)packet.data);
 }
Exemplo n.º 20
0
 public abstract object unpack(GSFPacket packet);
Exemplo n.º 21
0
 public override object unpack(GSFPacket packet)
 {
     return(proxy.unpack(packet));
 }
Exemplo n.º 22
0
        public virtual object unpack(GSFPacket packet, Type type)
        {
            PacketUtility util = GetUtil(type);

            return(util.unpack(packet));
        }
Exemplo n.º 23
0
 public override void unpack(ref object target, GSFPacket packet)
 {
     proxy.unpack(ref target, packet);
 }
Exemplo n.º 24
0
        public virtual void unpack <T>(ref T target, GSFPacket packet)
        {
            object temp = target;

            unpack(ref temp, packet);
        }
Exemplo n.º 25
0
 public override bool Unpack(GSFPacket packet)
 {
     return((bool)packet.data);
 }
Exemplo n.º 26
0
 public override char Unpack(GSFPacket packet)
 {
     return((char)packet.data);
 }
        public override object Unpack(GSFPacket packet)
        {
            PacketUtility util = GetUtil(packet.classID);

            return(util.unpack(packet));
        }