pub struct ComponentRegistryComponent;Expand description
Component impl for the COMPONENT_REGISTRY component.
The decoded value is a TlsMap<ComponentId, VLBytes> where each
value is the prost-encoded
ComponentMetadata
describing one registered component.
Unlike the other map component, this impl validates every mutation
in an incoming delta against the registry’s write invariants (see
[validate_registry_delta]) before applying or expanding it. The
registry is load-bearing for all app-data validation — every
policy lookup and every type-aware dispatch decodes it — so a
single invalid entry accepted here would poison every subsequent
ComponentRegistry::from_bytes load for every member of the
group.
Trait Implementations§
Source§impl Component for ComponentRegistryComponent
impl Component for ComponentRegistryComponent
Source§const ID: ComponentId = ComponentId::COMPONENT_REGISTRY
const ID: ComponentId = ComponentId::COMPONENT_REGISTRY
Stable wire identifier. Const-known so registries can build
static lookup tables.
Source§const COMPONENT_TYPE: ComponentType = ComponentType::TlsMapBytesBytes
const COMPONENT_TYPE: ComponentType = ComponentType::TlsMapBytesBytes
Logical wire type, written into the registry’s
ComponentMetadata.component_type slot at bootstrap.Source§type Value = TlsMap<ComponentId, VLBytes>
type Value = TlsMap<ComponentId, VLBytes>
Decoded full-state value (e.g.
String, TlsSet<InboxId>,
TlsMap<InboxId, VLBytes>).Source§type Mutation = TlsMapDelta<ComponentId, VLBytes>
type Mutation = TlsMapDelta<ComponentId, VLBytes>
Decoded payload that goes inside an
AppDataUpdateOperation::Update. Read moreSource§fn decode_value(bytes: &[u8]) -> Result<Self::Value, ComponentTypedError>
fn decode_value(bytes: &[u8]) -> Result<Self::Value, ComponentTypedError>
Decode the component’s stored bytes (as found in the AppData
dictionary) into the typed value.
Source§fn encode_value(value: &Self::Value) -> Result<Vec<u8>, ComponentTypedError>
fn encode_value(value: &Self::Value) -> Result<Vec<u8>, ComponentTypedError>
Encode a typed value back to the bytes that go in the AppData
dictionary slot. The inverse of
Component::decode_value.Source§fn encode_mutation(
mutation: &Self::Mutation,
) -> Result<Vec<u8>, ComponentTypedError>
fn encode_mutation( mutation: &Self::Mutation, ) -> Result<Vec<u8>, ComponentTypedError>
Encode a
Self::Mutation as the bytes that go inside an
AppDataUpdateOperation::Update payload. Read moreSource§fn apply_update_payload(
payload: &[u8],
prior: Option<&[u8]>,
) -> Result<Vec<u8>, ComponentTypedError>
fn apply_update_payload( payload: &[u8], prior: Option<&[u8]>, ) -> Result<Vec<u8>, ComponentTypedError>
Apply an
AppDataUpdateOperation::Update payload against the
component’s prior bytes (or None if first write) and return
the new full bytes. Read moreSource§fn expand_to_changes(
op: &AppDataUpdateOperation,
_prior: Option<&[u8]>,
) -> Result<Vec<ExpandedComponentChange>, ComponentTypedError>
fn expand_to_changes( op: &AppDataUpdateOperation, _prior: Option<&[u8]>, ) -> Result<Vec<ExpandedComponentChange>, ComponentTypedError>
Expand an
AppDataUpdate proposal (Update or Remove) into the
per-element changes the validator’s policy loop iterates over. Read moreSource§fn validate_invariant(
_change: &ComponentChange<'_>,
_registry: &ComponentRegistry,
) -> Result<(), ComponentInvariantError>
fn validate_invariant( _change: &ComponentChange<'_>, _registry: &ComponentRegistry, ) -> Result<(), ComponentInvariantError>
Optional component-local invariant check that runs after
validate_component_write’s policy verdict. Default is no-op
— components with no extra invariants don’t override.Auto Trait Implementations§
impl Freeze for ComponentRegistryComponent
impl RefUnwindSafe for ComponentRegistryComponent
impl Send for ComponentRegistryComponent
impl Sync for ComponentRegistryComponent
impl Unpin for ComponentRegistryComponent
impl UnsafeUnpin for ComponentRegistryComponent
impl UnwindSafe for ComponentRegistryComponent
Blanket Implementations§
§impl<T> AggregateExpressionMethods for T
impl<T> AggregateExpressionMethods for T
§fn aggregate_distinct(self) -> Self::Outputwhere
Self: DistinctDsl,
fn aggregate_distinct(self) -> Self::Outputwhere
Self: DistinctDsl,
DISTINCT modifier for aggregate functions Read more§fn aggregate_all(self) -> Self::Outputwhere
Self: AllDsl,
fn aggregate_all(self) -> Self::Outputwhere
Self: AllDsl,
ALL modifier for aggregate functions Read more§fn aggregate_filter<P>(self, f: P) -> Self::Outputwhere
P: AsExpression<Bool>,
Self: FilterDsl<<P as AsExpression<Bool>>::Expression>,
fn aggregate_filter<P>(self, f: P) -> Self::Outputwhere
P: AsExpression<Bool>,
Self: FilterDsl<<P as AsExpression<Bool>>::Expression>,
Add an aggregate function filter Read more
§fn aggregate_order<O>(self, o: O) -> Self::Outputwhere
Self: OrderAggregateDsl<O>,
fn aggregate_order<O>(self, o: O) -> Self::Outputwhere
Self: OrderAggregateDsl<O>,
Add an aggregate function order Read more
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
Mutably borrows from an owned value. Read more
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Converts
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>, which can then be
downcast into Box<dyn ConcreteType> where ConcreteType implements Trait.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Converts
Rc<Trait> (where Trait: Downcast) to Rc<Any>, which can then be further
downcast into Rc<ConcreteType> where ConcreteType implements Trait.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
Converts
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Converts
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.§impl<T> DowncastSend for T
impl<T> DowncastSend for T
§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<C> ErasedComponent for Cwhere
C: Component,
impl<C> ErasedComponent for Cwhere
C: Component,
Source§fn id(&self) -> ComponentId
fn id(&self) -> ComponentId
The component this impl handles — equivalent to
C::ID.Source§fn component_type(&self) -> ComponentType
fn component_type(&self) -> ComponentType
The wire type — equivalent to
C::COMPONENT_TYPE.fn apply_update_payload( &self, payload: &[u8], prior: Option<&[u8]>, ) -> Result<Vec<u8>, ComponentTypedError>
fn expand_to_changes( &self, op: &AppDataUpdateOperation, prior: Option<&[u8]>, ) -> Result<Vec<ExpandedComponentChange>, ComponentTypedError>
fn validate_invariant( &self, change: &ComponentChange<'_>, registry: &ComponentRegistry, ) -> Result<(), ComponentInvariantError>
§impl<T> Identity for Twhere
T: ?Sized,
impl<T> Identity for Twhere
T: ?Sized,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§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>
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 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>
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
impl<T> IntoRequest<T> for T
§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
Wrap the input message
T in a tonic::Request§impl<T> IntoSql for T
impl<T> IntoSql for T
§impl<L> LayerExt<L> for L
impl<L> LayerExt<L> for L
§fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
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
impl<T> Pointable for T
§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
Source§impl<S, T> Upcast<T> for S
impl<S, T> Upcast<T> for S
§impl<T> WindowExpressionMethods for T
impl<T> WindowExpressionMethods for T
§fn over(self) -> Self::Outputwhere
Self: OverDsl,
fn over(self) -> Self::Outputwhere
Self: OverDsl,
Turn a function call into a window function call Read more
§fn window_filter<P>(self, f: P) -> Self::Outputwhere
P: AsExpression<Bool>,
Self: FilterDsl<<P as AsExpression<Bool>>::Expression>,
fn window_filter<P>(self, f: P) -> Self::Outputwhere
P: AsExpression<Bool>,
Self: FilterDsl<<P as AsExpression<Bool>>::Expression>,
Add a filter to the current window function Read more
§fn partition_by<E>(self, expr: E) -> Self::Outputwhere
Self: PartitionByDsl<E>,
fn partition_by<E>(self, expr: E) -> Self::Outputwhere
Self: PartitionByDsl<E>,
Add a partition clause to the current window function Read more
§fn window_order<E>(self, expr: E) -> Self::Outputwhere
Self: OrderWindowDsl<E>,
fn window_order<E>(self, expr: E) -> Self::Outputwhere
Self: OrderWindowDsl<E>,
Add a order clause to the current window function Read more