Skip to main content

ChainCtx

Struct ChainCtx 

Source
#[non_exhaustive]
pub struct ChainCtx { pub thread: usize, pub queues: ShardQueues, pub budget: Arc<InflightBudget>, pub pipeline: String, pub source_framing: FramingContract, /* private fields */ }
Expand description

Per-thread wiring handed to the chain factory, carrying everything the terminal .sink(...) stage needs, so assemblies stop threading queues, budget, and the pipeline name by hand.

Passed by value, once per pipeline thread; move the fields into the chain being built. Not Clone (see the module docs on drop ordering).

Fields (Non-exhaustive)§

This struct is marked as non-exhaustive
Non-exhaustive structs could have additional fields added in future. Therefore, non-exhaustive structs cannot be constructed in external crates using the traditional Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.
§thread: usize

Zero-based pipeline thread index.

§queues: ShardQueues

This thread’s clone of the shard-queue senders for the first installed sink, the back-compat handle for single-sink pipelines (.sink(...)). Multi-sink pipelines resolve each branch’s queues by name via sink instead.

§budget: Arc<InflightBudget>

The shared in-flight byte budget.

§pipeline: String

The pipeline name (ChainBuilder::with_metrics’s first argument).

§source_framing: FramingContract

How the source frames its payloads (Source::framing_contract). Hand it to a deserializer builder (e.g. JsonDeserializerBuilder:: for_source_framing) so the deserializer’s granularity is derived from the source and a double-framing configuration is rejected.

Implementations§

Source§

impl ChainCtx

Source

pub fn sink(&self, name: &str) -> SinkCtx

The named sink’s handles (name, shard queues, shared in-flight budget) for a split-terminal branch. Pass the result straight to SplitBuilder::add. The single-sink .sink() sugar installs its sink under the name "default".

§Panics

Panics if no sink was installed under name. The chain factory runs once per thread, on the cold path, before any data flows.

Source

pub fn chunk(&self) -> ChunkConfig

The first installed sink’s resolved terminal-stage chunking, the single-sink counterpart to queues, fed straight to the chain’s .sink(...) terminal:

let chunk_cfg = ctx.chunk(); // bind before `with_metrics` moves `ctx.pipeline`
let orders = chain(BytesPassthrough)
    .with_metrics(ctx.pipeline, "orders")
    .sink(encoder, KeyHashRouter, chunk_cfg, ctx.queues, ctx.budget)
    .build();

It resolves the per-sink YAML chunk: block (or SinkOptions::with_chunk, or the 64 KiB default) at assembly time. Split pipelines take each branch’s chunk from sink instead.

Source

pub fn meter( &self, component: impl Into<SharedString>, component_type: impl Into<SharedString>, ) -> Meter

A Meter for a pipeline author’s own metrics, pre-labeled with the pipeline name plus the component / component_type you name and scoped to the spate_custom_ namespace. Resolve handles from it once here (the factory runs once per thread, before data flows) and move them into the operator closures that touch them:

// Pass the LOCAL name — this registers `spate_custom_enrich_hits_total`.
let hits = ctx.meter("enrich", "map").counter("enrich_hits_total", &[]);
// ... move `hits` into a `.inspect(move |r| { hits.increment(1); })`

The resulting series carry pipeline/component/component_type like every framework series and live under the spate_ umbrella, so they join cleanly in a query. You pass local names; the Meter adds the spate_custom_ prefix. The metrics reference carries the umbrella and the label set in full.

Trait Implementations§

Source§

impl Debug for ChainCtx

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

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
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
Source§

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

Source§

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.

Source§

impl<A, B, T> HttpServerConnExec<A, B> for T
where B: Body,

Source§

impl<T> Instrument for T

Source§

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

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

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> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

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

Initializes a with the given initializer. Read more
Source§

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

Dereferences the given pointer. Read more
Source§

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

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

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

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

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.
Source§

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

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

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
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

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