private int Write(Thrift.PageHeader ph, byte[] data) { int headerSize = ThriftStream.Write(ph); _output.Write(data, 0, data.Length); return(headerSize); }
private void WriteValues(SchemaElement schema, IList values, Thrift.PageHeader ph, CompressionMethod compression, ColumnStats stats) { byte[] data; using (var ms = new MemoryStream()) { using (var writer = new BinaryWriter(ms)) { if (stats.NullCount > 0) { CreateDefinitions(values, schema, out IList newValues, out List <int> definitions); values = newValues; _rleWriter.Write(writer, schema, definitions); } _plainWriter.Write(writer, schema, values); data = ms.ToArray(); } } ph.Uncompressed_page_size = data.Length; if (compression != CompressionMethod.None) { IDataWriter writer = DataFactory.GetWriter(compression); using (var ms = new MemoryStream()) { writer.Write(data, ms); data = ms.ToArray(); } ph.Compressed_page_size = data.Length; } else { ph.Compressed_page_size = ph.Uncompressed_page_size; } _thrift.Write(ph); _output.Write(data, 0, data.Length); }
/// <summary> /// Finalizes file, writes metadata and footer /// </summary> public void Dispose() { if (!_dataWritten) { return; } //finalize file long size = ThriftStream.Write(_meta.ThriftMeta); //metadata size Writer.Write((int)size); //4 bytes //end magic WriteMagic(); //4 bytes Writer.Flush(); _output.Flush(); }