Skip to main content

Encoder

Struct Encoder 

pub struct Encoder<W = Vec<u8>>
where W: Write,
{ /* private fields */ }
Available on crate feature dial9 only.
Expand description

Trace file encoder.

Writes the binary file header, registers event schemas, interns strings into a pool, and encodes events with delta-compressed timestamps.

The default type parameter (Vec<u8>) buffers everything in memory; use Encoder::new_to to write to an arbitrary Write sink.

Implementations§

§

impl Encoder

pub fn new() -> Encoder

pub fn finish(self) -> Vec<u8>

Consume the encoder and return the encoded bytes.

§

impl<W> Encoder<W>
where W: Write,

pub fn new_to(writer: W) -> Result<Encoder<W>, Error>

Create an encoder that writes to an arbitrary writer. Writes the file header immediately.

pub fn into_inner(self) -> W

Consume the encoder and return the inner writer.

pub fn as_inner(&self) -> &W

Borrow the inner writer.

pub fn bytes_written(&self) -> u64

Total bytes written through this encoder (including the file header).

pub fn reset_to(&mut self, new_writer: W) -> Result<W, Error>

Reset the encoder to a new writer, preserving internal allocations. Returns the old writer. Writes a file header to the new writer.

pub fn register_schema( &mut self, name: &str, fields: Vec<FieldDef>, ) -> Result<Schema, Error>

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.

pub fn register_existing( &mut self, schema: &Schema, ) -> Result<WireTypeId, Error>

Register a pre-built Schema handle with this encoder.

Eagerly writes the schema frame (and annotation frame if annotations are present). Idempotent if the definition matches.

pub fn write_event( &mut self, schema: &Schema, values: &[FieldValue], ) -> Result<(), Error>

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).

pub fn write<T>(&mut self, event: &T) -> Result<(), Error>
where T: TraceEvent + 'static,

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.

pub fn intern_string(&mut self, s: &str) -> Result<InternedString, Error>

Intern a string, emitting a pool frame if new. Returns an InternedString handle.

pub fn write_string_pool(&mut self, entries: &[PoolEntry]) -> Result<(), Error>

pub fn intern_stack_frames( &mut self, frames: &[u64], ) -> Result<InternedStackFrames, Error>

Intern a stack-frame vector, emitting a stack-pool frame if new. Returns an InternedStackFrames handle.

pub fn write_stack_pool( &mut self, entries: &[StackPoolEntry], ) -> Result<(), Error>

pub fn flush(&mut self) -> Result<(), Error>

Flush the underlying writer.

pub fn into_raw_encoder(self) -> RawEncoder<W>

Convert this encoder into a RawEncoder that only supports writing pre-encoded bytes. The byte count is preserved so rotation decisions remain correct.

Use this after writing any structured data (headers, segment metadata) to switch to a raw-only mode for appending pre-encoded batches.

§

impl Encoder

pub fn write_infallible<T>(&mut self, event: &T)
where T: TraceEvent + 'static,

pub fn intern_string_infallible(&mut self, s: &str) -> InternedString

pub fn intern_stack_frames_infallible( &mut self, frames: &[u64], ) -> InternedStackFrames

pub fn reset_to_infallible(&mut self, data: Vec<u8>) -> Vec<u8>

Resets the encoder to point to a new backing Vec returning the old one

Trait Implementations§

§

impl Default for Encoder

§

fn default() -> Encoder

Returns the “default value” for a type. Read more

Auto Trait Implementations§

§

impl<W> Freeze for Encoder<W>
where W: Freeze,

§

impl<W> RefUnwindSafe for Encoder<W>
where W: RefUnwindSafe,

§

impl<W> Send for Encoder<W>
where W: Send,

§

impl<W> Sync for Encoder<W>
where W: Sync,

§

impl<W> Unpin for Encoder<W>
where W: Unpin,

§

impl<W> UnsafeUnpin for Encoder<W>
where W: UnsafeUnpin,

§

impl<W> UnwindSafe for Encoder<W>
where W: UnwindSafe,

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

impl<'a, T, E> AsTaggedExplicit<'a, E> for T
where T: 'a,

§

fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

§

impl<'a, T, E> AsTaggedImplicit<'a, E> for T
where T: 'a,

§

fn implicit( self, class: Class, constructed: bool, tag: u32, ) -> TaggedParser<'a, Implicit, Self, E>

Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> FutureExt for T

§

fn with_context(self, otel_cx: Context) -> WithContext<Self>

Attaches the provided Context to this type, returning a WithContext wrapper. Read more
§

fn with_current_context(self) -> WithContext<Self>

Attaches the current Context to this type, returning a WithContext wrapper. Read more
§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
§

impl<T> IntoRequest<T> for T

§

fn into_request(self) -> Request<T>

Wrap the input message T in a rama_grpc::Request
§

impl<L> LayerExt<L> for L

§

fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>
where L: Layer<S>,

Applies the layer to a service and wraps it in Layered.
§

impl<T> Pointable for T

§

const ALIGN: usize

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
§

impl<T> PolicyExt for T
where T: ?Sized,

§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
§

impl<T, U> RamaFrom<T> for U
where U: From<T>,

§

fn rama_from(value: T) -> U

§

impl<T, U, CrateMarker> RamaInto<U, CrateMarker> for T
where U: RamaFrom<T, CrateMarker>,

§

fn rama_into(self) -> U

§

impl<T, U> RamaTryFrom<T> for U
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

§

fn rama_try_from(value: T) -> Result<U, <U as RamaTryFrom<T>>::Error>

§

impl<T, U, CrateMarker> RamaTryInto<U, CrateMarker> for T
where U: RamaTryFrom<T, CrateMarker>,

§

type Error = <U as RamaTryFrom<T, CrateMarker>>::Error

§

fn rama_try_into(self) -> Result<U, <U as RamaTryFrom<T, CrateMarker>>::Error>

§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<V, F> ValueFormatter<&V> for F
where F: ValueFormatter<V> + ?Sized, V: ?Sized,

§

const SHAPE: FieldShape<'static>

Available on non-metrique_require_explicit_impls only.
The shape of values produced by this formatter. Read more
§

fn format_value(writer: impl ValueWriter, value: &&V)

Write value to writer
§

impl<V, F> ValueFormatter<Arc<V>> for F
where F: ValueFormatter<V> + ?Sized, V: ?Sized,

§

const SHAPE: FieldShape<'static>

Available on non-metrique_require_explicit_impls only.
The shape of values produced by this formatter. Read more
§

fn format_value(writer: impl ValueWriter, value: &Arc<V>)

Write value to writer
§

impl<V, F> ValueFormatter<Box<V>> for F
where F: ValueFormatter<V> + ?Sized, V: ?Sized,

§

const SHAPE: FieldShape<'static>

Available on non-metrique_require_explicit_impls only.
The shape of values produced by this formatter. Read more
§

fn format_value(writer: impl ValueWriter, value: &Box<V>)

Write value to writer
§

impl<V, F> ValueFormatter<Cow<'_, V>> for F
where V: ToOwned + ?Sized, F: ValueFormatter<V> + ?Sized,

§

const SHAPE: FieldShape<'static>

Available on non-metrique_require_explicit_impls only.
The shape of values produced by this formatter. Read more
§

fn format_value(writer: impl ValueWriter, value: &Cow<'_, V>)

Write value to writer
§

impl<V, F> ValueFormatter<Option<V>> for F
where F: ValueFormatter<V> + ?Sized,

§

const SHAPE: FieldShape<'static>

Available on non-metrique_require_explicit_impls only.
The shape of values produced by this formatter. Read more
§

fn format_value(writer: impl ValueWriter, value: &Option<V>)

Write value to writer
§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more