public FileWriter(Header header, IAvroWriter <T> writer, long maxBlockCount = 1000) { if (header.Schema.ToAvroCanonical() != writer.WriterSchema.ToAvroCanonical()) { throw new ArgumentException("Incompatible DatumWriter"); } _header = header; _writer = writer; _maxBlockCount = maxBlockCount; _serializeStream = new MemoryStream(1024 * 1024); _encoder = new BinaryEncoder(_serializeStream); _fileStream = _header.FileInfo.Open(FileMode.CreateNew, FileAccess.Write, FileShare.Read); using (var encoding = new BinaryEncoder(_fileStream)) { encoding.WriteFixed(_header.Magic); encoding.WriteMap(_header.Metadata, (s, v) => s.WriteBytes(v)); encoding.WriteFixed(_header.Sync); } _fileStream.Flush(); }
public void WriteError <T>(IAvroEncoder encoder, string message, T error) where T : class { _protocolPair.ErrorWriters[message].Write(encoder, error); }
public void WriteReponse <T>(IAvroEncoder encoder, string message, T response) where T : class { _protocolPair.ResponseWriters[message].Write(encoder, response); }
public void WriteRequest <T>(IAvroEncoder encoder, string message, T record) where T : class, IAvroRecord { _protocolPair.RequestWriters[message].Write(encoder, record); }
void IAvroObject.Encode(IAvroEncoder encoder) { throw new NotImplementedException(); }
public void Write(IAvroEncoder stream, T value) => _writer.Invoke(stream, value);