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); } }
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); } }
public object Unpack(Packer packer) { return((Tick)Int64Serializer.UnpackDirect(packer)); }
public void Pack(Packer packer, object obj) { Int64Serializer.PackDirect(packer, (Tick)obj); }
public object Unpack(Packer packer) { var int64 = new Int64Serializer(); return((Tick)(System.Int64)(int64.Unpack(packer))); }
public void Pack(Packer packer, object obj) { var int64 = new Int64Serializer(); int64.Pack(packer, (long)(Tick)obj); }
public static fp UnpackDirect(Packer packer) { return(new fp(Int64Serializer.UnpackDirect(packer))); }
public static void PackDirect(Packer packer, fp obj) { Int64Serializer.PackDirect(packer, obj.RawValue); }