Esempio n. 1
0
        public void Pack(Packer stream, object obj)
        {
            var e    = obj as System.Enum;
            var type = e.GetType().GetEnumUnderlyingType();

            if (type == typeof(int))
            {
                stream.WriteByte((byte)TypeValue.Int32);
                var ser = new Int32Serializer();
                ser.Pack(stream, obj);
            }
            else if (type == typeof(short))
            {
                stream.WriteByte((byte)TypeValue.Int16);
                var ser = new Int16Serializer();
                ser.Pack(stream, obj);
            }
            else if (type == typeof(long))
            {
                stream.WriteByte((byte)TypeValue.Int64);
                var ser = new Int64Serializer();
                ser.Pack(stream, obj);
            }
            else if (type == typeof(uint))
            {
                stream.WriteByte((byte)TypeValue.UInt32);
                var ser = new UInt32Serializer();
                ser.Pack(stream, obj);
            }
            else if (type == typeof(ushort))
            {
                stream.WriteByte((byte)TypeValue.UInt16);
                var ser = new UInt16Serializer();
                ser.Pack(stream, obj);
            }
            else if (type == typeof(ulong))
            {
                stream.WriteByte((byte)TypeValue.UInt64);
                var ser = new UInt64Serializer();
                ser.Pack(stream, obj);
            }
            else if (type == typeof(byte))
            {
                stream.WriteByte((byte)TypeValue.Byte);
                var ser = new ByteSerializer();
                ser.Pack(stream, obj);
            }
            else if (type == typeof(sbyte))
            {
                stream.WriteByte((byte)TypeValue.SByte);
                var ser = new SByteSerializer();
                ser.Pack(stream, obj);
            }
            else
            {
                stream.WriteByte((byte)TypeValue.String);
                var ser = new StringSerializer();
                ser.Pack(stream, obj);
            }
        }
Esempio n. 2
0
        public object Unpack(Packer stream)
        {
            object res      = null;
            var    enumType = (TypeValue)stream.ReadByte();

            if (enumType == TypeValue.Int32)
            {
                var ser = new Int32Serializer();
                res = ser.Unpack(stream);
            }
            else if (enumType == TypeValue.Int16)
            {
                var ser = new Int16Serializer();
                res = ser.Unpack(stream);
            }
            else if (enumType == TypeValue.Int64)
            {
                var ser = new Int64Serializer();
                res = ser.Unpack(stream);
            }
            else if (enumType == TypeValue.UInt16)
            {
                var ser = new UInt16Serializer();
                res = ser.Unpack(stream);
            }
            else if (enumType == TypeValue.UInt32)
            {
                var ser = new UInt32Serializer();
                res = ser.Unpack(stream);
            }
            else if (enumType == TypeValue.UInt64)
            {
                var ser = new UInt64Serializer();
                res = ser.Unpack(stream);
            }
            else if (enumType == TypeValue.Byte)
            {
                var ser = new ByteSerializer();
                res = ser.Unpack(stream);
            }
            else if (enumType == TypeValue.SByte)
            {
                var ser = new SByteSerializer();
                res = ser.Unpack(stream);
            }
            else
            {
                var ser = new StringSerializer();
                var str = (string)ser.Unpack(stream);
                res = System.Enum.Parse(typeof(System.Enum), str);
            }

            return(res);
        }
        public void Pack(Packer packer, object obj)
        {
            var sentinel = (IDisposeSentinel)obj;
            var type     = sentinel.GetType();

            Int32Serializer.PackDirect(packer, packer.GetMetaTypeId(type.GetGenericTypeDefinition()));
            Int32Serializer.PackDirect(packer, packer.GetMetaTypeId(type.GenericTypeArguments[0]));
            Int32Serializer.PackDirect(packer, packer.GetMetaTypeId(type.GenericTypeArguments[1]));

            packer.PackInternal(sentinel.GetData());
            Int64Serializer.PackDirect(packer, sentinel.GetTick());
        }
        public object Unpack(Packer packer)
        {
            var type         = packer.GetMetaType(Int32Serializer.UnpackDirect(packer));
            var typeValue    = packer.GetMetaType(Int32Serializer.UnpackDirect(packer));
            var typeProvider = packer.GetMetaType(Int32Serializer.UnpackDirect(packer));

            var sentinelType = type.MakeGenericType(typeValue, typeProvider);

            var poolClassType = typeof(PoolClass <>).MakeGenericType(sentinelType);
            var spawnMethod   = poolClassType.GetMethod("Spawn", System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Static);
            var sentinel      = (IDisposeSentinel)spawnMethod.Invoke(null, null);

            sentinel.SetData(packer.UnpackInternal());
            sentinel.SetTick(Int64Serializer.UnpackDirect(packer));

            return(sentinel);
        }
        public object Unpack(Packer packer)
        {
            var pack = new ME.ECS.StatesHistory.HistoryEvent();

            pack.tick           = Int64Serializer.UnpackDirect(packer);
            pack.order          = Int32Serializer.UnpackDirect(packer);
            pack.rpcId          = Int32Serializer.UnpackDirect(packer);
            pack.localOrder     = Int32Serializer.UnpackDirect(packer);
            pack.objId          = Int32Serializer.UnpackDirect(packer);
            pack.groupId        = Int32Serializer.UnpackDirect(packer);
            pack.storeInHistory = BooleanSerializer.UnpackDirect(packer);

            var hasParams = packer.ReadByte();

            if (hasParams == 1)
            {
                var serializer = new ObjectArraySerializer();
                pack.parameters = (object[])serializer.Unpack(packer);
            }

            return(pack);
        }
        public void Pack(Packer packer, object obj)
        {
            var pack = (ME.ECS.StatesHistory.HistoryEvent)obj;

            Int64Serializer.PackDirect(packer, pack.tick);
            Int32Serializer.PackDirect(packer, pack.order);
            Int32Serializer.PackDirect(packer, pack.rpcId);
            Int32Serializer.PackDirect(packer, pack.localOrder);
            Int32Serializer.PackDirect(packer, pack.objId);
            Int32Serializer.PackDirect(packer, pack.groupId);
            BooleanSerializer.PackDirect(packer, pack.storeInHistory);

            if (pack.parameters != null)
            {
                packer.WriteByte(1);
                var serializer = new ObjectArraySerializer();
                serializer.Pack(packer, pack.parameters);
            }
            else
            {
                packer.WriteByte(0);
            }
        }
Esempio n. 7
0
 public object Unpack(Packer packer)
 {
     return((Tick)Int64Serializer.UnpackDirect(packer));
 }
Esempio n. 8
0
 public void Pack(Packer packer, object obj)
 {
     Int64Serializer.PackDirect(packer, (Tick)obj);
 }
Esempio n. 9
0
        public object Unpack(Packer packer)
        {
            var int64 = new Int64Serializer();

            return((Tick)(System.Int64)(int64.Unpack(packer)));
        }
Esempio n. 10
0
        public void Pack(Packer packer, object obj)
        {
            var int64 = new Int64Serializer();

            int64.Pack(packer, (long)(Tick)obj);
        }
Esempio n. 11
0
 public static fp UnpackDirect(Packer packer)
 {
     return(new fp(Int64Serializer.UnpackDirect(packer)));
 }
Esempio n. 12
0
 public static void PackDirect(Packer packer, fp obj)
 {
     Int64Serializer.PackDirect(packer, obj.RawValue);
 }