pub struct Encoder<W: Write = Vec<u8>> { /* private fields */ }Implementations§
Source§impl<W: Write> Encoder<W>
impl<W: Write> Encoder<W>
Sourcepub fn new_to(writer: W) -> Result<Self>
pub fn new_to(writer: W) -> Result<Self>
Create an encoder that writes to an arbitrary writer. Writes the file header immediately.
Sourcepub fn into_inner(self) -> W
pub fn into_inner(self) -> W
Consume the encoder and return the inner writer.
Sourcepub fn bytes_written(&self) -> u64
pub fn bytes_written(&self) -> u64
Total bytes written through this encoder (including the file header).
Sourcepub fn register_schema(
&mut self,
name: &str,
fields: Vec<FieldDef>,
) -> Result<Schema>
pub fn register_schema( &mut self, name: &str, fields: Vec<FieldDef>, ) -> Result<Schema>
Register a schema by name. Returns a Schema handle that can be
passed to write_event (on this or any other
encoder).
All schemas have timestamps. When writing events, the first element of
values must be FieldValue::Varint(timestamp_ns). It is extracted and
encoded in the event header (not as a regular field).
Eagerly writes the schema frame. Idempotent if the definition matches.
Sourcepub fn write_event(
&mut self,
schema: &Schema,
values: &[FieldValue],
) -> Result<()>
pub fn write_event( &mut self, schema: &Schema, values: &[FieldValue], ) -> Result<()>
Write an event for a schema.
The first element of values must be FieldValue::Varint(timestamp_ns)
— it is extracted and encoded in the event header, not as a regular
field. The remaining values must match the schema’s field count.
If this encoder hasn’t seen schema before, it is auto-registered
(the schema frame is written before the event).
Sourcepub fn write<T: TraceEvent + 'static>(&mut self, event: &T) -> Result<()>
pub fn write<T: TraceEvent + 'static>(&mut self, event: &T) -> Result<()>
Write a derived TraceEvent. Auto-registers the schema on first call for this type. Handles timestamp encoding: emits TimestampReset if needed, packs u24 delta in header.
Sourcepub fn intern_string(&mut self, s: &str) -> Result<InternedString>
pub fn intern_string(&mut self, s: &str) -> Result<InternedString>
Intern a string, emitting a pool frame if new. Returns an InternedString handle.