ServiceOffer

Struct ServiceOffer 

Source
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>

Source

pub fn new() -> Self
where 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.

Source

pub fn new_next() -> Self

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.

Source

pub fn new_marker(_marker: S) -> Self
where 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.

Source

pub fn new_marker_next(_marker: S) -> Self

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.

Source

pub fn add_default_named<O: ServiceObjTrait, F, SR>( self, fs: &mut ServiceFs<O>, name: impl Into<String>, f: F, ) -> Self
where 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).

Source

pub fn add_default_named_next<H, O>( self, fs: &mut ServiceFs<O>, name: impl Into<String>, handler: H, ) -> Self
where 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).

Source

pub fn add_named<O: ServiceObjTrait, F, SR>( self, fs: &mut ServiceFs<O>, name: impl Into<String>, f: F, ) -> Self
where 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.

Source

pub fn add_named_next<H, O>( self, fs: &mut ServiceFs<O>, name: impl Into<String>, handler: H, ) -> Self
where 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.

Source

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.

Source

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.

Source

pub fn build_zircon_offer(self) -> Offer
where S: ServiceMarker,

Finalize the construction of the [Offer] object for use with super::NodeBuilder::add_offer when the service is a zircon transport service.

Source

pub fn build_zircon_offer_next(self) -> Offer

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.

Source

pub fn build_driver_offer(self) -> Offer

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>

Source§

fn default() -> Self

Returns the “default value” for a type. Read more

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> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T, D> Encode<Ambiguous1, D> for T
where D: ResourceDialect,

Source§

unsafe fn encode( self, _encoder: &mut Encoder<'_, D>, _offset: usize, _depth: Depth, ) -> Result<(), Error>

Encodes the object into the encoder’s buffers. Any handles stored in the object are swapped for Handle::INVALID. Read more
Source§

impl<T, D> Encode<Ambiguous2, D> for T
where D: ResourceDialect,

Source§

unsafe fn encode( self, _encoder: &mut Encoder<'_, D>, _offset: usize, _depth: Depth, ) -> Result<(), Error>

Encodes the object into the encoder’s buffers. Any handles stored in the object are swapped for Handle::INVALID. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> InstanceFromServiceTransport<T> for T

Source§

fn from_service_transport(handle: T) -> T

Converts the given service transport handle of type T to Self
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

§

impl<T> IntoAny for T
where T: 'static + Send + Sync,

§

fn into_any(self: Arc<T>) -> Arc<dyn Any + Send + Sync>

Cast the given object into a dyn std::any::Any.
Source§

impl<T> IntoEither for T

Source§

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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

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> Pointable for T

§

const ALIGN: usize

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

Source§

impl<E> RunsTransport<Mpsc> for E

Source§

impl<E> RunsTransport<Mpsc> for E
where E: RunsTransport<Mpsc>,