public static byte[] Serialize(object o, bool compress = true) { if (o != null && o is byte[]) { return((byte[])o); } if (o is IEntityBufObject) { return(((IEntityBufObject)o).Serialize()); } MemoryStream ms = new MemoryStream(); MemoryStreamWriter writer = new MemoryStreamWriter(ms); Serialize(o, writer); var bytes = writer.GetBytes(); if (compress && bytes.Length > minGZIPCompressLenth) { var compressBytes = GZip.Compress(bytes); return(compressBytes); } else { return(bytes); } }
public static byte[] GenSerialize(Type type) { if (type == null) { throw new ArgumentNullException("type"); } using (MemoryStream ms = new MemoryStream()) { using (MemoryStreamWriter writer = new MemoryStreamWriter(ms)) { GenSerialize(type, writer); var bytes = writer.GetBytes(); return(bytes); } } }
public static void Serialize(object o, BufferPollManager poolmanager, ref int bufferindex, ref long size, ref byte[] serbyte, bool compress = true) { MemoryStreamWriter writer = new MemoryStreamWriter(poolmanager); Serialize(o, writer); bufferindex = writer.Bufferindex; size = writer.GetDataLen(); if (bufferindex == -1) { serbyte = writer.GetBytes(); if (compress && size - 8 > minGZIPCompressLenth) { var compressBytes = GZip.Compress(serbyte.Skip(8).Take((int)size - 8).ToArray()); size = 8 + compressBytes.Length; serbyte = new byte[size]; for (int i = 0; i < compressBytes.Length; i++) { serbyte[i + 8] = compressBytes[i]; } } } else { if (compress && size - 8 > minGZIPCompressLenth) { var offset = poolmanager.GetOffset(bufferindex); var compressBytes = GZip.Compress(poolmanager.Buffer.Skip(offset + 8).Take((int)size - 8).ToArray()); size = 8 + compressBytes.Length; for (int i = 0; i < compressBytes.Length; i++) { poolmanager.Buffer[offset + 8 + i] = compressBytes[i]; } } } }