Struct cml::Offer

source ·
pub struct Offer {
Show 18 fields pub service: Option<OneOrMany<Name>>, pub protocol: Option<OneOrMany<Name>>, pub directory: Option<OneOrMany<Name>>, pub runner: Option<OneOrMany<Name>>, pub resolver: Option<OneOrMany<Name>>, pub storage: Option<OneOrMany<Name>>, pub dictionary: Option<OneOrMany<Name>>, pub config: Option<OneOrMany<Name>>, pub from: OneOrMany<OfferFromRef>, pub to: OneOrMany<OfferToRef>, pub as: Option<Name>, pub dependency: Option<DependencyType>, pub rights: Option<Rights>, pub subdir: Option<RelativePath>, pub event_stream: Option<OneOrMany<Name>>, pub scope: Option<OneOrMany<EventScope>>, pub availability: Option<Availability>, pub source_availability: Option<SourceAvailability>,
}
Expand description

Example:

offer: [
    {
        protocol: "fuchsia.logger.LogSink",
        from: "#logger",
        to: [ "#fshost", "#pkg_cache" ],
        dependency: "weak",
    },
    {
        protocol: [
            "fuchsia.ui.app.ViewProvider",
            "fuchsia.fonts.Provider",
        ],
        from: "#session",
        to: [ "#ui_shell" ],
        dependency: "strong",
    },
    {
        directory: "blobfs",
        from: "self",
        to: [ "#pkg_cache" ],
    },
    {
        directory: "fshost-config",
        from: "parent",
        to: [ "#fshost" ],
        as: "config",
    },
    {
        storage: "cache",
        from: "parent",
        to: [ "#logger" ],
    },
    {
        runner: "web",
        from: "parent",
        to: [ "#user-shell" ],
    },
    {
        resolver: "full-resolver",
        from: "parent",
        to: [ "#user-shell" ],
    },
    {
        event_stream: "stopped",
        from: "framework",
        to: [ "#logger" ],
    },
],

Fields§

§service: Option<OneOrMany<Name>>

When routing a service, the name of a [service capability][doc-service].

§protocol: Option<OneOrMany<Name>>

When routing a protocol, the name of a [protocol capability][doc-protocol].

§directory: Option<OneOrMany<Name>>

When routing a directory, the name of a [directory capability][doc-directory].

§runner: Option<OneOrMany<Name>>

When routing a runner, the name of a [runner capability][doc-runners].

§resolver: Option<OneOrMany<Name>>

When routing a resolver, the name of a [resolver capability][doc-resolvers].

§storage: Option<OneOrMany<Name>>

When routing a storage capability, the name of a [storage capability][doc-storage].

§dictionary: Option<OneOrMany<Name>>

When routing a dictionary, the name of a [dictionary capability][doc-dictionaries].

§config: Option<OneOrMany<Name>>

When routing a config, the name of a configuration capability.

§from: OneOrMany<OfferFromRef>

from: The source of the capability, one of:

  • parent: The component’s parent. This source can be used for all capability types.
  • self: This component. Requires a corresponding capability declaration.
  • framework: The Component Framework runtime.
  • #<child-name>: A reference to a child component instance. This source can only be used when offering protocol, directory, or runner capabilities.
  • void: The source is intentionally omitted. Only valid when availability is optional or transitional.
§to: OneOrMany<OfferToRef>

Capability target(s). One of:

  • #<target-name> or [#name1, …]: A reference to a child or collection, or an array of references.
  • all: Short-hand for an offer clause containing all child references.
§as: Option<Name>

An explicit name for the capability as it will be known by the target. If omitted, defaults to the original name. as cannot be used when an array of multiple names is provided.

§dependency: Option<DependencyType>

The type of dependency between the source and targets, one of:

  • strong: a strong dependency, which is used to determine shutdown ordering. Component manager is guaranteed to stop the target before the source. This is the default.
  • weak: a weak dependency, which is ignored during shutdown. When component manager stops the parent realm, the source may stop before the clients. Clients of weak dependencies must be able to handle these dependencies becoming unavailable.
§rights: Option<Rights>

(directory only) the maximum [directory rights][doc-directory-rights] to apply to the offered directory capability.

§subdir: Option<RelativePath>

(directory only) the relative path of a subdirectory within the source directory capability to route.

§event_stream: Option<OneOrMany<Name>>

(event_stream only) the name(s) of the event streams being offered.

§scope: Option<OneOrMany<EventScope>>

(event_stream only) When defined the event stream will contain events about only the components defined in the scope.

§availability: Option<Availability>

availability (optional): The expectations around this capability’s availability. Affects build-time and runtime route validation. One of:

  • required (default): a required dependency, the source must exist and provide it. Use this when the target of this offer requires this capability to function properly.
  • optional: an optional dependency. Use this when the target of the offer can function with or without this capability. The target must not have a required dependency on the capability. The ultimate source of this offer must be void or an actual component.
  • same_as_target: the availability expectations of this capability will match the target’s. If the target requires the capability, then this field is set to required. If the target has an optional dependency on the capability, then the field is set to optional.
  • transitional: like optional, but will tolerate a missing source. Use this only to avoid validation errors during transitional periods of multi-step code changes.

For more information, see the [availability][/docs/concepts/components/v2/capabilities/availability.md] documentation.

§source_availability: Option<SourceAvailability>

Whether or not the source of this offer must exist. One of:

  • required (default): the source (from) must be defined in this manifest.
  • unknown: the source of this offer will be rewritten to void if its source (from) is not defined in this manifest after includes are processed.

Implementations§

source§

impl Offer

source

pub fn empty(from: OneOrMany<OfferFromRef>, to: OneOrMany<OfferToRef>) -> Offer

Creates a new empty offer. This offer just has the from and to fields set, so to make it useful it needs at least the capability name set in the necesssary attribute.

Trait Implementations§

source§

impl AsClause for Offer

source§

fn as(&self) -> Option<&Name>

source§

impl CapabilityClause for Offer

source§

fn service(&self) -> Option<OneOrMany<&Name>>

source§

fn protocol(&self) -> Option<OneOrMany<&Name>>

source§

fn directory(&self) -> Option<OneOrMany<&Name>>

source§

fn storage(&self) -> Option<OneOrMany<&Name>>

source§

fn runner(&self) -> Option<OneOrMany<&Name>>

source§

fn resolver(&self) -> Option<OneOrMany<&Name>>

source§

fn event_stream(&self) -> Option<OneOrMany<&Name>>

source§

fn dictionary(&self) -> Option<OneOrMany<&Name>>

source§

fn config(&self) -> Option<OneOrMany<&Name>>

source§

fn set_service(&mut self, o: Option<OneOrMany<Name>>)

source§

fn set_protocol(&mut self, o: Option<OneOrMany<Name>>)

source§

fn set_directory(&mut self, o: Option<OneOrMany<Name>>)

source§

fn set_storage(&mut self, o: Option<OneOrMany<Name>>)

source§

fn set_runner(&mut self, o: Option<OneOrMany<Name>>)

source§

fn set_resolver(&mut self, o: Option<OneOrMany<Name>>)

source§

fn set_event_stream(&mut self, o: Option<OneOrMany<Name>>)

source§

fn set_dictionary(&mut self, o: Option<OneOrMany<Name>>)

source§

fn set_config(&mut self, o: Option<OneOrMany<Name>>)

source§

fn availability(&self) -> Option<Availability>

source§

fn set_availability(&mut self, a: Option<Availability>)

source§

fn capability_type(&self) -> &'static str

Returns the name of the capability for display purposes. If service() returns Some, the capability name must be “service”, etc. Read more
source§

fn decl_type(&self) -> &'static str

source§

fn supported(&self) -> &[&'static str]

source§

fn are_many_names_allowed(&self) -> bool

Returns true if this capability type allows the ::Many variant of OneOrMany.
source§

fn names(&self) -> Vec<&Name>

Returns the names of the capabilities in this clause. If protocol() returns Some(OneOrMany::Many(vec!["a", "b"])), this returns![“a”, “b”].
source§

fn set_names(&mut self, names: Vec<Name>)

source§

impl Clone for Offer

source§

fn clone(&self) -> Offer

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for Offer

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<'de> Deserialize<'de> for Offer

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl FromClause for Offer

source§

fn from_(&self) -> OneOrMany<AnyRef<'_>>

source§

impl MarkdownReferenceDocGenerator for Offer

source§

fn get_reference_doc_markdown() -> String

Returns a Markdown representation of the reference docs for the struct that is derived from ReferenceDoc. The returned Markdown indents any # Markdown headers in individual field doc comments to ensure a well structured final Markdown document.
§

fn get_reference_doc_markdown_with_options( indent_headers_by: usize, indent_with_spaces: usize ) -> String

This method is called internally by the reference doc generator when recursing to generate documentation for field types.
source§

impl PartialEq for Offer

source§

fn eq(&self, other: &Offer) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl PathClause for Offer

source§

fn path(&self) -> Option<&Path>

source§

impl RightsClause for Offer

source§

impl Serialize for Offer

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl StructuralPartialEq for Offer

Auto Trait Implementations§

§

impl RefUnwindSafe for Offer

§

impl Send for Offer

§

impl Sync for Offer

§

impl Unpin for Offer

§

impl UnwindSafe for Offer

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> Encode<Ambiguous1> for T

source§

unsafe fn encode( self, _encoder: &mut Encoder<'_>, _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> Encode<Ambiguous2> for T

source§

unsafe fn encode( self, _encoder: &mut Encoder<'_>, _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> Instrument for T

source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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.

source§

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

source§

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

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

impl<T> Pointable for T

source§

const ALIGN: usize = _

The alignment of pointer.
§

type Init = T

The type for initializers.
source§

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

Initializes a with the given initializer. Read more
source§

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

Dereferences the given pointer. Read more
source§

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

Mutably dereferences the given pointer. Read more
source§

unsafe fn drop(ptr: usize)

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

impl<T> Same for T

§

type Output = T

Should always be Self
source§

impl<T> ToOwned for T
where T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

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

§

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

§

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.
source§

impl<T> WithSubscriber for T

source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,