public void Pack(Packer packer, object obj) { var packerObject = (Packer.PackerObject)obj; packer.PackInternal(packerObject.meta); packer.PackInternal(packerObject.data); }
public void Pack(Packer packer, object obj) { var dict = (ME.ECS.Collections.IDictionaryInt)obj; var type = dict.GetType(); Int32Serializer.PackDirect(packer, dict.Count); Int32Serializer.PackDirect(packer, packer.GetMetaTypeId(type.GenericTypeArguments[0])); Int32Serializer.PackDirect(packer, packer.GetMetaTypeId(type.GetGenericTypeDefinition())); foreach (DictionaryEntry entry in dict) { packer.PackInternal(entry.Key); packer.PackInternal(entry.Value); } }
public void Pack(Packer packer, object obj) { var v = (string)obj; var bytes = System.Text.UTF8Encoding.UTF8.GetBytes(v); packer.PackInternal(bytes); }
public void Pack(Packer packer, object obj, System.Type rootType) { var fields = rootType.GetCachedFields(); for (int i = 0; i < fields.Length; ++i) { var val = fields[i].GetValue(obj); if (val == null) { packer.WriteByte((byte)TypeValue.Null); continue; } var type = fields[i].GetFieldType(); if (packer.serializers.TryGetValue(type, out var ser) == true) { packer.WriteByte(ser.typeValue); ser.pack.Invoke(packer, val); } else { packer.PackInternal(val); } } }
public void Pack(Packer packer, object obj) { var meta = (Packer.MetaType[])obj; Int32Serializer.PackDirect(packer, meta.Length); for (int i = 0; i < meta.Length; ++i) { packer.PackInternal(meta[i]); } }
public void Pack(Packer packer, object obj) { var arr = (System.Array)obj; Int32Serializer.PackDirect(packer, arr.Length); for (int i = 0; i < arr.Length; ++i) { packer.PackInternal(arr.GetValue(i)); } }
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 void Pack(Packer packer, object obj) { var meta = (Packer.Meta)obj; var arr = new Packer.MetaType[meta.meta.Count]; var i = 0; foreach (var kv in meta.meta) { arr[i++] = kv.Value; } packer.PackInternal(arr); }
public byte[] ToArray() { var obj = new PackerObject(); obj.meta = this.meta; obj.data = this.stream.ToArray(); byte[] output = null; using (var stream = new System.IO.MemoryStream()) { var packer = new Packer(this.serializers, stream); packer.PackInternal(obj); output = stream.ToArray(); } return(output); }
public void Pack(Packer packer, object obj) { var arr = (IList)obj; var type = arr.GetType(); Int32Serializer.PackDirect(packer, arr.Count); if (type.IsArray == true) { var rank = type.GetArrayRank(); if (rank > 1) { packer.WriteByte(2); } else { packer.WriteByte(1); } Int32Serializer.PackDirect(packer, packer.GetMetaTypeId(type.GetElementType())); if (rank > 1) { Int32Serializer.PackDirect(packer, rank); var arrData = (System.Array)arr; for (int j = 0; j < rank; ++j) { Int32Serializer.PackDirect(packer, arrData.GetLength(j)); } void WrapDimension(int[] ids, int currentDimension) { if (currentDimension == rank) { packer.PackInternal(arrData.GetValue(ids)); } else { for (int i = 0, length = arrData.GetLength(currentDimension); i < length; i++) { ids[currentDimension] = i; WrapDimension(ids, currentDimension + 1); } } } WrapDimension(new int[rank], 0); } else { for (int i = 0; i < arr.Count; ++i) { packer.PackInternal(arr[i]); } } } else { packer.WriteByte(0); Int32Serializer.PackDirect(packer, packer.GetMetaTypeId(arr.GetType().GenericTypeArguments[0])); Int32Serializer.PackDirect(packer, packer.GetMetaTypeId(arr.GetType().GetGenericTypeDefinition())); for (int i = 0; i < arr.Count; ++i) { packer.PackInternal(arr[i]); } } }
public static void PackDirect(Packer packer, string obj) { var bytes = System.Text.UTF8Encoding.UTF8.GetBytes(obj); packer.PackInternal(bytes); }