pub struct Router<T: CapabilityBound> { /* private fields */ }Expand description
A Router is a capability that lets the holder obtain other capabilities
asynchronously. Router is the object capability representation of
Routable.
During routing, a request usually traverses through the component topology, passing through several routers, ending up at some router that will fulfill the request instead of forwarding it upstream.
Implementations§
Source§impl<T: CapabilityBound> Router<T>
impl<T: CapabilityBound> Router<T>
Sourcepub fn new_error(error: impl Into<RouterError>) -> Self
pub fn new_error(error: impl Into<RouterError>) -> Self
Creates a router that will always fail a request with the provided error.
Sourcepub fn new_debug(source: CapabilitySource) -> Self
pub fn new_debug(source: CapabilitySource) -> Self
Creates a router that will always return the given debug info.
Sourcepub async fn route(
&self,
request: RouteRequest,
target: WeakInstanceToken,
) -> Result<Option<T>, RouterError>
pub async fn route( &self, request: RouteRequest, target: WeakInstanceToken, ) -> Result<Option<T>, RouterError>
Obtain a capability from this router, following the description in request.
Sourcepub async fn route_debug(
&self,
request: RouteRequest,
target: WeakInstanceToken,
) -> Result<CapabilitySource, RouterError>
pub async fn route_debug( &self, request: RouteRequest, target: WeakInstanceToken, ) -> Result<CapabilitySource, RouterError>
Obtain a CapabilitySource from this router, following the description in request.
Source§impl<T: Clone + CapabilityBound> Router<T>
impl<T: Clone + CapabilityBound> Router<T>
Source§impl Router<Connector>
impl Router<Connector>
Sourcepub fn serve_and_register(
self,
stream: ConnectorRouterRequestStream,
koid: Koid,
token: WeakInstanceToken,
)
pub fn serve_and_register( self, stream: ConnectorRouterRequestStream, koid: Koid, token: WeakInstanceToken, )
Serves the fuchsia.sandbox.Router protocol and moves ourself into the registry.
Source§impl Router<Data>
impl Router<Data>
Sourcepub fn serve_and_register(
self,
stream: DataRouterRequestStream,
koid: Koid,
token: WeakInstanceToken,
)
pub fn serve_and_register( self, stream: DataRouterRequestStream, koid: Koid, token: WeakInstanceToken, )
Serves the fuchsia.sandbox.Router protocol and moves ourself into the registry.
Source§impl Router<Dictionary>
impl Router<Dictionary>
Sourcepub fn serve_and_register(
self,
stream: DictionaryRouterRequestStream,
koid: Koid,
token: WeakInstanceToken,
)
pub fn serve_and_register( self, stream: DictionaryRouterRequestStream, koid: Koid, token: WeakInstanceToken, )
Serves the fuchsia.sandbox.Router protocol and moves ourself into the registry.
Source§impl Router<DirConnector>
impl Router<DirConnector>
Sourcepub fn serve_and_register(
self,
stream: DirConnectorRouterRequestStream,
koid: Koid,
token: WeakInstanceToken,
)
pub fn serve_and_register( self, stream: DirConnectorRouterRequestStream, koid: Koid, token: WeakInstanceToken, )
Serves the fuchsia.sandbox.Router protocol and moves ourself into the registry.
Trait Implementations§
Source§impl CapabilityBound for Router<Connector>
impl CapabilityBound for Router<Connector>
fn debug_typename() -> &'static str
Source§impl CapabilityBound for Router<Data>
impl CapabilityBound for Router<Data>
fn debug_typename() -> &'static str
Source§impl CapabilityBound for Router<Dictionary>
impl CapabilityBound for Router<Dictionary>
fn debug_typename() -> &'static str
Source§impl CapabilityBound for Router<DirConnector>
impl CapabilityBound for Router<DirConnector>
fn debug_typename() -> &'static str
Source§impl<T: CapabilityBound> Debug for Router<T>
impl<T: CapabilityBound> Debug for Router<T>
Source§impl From<Router<Dictionary>> for Capability
impl From<Router<Dictionary>> for Capability
Source§fn from(f: Router<Dictionary>) -> Self
fn from(f: Router<Dictionary>) -> Self
Source§impl From<Router<DirConnector>> for Capability
impl From<Router<DirConnector>> for Capability
Source§fn from(f: Router<DirConnector>) -> Self
fn from(f: Router<DirConnector>) -> Self
Source§impl FromEnum<Capability> for Router<Connector>
impl FromEnum<Capability> for Router<Connector>
fn from_enum(e: &Capability) -> Option<&Self>
Source§impl FromEnum<Capability> for Router<Data>
impl FromEnum<Capability> for Router<Data>
fn from_enum(e: &Capability) -> Option<&Self>
Source§impl FromEnum<Capability> for Router<Dictionary>
impl FromEnum<Capability> for Router<Dictionary>
fn from_enum(e: &Capability) -> Option<&Self>
Source§impl FromEnum<Capability> for Router<DirConnector>
impl FromEnum<Capability> for Router<DirConnector>
fn from_enum(e: &Capability) -> Option<&Self>
Source§impl IntoFsandboxCapability for Router<Connector>
impl IntoFsandboxCapability for Router<Connector>
fn into_fsandbox_capability(self, token: WeakInstanceToken) -> Capability
Source§impl IntoFsandboxCapability for Router<Data>
impl IntoFsandboxCapability for Router<Data>
fn into_fsandbox_capability(self, token: WeakInstanceToken) -> Capability
Source§impl IntoFsandboxCapability for Router<Dictionary>
impl IntoFsandboxCapability for Router<Dictionary>
fn into_fsandbox_capability(self, token: WeakInstanceToken) -> Capability
Source§impl IntoFsandboxCapability for Router<DirConnector>
impl IntoFsandboxCapability for Router<DirConnector>
fn into_fsandbox_capability(self, token: WeakInstanceToken) -> Capability
Source§impl RemotableCapability for Router<Connector>
impl RemotableCapability for Router<Connector>
Source§fn try_into_directory_entry(
self,
scope: ExecutionScope,
token: WeakInstanceToken,
) -> Result<Arc<dyn DirectoryEntry>, ConversionError>
fn try_into_directory_entry( self, scope: ExecutionScope, token: WeakInstanceToken, ) -> Result<Arc<dyn DirectoryEntry>, ConversionError>
self to a DirectoryEntry which can be served in a VFS. If routing
needs to be performed, token should be the WeakInstanceToken used for the route. Read moreSource§impl RemotableCapability for Router<Data>
impl RemotableCapability for Router<Data>
Source§fn try_into_directory_entry(
self,
scope: ExecutionScope,
token: WeakInstanceToken,
) -> Result<Arc<dyn DirectoryEntry>, ConversionError>
fn try_into_directory_entry( self, scope: ExecutionScope, token: WeakInstanceToken, ) -> Result<Arc<dyn DirectoryEntry>, ConversionError>
self to a DirectoryEntry which can be served in a VFS. If routing
needs to be performed, token should be the WeakInstanceToken used for the route. Read moreSource§impl RemotableCapability for Router<Dictionary>
impl RemotableCapability for Router<Dictionary>
Source§fn try_into_directory_entry(
self,
scope: ExecutionScope,
token: WeakInstanceToken,
) -> Result<Arc<dyn DirectoryEntry>, ConversionError>
fn try_into_directory_entry( self, scope: ExecutionScope, token: WeakInstanceToken, ) -> Result<Arc<dyn DirectoryEntry>, ConversionError>
self to a DirectoryEntry which can be served in a VFS. If routing
needs to be performed, token should be the WeakInstanceToken used for the route. Read moreSource§impl RemotableCapability for Router<DirConnector>
impl RemotableCapability for Router<DirConnector>
Source§fn try_into_directory_entry(
self,
scope: ExecutionScope,
token: WeakInstanceToken,
) -> Result<Arc<dyn DirectoryEntry>, ConversionError>
fn try_into_directory_entry( self, scope: ExecutionScope, token: WeakInstanceToken, ) -> Result<Arc<dyn DirectoryEntry>, ConversionError>
self to a DirectoryEntry which can be served in a VFS. If routing
needs to be performed, token should be the WeakInstanceToken used for the route. Read moreSource§impl<T: CapabilityBound> Routable<T> for Router<T>
impl<T: CapabilityBound> Routable<T> for Router<T>
fn route<'life0, 'async_trait>(
&'life0 self,
request: RouteRequest,
target: WeakInstanceToken,
) -> Pin<Box<dyn Future<Output = Result<Option<T>, RouterError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Source§fn route_debug<'life0, 'async_trait>(
&'life0 self,
request: RouteRequest,
target: WeakInstanceToken,
) -> Pin<Box<dyn Future<Output = Result<CapabilitySource, RouterError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn route_debug<'life0, 'async_trait>(
&'life0 self,
request: RouteRequest,
target: WeakInstanceToken,
) -> Pin<Box<dyn Future<Output = Result<CapabilitySource, RouterError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
route, but returns a
fidl_fuchsia_internal::CapabilitySource persisted into bytes.Source§impl TryFrom<Capability> for Router<Dictionary>
impl TryFrom<Capability> for Router<Dictionary>
Auto Trait Implementations§
impl<T> Freeze for Router<T>
impl<T> !RefUnwindSafe for Router<T>
impl<T> Send for Router<T>
impl<T> Sync for Router<T>
impl<T> Unpin for Router<T>
impl<T> UnsafeUnpin for Router<T>
impl<T> !UnwindSafe for Router<T>
Blanket Implementations§
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T, D> Encode<Ambiguous1, D> for Twhere
D: ResourceDialect,
impl<T, D> Encode<Ambiguous1, D> for Twhere
D: ResourceDialect,
Source§impl<T, D> Encode<Ambiguous2, D> for Twhere
D: ResourceDialect,
impl<T, D> Encode<Ambiguous2, D> for Twhere
D: ResourceDialect,
§impl<F, N> FidlIntoNative<Box<N>> for Fwhere
F: FidlIntoNative<N>,
impl<F, N> FidlIntoNative<Box<N>> for Fwhere
F: FidlIntoNative<N>,
fn fidl_into_native(self) -> Box<N>
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 more