pub struct VectorChannel {
pub http_event: Option<HttpEventChannel>,
pub nats_subject: Option<NatsSubjectChannel>,
pub stdout: Option<StdoutChannel>,
}Expand description
Where the export bytes flow.
All variants land in the pleme-io Vector + NATS layer — there is no escape hatch for ad-hoc sinks. Vector’s downstream sink graph (file / Loki / VictoriaLogs / VictoriaMetrics) handles durability
- analytics. This primitive only names the ingestion shape.
Fields§
§http_event: Option<HttpEventChannel>HTTP POST to Vector’s http_server source.
nats_subject: Option<NatsSubjectChannel>Publish to a NATS JetStream subject. Use for tier-1 guaranteed-delivery events (receipts that MUST survive).
stdout: Option<StdoutChannel>Print to the export worker’s stdout. Vector’s
kubernetes_logs source picks it up. Lowest-effort channel;
fine for debug / one-off exports.
Implementations§
Source§impl VectorChannel
impl VectorChannel
Sourcepub fn variant(&self) -> Result<ChannelVariant<'_>, ChannelError>
pub fn variant(&self) -> Result<ChannelVariant<'_>, ChannelError>
Resolve to exactly one variant. Errors on zero or many.
One-line inherent forwarder that delegates the sweep
body to the substrate primitive
crate::tagged_union::TaggedUnion::variant — every
production .variant() site on ProcessSpec dispatches
through this ONE default body so the resolve-sweep
pattern lives at ONE substrate site. The inherent surface
stays load-bearing so consumer callsites don’t need
use TaggedUnion.
Trait Implementations§
Source§impl Clone for VectorChannel
impl Clone for VectorChannel
Source§fn clone(&self) -> VectorChannel
fn clone(&self) -> VectorChannel
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for VectorChannel
impl Debug for VectorChannel
Source§impl Default for VectorChannel
impl Default for VectorChannel
Source§fn default() -> VectorChannel
fn default() -> VectorChannel
Source§impl<'de> Deserialize<'de> for VectorChannel
impl<'de> Deserialize<'de> for VectorChannel
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl JsonSchema for VectorChannel
impl JsonSchema for VectorChannel
Source§fn schema_name() -> String
fn schema_name() -> String
Source§fn schema_id() -> Cow<'static, str>
fn schema_id() -> Cow<'static, str>
Source§fn json_schema(generator: &mut SchemaGenerator) -> Schema
fn json_schema(generator: &mut SchemaGenerator) -> Schema
Source§fn is_referenceable() -> bool
fn is_referenceable() -> bool
$ref keyword. Read moreSource§impl Serialize for VectorChannel
impl Serialize for VectorChannel
Source§impl TaggedUnion for VectorChannel
impl TaggedUnion for VectorChannel
Source§const KIND_LIST: &'static str = CHANNEL_KIND_LIST
const KIND_LIST: &'static str = CHANNEL_KIND_LIST
TaggedUnionError::empty when no slot is populated on this
tagged union. Pinned against
<Self::Kind as tatara_closed_set::ClosedSet>::labels_joined("/")
by assert_kind_list_matches_closed_set so a variant added
to Self::Kind without updating this constant (or a renamed
variant) fails-loudly at the testkit boundary.Source§type Kind = ChannelKind
type Kind = ChannelKind
tatara_closed_set::ClosedSet so the generic
diagnostic-stability testkit (assert_kind_list_matches_closed_set)
can project <Self::Kind as ClosedSet>::labels_joined("/")
against Self::KIND_LIST byte-identically. Additionally
bound to VariantSelector<Self> so Self::variant’s
default body can dispatch k.select(self) at each
[ClosedSet::ALL] entry generically.Source§type Error = ChannelError
type Error = ChannelError
.variant() method — projects onto the shared
TaggedUnionError contract so resolve_or_err’s two-arm
dispatch reaches every implementor uniformly.Source§fn variant(
&self,
) -> Result<<Self::Kind as VariantSelector<Self>>::Variant<'_>, Self::Error>
fn variant( &self, ) -> Result<<Self::Kind as VariantSelector<Self>>::Variant<'_>, Self::Error>
Self::Kind discriminator in
ClosedSet::ALL order,
projecting each into the parent’s borrowed variant view via
VariantSelector::select, and resolve to exactly one populated
variant through resolve_or_err. Errors on zero (with
Self::KIND_LIST carried on the TaggedUnionError::empty
arm) or many. Read moreSource§impl VariantSelector<VectorChannel> for ChannelKind
impl VariantSelector<VectorChannel> for ChannelKind
Source§type Variant<'a> = ChannelVariant<'a>
type Variant<'a> = ChannelVariant<'a>
.variant() method — one arm per closed-set variant, each
arm carrying a &'a reference into the parent’s populated
slot. Bound generically here so TaggedUnion::variant’s
default body can name the return type without restating it
per parent. Additionally bound to VariantKind<Self> so
the reverse projection Variant<'a> → Self is closed at the
trait boundary — every implementor’s borrowed view knows its
addressing Kind through ONE typed contract, and the substrate
testkit assert_variant_round_trip composes select
(forward) with variant_kind (reverse) generically.Source§fn select<'a>(self, parent: &'a VectorChannel) -> Option<ChannelVariant<'a>>where
Self: 'a,
fn select<'a>(self, parent: &'a VectorChannel) -> Option<ChannelVariant<'a>>where
Self: 'a,
&'a P borrow into the optional typed variant view
for self (the addressed discriminator). Returns None iff
the matching slot on P is None. Composes the closed-set
sweep TaggedUnion::variant loops over.Auto Trait Implementations§
impl Freeze for VectorChannel
impl RefUnwindSafe for VectorChannel
impl Send for VectorChannel
impl Sync for VectorChannel
impl Unpin for VectorChannel
impl UnsafeUnpin for VectorChannel
impl UnwindSafe for VectorChannel
Blanket Implementations§
impl<T> AppData for Twhere
T: OptionalSend + OptionalSync + 'static + OptionalSerde,
impl<T> AppDataResponse for Twhere
T: OptionalSend + OptionalSync + 'static + OptionalSerde,
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
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 moreimpl<T> OptionalSend for T
impl<T> OptionalSync for T
Source§impl<T> Paint for Twhere
T: ?Sized,
impl<T> Paint for Twhere
T: ?Sized,
Source§fn fg(&self, value: Color) -> Painted<&T>
fn fg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self with the foreground set to
value.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like red() and
green(), which have the same functionality but are
pithier.
§Example
Set foreground color to white using fg():
use yansi::{Paint, Color};
painted.fg(Color::White);Set foreground color to white using white().
use yansi::Paint;
painted.white();Source§fn bright_black(&self) -> Painted<&T>
fn bright_black(&self) -> Painted<&T>
Source§fn bright_red(&self) -> Painted<&T>
fn bright_red(&self) -> Painted<&T>
Source§fn bright_green(&self) -> Painted<&T>
fn bright_green(&self) -> Painted<&T>
Source§fn bright_yellow(&self) -> Painted<&T>
fn bright_yellow(&self) -> Painted<&T>
Source§fn bright_blue(&self) -> Painted<&T>
fn bright_blue(&self) -> Painted<&T>
Source§fn bright_magenta(&self) -> Painted<&T>
fn bright_magenta(&self) -> Painted<&T>
Source§fn bright_cyan(&self) -> Painted<&T>
fn bright_cyan(&self) -> Painted<&T>
Source§fn bright_white(&self) -> Painted<&T>
fn bright_white(&self) -> Painted<&T>
Source§fn bg(&self, value: Color) -> Painted<&T>
fn bg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self with the background set to
value.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like on_red() and
on_green(), which have the same functionality but
are pithier.
§Example
Set background color to red using fg():
use yansi::{Paint, Color};
painted.bg(Color::Red);Set background color to red using on_red().
use yansi::Paint;
painted.on_red();Source§fn on_primary(&self) -> Painted<&T>
fn on_primary(&self) -> Painted<&T>
Source§fn on_magenta(&self) -> Painted<&T>
fn on_magenta(&self) -> Painted<&T>
Source§fn on_bright_black(&self) -> Painted<&T>
fn on_bright_black(&self) -> Painted<&T>
Source§fn on_bright_red(&self) -> Painted<&T>
fn on_bright_red(&self) -> Painted<&T>
Source§fn on_bright_green(&self) -> Painted<&T>
fn on_bright_green(&self) -> Painted<&T>
Source§fn on_bright_yellow(&self) -> Painted<&T>
fn on_bright_yellow(&self) -> Painted<&T>
Source§fn on_bright_blue(&self) -> Painted<&T>
fn on_bright_blue(&self) -> Painted<&T>
Source§fn on_bright_magenta(&self) -> Painted<&T>
fn on_bright_magenta(&self) -> Painted<&T>
Source§fn on_bright_cyan(&self) -> Painted<&T>
fn on_bright_cyan(&self) -> Painted<&T>
Source§fn on_bright_white(&self) -> Painted<&T>
fn on_bright_white(&self) -> Painted<&T>
Source§fn attr(&self, value: Attribute) -> Painted<&T>
fn attr(&self, value: Attribute) -> Painted<&T>
Enables the styling Attribute value.
This method should be used rarely. Instead, prefer to use
attribute-specific builder methods like bold() and
underline(), which have the same functionality
but are pithier.
§Example
Make text bold using attr():
use yansi::{Paint, Attribute};
painted.attr(Attribute::Bold);Make text bold using using bold().
use yansi::Paint;
painted.bold();Source§fn rapid_blink(&self) -> Painted<&T>
fn rapid_blink(&self) -> Painted<&T>
Source§fn quirk(&self, value: Quirk) -> Painted<&T>
fn quirk(&self, value: Quirk) -> Painted<&T>
Enables the yansi Quirk value.
This method should be used rarely. Instead, prefer to use quirk-specific
builder methods like mask() and
wrap(), which have the same functionality but are
pithier.
§Example
Enable wrapping using .quirk():
use yansi::{Paint, Quirk};
painted.quirk(Quirk::Wrap);Enable wrapping using wrap().
use yansi::Paint;
painted.wrap();Source§fn clear(&self) -> Painted<&T>
👎Deprecated since 1.0.1: renamed to resetting() due to conflicts with Vec::clear().
The clear() method will be removed in a future release.
fn clear(&self) -> Painted<&T>
renamed to resetting() due to conflicts with Vec::clear().
The clear() method will be removed in a future release.
Source§fn whenever(&self, value: Condition) -> Painted<&T>
fn whenever(&self, value: Condition) -> Painted<&T>
Conditionally enable styling based on whether the Condition value
applies. Replaces any previous condition.
See the crate level docs for more details.
§Example
Enable styling painted only when both stdout and stderr are TTYs:
use yansi::{Paint, Condition};
painted.red().on_yellow().whenever(Condition::STDOUTERR_ARE_TTY);