pub struct ServiceOffer<S> { /* private fields */ }Expand description
A builder for creating [Offer]-compatible values for crate::NodeBuilder::add_offer that
serves a fidl service.
The methods on this that start with add_ are helpers that will both register a service handler
with a [ServiceFs] and register the instance name in the structure. If you’re handling adding
your service handlers to the outgoing directory yourself, you can just use the non-add_
methods to register them.
If no calls to add any instances are made, then when this is transformed into a service offer it will be as if a single default instance with the default name was added.
Implementations§
Source§impl<S> ServiceOffer<S>
impl<S> ServiceOffer<S>
Sourcepub fn new() -> Selfwhere
S: ServiceMarker,
pub fn new() -> Selfwhere
S: ServiceMarker,
Builds an offer for a zircon transport service based on the ServiceMarker for S.
If the compiler can’t deduce the type of S (which may be the case if you’re not using the
add_ methods to add to a [ServiceFs] at the same time), you can use Self::new_marker
to make it explicit.
Sourcepub fn new_next() -> Selfwhere
S: DiscoverableService,
pub fn new_next() -> Selfwhere
S: DiscoverableService,
Builds an offer for a service based on the fidl_next::DiscoverableService for S.
If the compiler can’t deduce the type of S (which may be the case if you’re not using the
add_ methods to add to a [ServiceFs] at the same time), you can use
Self::new_marker_next to make it explicit.
Sourcepub fn new_marker(_marker: S) -> Selfwhere
S: ServiceMarker,
pub fn new_marker(_marker: S) -> Selfwhere
S: ServiceMarker,
Builds an offer for a zircon transport service based on the given ServiceMarker.
This is mostly useful if the compiler can’t derive the type of S on its own.
Sourcepub fn new_marker_next(_marker: S) -> Selfwhere
S: DiscoverableService,
pub fn new_marker_next(_marker: S) -> Selfwhere
S: DiscoverableService,
Builds an offer for a service based on the fidl_next::DiscoverableService.
This is mostly useful if the compiler can’t derive the type of S on its own.
Sourcepub fn add_default_named<O: ServiceObjTrait, F, SR>(
self,
fs: &mut ServiceFs<O>,
name: impl Into<String>,
f: F,
) -> Selfwhere
F: Fn(SR) -> O::Output + Clone,
SR: ServiceRequest<Service = S>,
FidlServiceMember<F, SR, O::Output>: Into<O>,
pub fn add_default_named<O: ServiceObjTrait, F, SR>(
self,
fs: &mut ServiceFs<O>,
name: impl Into<String>,
f: F,
) -> Selfwhere
F: Fn(SR) -> O::Output + Clone,
SR: ServiceRequest<Service = S>,
FidlServiceMember<F, SR, O::Output>: Into<O>,
Adds the given service instance to this offer and to the [ServiceFs] passed in, using the
generator function f. The type of the service will be derived from the result of the
generator function and it will be added with the name name which will be mapped to the
default instance name to child components (DEFAULT_SERVICE_INSTANCE).
Sourcepub fn add_default_named_next<H, O>(
self,
fs: &mut ServiceFs<O>,
name: impl Into<String>,
handler: H,
) -> Selfwhere
O: ServiceObjTrait,
S: DiscoverableService + DispatchServiceHandler<H, Channel> + 'static,
H: Send + Sync + 'static,
pub fn add_default_named_next<H, O>(
self,
fs: &mut ServiceFs<O>,
name: impl Into<String>,
handler: H,
) -> Selfwhere
O: ServiceObjTrait,
S: DiscoverableService + DispatchServiceHandler<H, Channel> + 'static,
H: Send + Sync + 'static,
Adds the given service instance to this offer and to the [ServiceFs] passed in, using the
generator function f. The type of the service will be derived from the result of the
generator function and it will be added with the name name which will be mapped to the
default instance name to child components (DEFAULT_SERVICE_INSTANCE).
Sourcepub fn add_named<O: ServiceObjTrait, F, SR>(
self,
fs: &mut ServiceFs<O>,
name: impl Into<String>,
f: F,
) -> Selfwhere
F: Fn(SR) -> O::Output + Clone,
SR: ServiceRequest<Service = S>,
FidlServiceMember<F, SR, O::Output>: Into<O>,
pub fn add_named<O: ServiceObjTrait, F, SR>(
self,
fs: &mut ServiceFs<O>,
name: impl Into<String>,
f: F,
) -> Selfwhere
F: Fn(SR) -> O::Output + Clone,
SR: ServiceRequest<Service = S>,
FidlServiceMember<F, SR, O::Output>: Into<O>,
Adds the given service instance to this offer and to the [ServiceFs] passed in, using the
generator function f. The type of the service will be derived from the result of the
generator function and it will be added with the name name.
Sourcepub fn add_named_next<H, O>(
self,
fs: &mut ServiceFs<O>,
name: impl Into<String>,
handler: H,
) -> Selfwhere
O: ServiceObjTrait,
S: DiscoverableService + DispatchServiceHandler<H, Channel> + 'static,
H: Send + Sync + 'static,
pub fn add_named_next<H, O>(
self,
fs: &mut ServiceFs<O>,
name: impl Into<String>,
handler: H,
) -> Selfwhere
O: ServiceObjTrait,
S: DiscoverableService + DispatchServiceHandler<H, Channel> + 'static,
H: Send + Sync + 'static,
Adds the given service instance to this offer and to the [ServiceFs] passed in, using the
generator function f. The type of the service will be derived from the result of the
generator function and it will be added with the name name.
Sourcepub fn named_default_instance(self, name: impl Into<String>) -> Self
pub fn named_default_instance(self, name: impl Into<String>) -> Self
Adds the named instance as the default instance of this service offer (as specified
by DEFAULT_SERVICE_INSTANCE). If you are only offering a single instance that is
already called default, you do not need to call this.
Sourcepub fn named_instance(self, name: impl Into<String>) -> Self
pub fn named_instance(self, name: impl Into<String>) -> Self
Adds the named instance to the offer without mapping it to the default instance name. You can use this to add additional instances offered in your outgoing directory.
Sourcepub fn build_zircon_offer(self) -> Offerwhere
S: ServiceMarker,
pub fn build_zircon_offer(self) -> Offerwhere
S: ServiceMarker,
Finalize the construction of the [Offer] object for use with
super::NodeBuilder::add_offer when the service is a zircon transport
service.
Sourcepub fn build_zircon_offer_next(self) -> Offerwhere
S: HasServiceRequest<Channel>,
pub fn build_zircon_offer_next(self) -> Offerwhere
S: HasServiceRequest<Channel>,
Finalize the construction of the [Offer] object for use with
super::NodeBuilder::add_offer when the service is a zircon transport
service with the new wire bindings.
Sourcepub fn build_driver_offer(self) -> Offerwhere
S: HasServiceRequest<DriverChannel>,
pub fn build_driver_offer(self) -> Offerwhere
S: HasServiceRequest<DriverChannel>,
Finalize the construction of the [Offer] object for use with
super::NodeBuilder::add_offer when the service is a driver
transport service.
Trait Implementations§
Source§impl<S: DiscoverableService> Default for ServiceOffer<S>
impl<S: DiscoverableService> Default for ServiceOffer<S>
Auto Trait Implementations§
impl<S> Freeze for ServiceOffer<S>
impl<S> RefUnwindSafe for ServiceOffer<S>where
S: RefUnwindSafe,
impl<S> Send for ServiceOffer<S>where
S: Send,
impl<S> Sync for ServiceOffer<S>where
S: Sync,
impl<S> Unpin for ServiceOffer<S>where
S: Unpin,
impl<S> UnwindSafe for ServiceOffer<S>where
S: UnwindSafe,
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, 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,
Source§impl<T> InstanceFromServiceTransport<T> for T
impl<T> InstanceFromServiceTransport<T> for T
Source§fn from_service_transport(handle: T) -> T
fn from_service_transport(handle: T) -> T
T to Self§impl<T> IntoAny for T
impl<T> IntoAny for T
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