pub struct ExtensionDescriptorRegistry { /* private fields */ }Expand description
Acyclic protocol-only descriptor registry.
Implementations§
Source§impl ExtensionDescriptorRegistry
impl ExtensionDescriptorRegistry
Sourcepub fn new() -> Self
pub fn new() -> Self
Builds an empty registry; extensions are disabled until a descriptor is registered.
Sourcepub fn register(
&mut self,
descriptor: ExtensionDescriptor,
) -> Result<(), ExtensionRegistryError>
pub fn register( &mut self, descriptor: ExtensionDescriptor, ) -> Result<(), ExtensionRegistryError>
Adds one descriptor after validating all descriptor-local and cross-owner rules.
Sourcepub fn register_method(
&mut self,
id: &ExtensionId,
method: ExtensionMethodDescriptor,
) -> Result<(), ExtensionRegistryError>
pub fn register_method( &mut self, id: &ExtensionId, method: ExtensionMethodDescriptor, ) -> Result<(), ExtensionRegistryError>
Adds another request method to an already registered extension descriptor.
One extension can own more than one request method. The extension’s settings, resolver, notification, and result discriminator stay on the original descriptor so every additional method shares the same negotiated capability and frozen receipt.
Sourcepub fn freeze(
&mut self,
) -> Result<ExtensionRegistryReceipt, ExtensionRegistryError>
pub fn freeze( &mut self, ) -> Result<ExtensionRegistryReceipt, ExtensionRegistryError>
Freezes this registry and returns its canonical domain-separated digest receipt.
Sourcepub fn receipt(&self) -> Option<&ExtensionRegistryReceipt>
pub fn receipt(&self) -> Option<&ExtensionRegistryReceipt>
Returns the frozen receipt, if this registry has been frozen.
Sourcepub fn descriptor(&self, id: &ExtensionId) -> Option<&ExtensionDescriptor>
pub fn descriptor(&self, id: &ExtensionId) -> Option<&ExtensionDescriptor>
Returns a descriptor by its exact registered identifier.
Sourcepub fn method_descriptor(
&self,
id: &ExtensionId,
name: &str,
) -> Option<&ExtensionMethodDescriptor>
pub fn method_descriptor( &self, id: &ExtensionId, name: &str, ) -> Option<&ExtensionMethodDescriptor>
Returns the descriptor for one extension-owned request method.
This includes the primary descriptor method and every additional method registered for the same extension capability. Server handler registries use it to reject handler configurations that could never be admitted at request dispatch.
Sourcepub fn descriptors(&self) -> impl ExactSizeIterator<Item = &ExtensionDescriptor>
pub fn descriptors(&self) -> impl ExactSizeIterator<Item = &ExtensionDescriptor>
Returns the frozen descriptors in deterministic identifier order.
Sourcepub fn preserve_unknown_peer_extensions(
&self,
peer: BTreeMap<ExtensionId, ExtensionSettings>,
) -> BTreeMap<ExtensionId, ExtensionSettings>
pub fn preserve_unknown_peer_extensions( &self, peer: BTreeMap<ExtensionId, ExtensionSettings>, ) -> BTreeMap<ExtensionId, ExtensionSettings>
Preserves unknown peer settings as inert diagnostic data.
Sourcepub fn negotiate<R>(
&self,
protocol_era: ProtocolEra,
local: &ExtensionLocalEnablement,
client: &ClientExtensionDiscovery,
server: &ServerExtensionDiscovery,
resolver: &mut R,
) -> Result<NegotiatedExtensionSet, ExtensionNegotiationError>where
R: ExtensionSettingsCompatibilityResolver,
pub fn negotiate<R>(
&self,
protocol_era: ProtocolEra,
local: &ExtensionLocalEnablement,
client: &ClientExtensionDiscovery,
server: &ServerExtensionDiscovery,
resolver: &mut R,
) -> Result<NegotiatedExtensionSet, ExtensionNegotiationError>where
R: ExtensionSettingsCompatibilityResolver,
Derives one frozen, bilateral extension set for the current exchange.
The typed resolver is called only for descriptors enabled by both local gates and advertised by both peers on this exchange. The generic registry preserves the peer objects independently; it never treats JSON-object equality as compatibility.
Trait Implementations§
Source§impl Clone for ExtensionDescriptorRegistry
impl Clone for ExtensionDescriptorRegistry
Source§fn clone(&self) -> ExtensionDescriptorRegistry
fn clone(&self) -> ExtensionDescriptorRegistry
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more