public static byte[] Serialize(this IxInfo ix) { using (var stream = new MemoryStream()) { byte[] versionBytes = BitConverter.GetBytes(ix.VersionId); byte[] docCountBytes = BitConverter.GetBytes(ix.DocumentCount); byte[] compressionEnumBytes = BitConverter.GetBytes((int)ix.Compression); byte[] pkFieldNameBytes = ix.PrimaryKeyFieldName == null ? new byte[0] : Encoding.GetBytes(ix.PrimaryKeyFieldName); byte[] pkFnLenBytes = BitConverter.GetBytes(pkFieldNameBytes.Length); if (!BitConverter.IsLittleEndian) { Array.Reverse(versionBytes); Array.Reverse(docCountBytes); Array.Reverse(compressionEnumBytes); Array.Reverse(pkFieldNameBytes); Array.Reverse(pkFnLenBytes); } stream.Write(versionBytes, 0, sizeof(long)); stream.Write(docCountBytes, 0, sizeof(int)); stream.Write(compressionEnumBytes, 0, sizeof(int)); stream.Write(pkFnLenBytes, 0, sizeof(int)); if (pkFnLenBytes.Length > 0) { stream.Write(pkFieldNameBytes, 0, pkFieldNameBytes.Length); } return(stream.ToArray()); } }
public static void Serialize(this IxInfo ix, string fileName) { using (var fs = new FileStream(fileName, FileMode.Create, FileAccess.Write, FileShare.None, 4096, FileOptions.WriteThrough)) { var bytes = ix.Serialize(); fs.Write(bytes, 0, bytes.Length); } }
public static byte[] Serialize(this IxInfo ix) { using (var stream = new MemoryStream()) { byte[] versionBytes = BitConverter.GetBytes(ix.VersionId); byte[] docCountBytes = BitConverter.GetBytes(ix.DocumentCount); if (!BitConverter.IsLittleEndian) { Array.Reverse(versionBytes); } stream.Write(versionBytes, 0, sizeof(long)); stream.Write(docCountBytes, 0, sizeof(int)); stream.WriteByte(EncodedBoolean[ix.Compressed]); return(stream.ToArray()); } }