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 correspondingcapability
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 whenavailability
isoptional
ortransitional
.
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 anoffer
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 arequired
dependency on the capability. The ultimate source of this offer must bevoid
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 torequired
. If the target has an optional dependency on the capability, then the field is set tooptional
.transitional
: likeoptional
, 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 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 tovoid
if its source (from
) is not defined in this manifest after includes are processed.
Implementations§
Source§impl Offer
impl Offer
Sourcepub fn empty(from: OneOrMany<OfferFromRef>, to: OneOrMany<OfferToRef>) -> Offer
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 CapabilityClause for Offer
impl CapabilityClause for Offer
fn service(&self) -> Option<OneOrMany<&Name>>
fn protocol(&self) -> Option<OneOrMany<&Name>>
fn directory(&self) -> Option<OneOrMany<&Name>>
fn storage(&self) -> Option<OneOrMany<&Name>>
fn runner(&self) -> Option<OneOrMany<&Name>>
fn resolver(&self) -> Option<OneOrMany<&Name>>
fn event_stream(&self) -> Option<OneOrMany<&Name>>
fn dictionary(&self) -> Option<OneOrMany<&Name>>
fn config(&self) -> Option<OneOrMany<&Name>>
fn set_service(&mut self, o: Option<OneOrMany<Name>>)
fn set_protocol(&mut self, o: Option<OneOrMany<Name>>)
fn set_directory(&mut self, o: Option<OneOrMany<Name>>)
fn set_storage(&mut self, o: Option<OneOrMany<Name>>)
fn set_runner(&mut self, o: Option<OneOrMany<Name>>)
fn set_resolver(&mut self, o: Option<OneOrMany<Name>>)
fn set_event_stream(&mut self, o: Option<OneOrMany<Name>>)
fn set_dictionary(&mut self, o: Option<OneOrMany<Name>>)
fn set_config(&mut self, o: Option<OneOrMany<Name>>)
fn availability(&self) -> Option<Availability>
fn set_availability(&mut self, a: Option<Availability>)
fn decl_type(&self) -> &'static str
fn supported(&self) -> &[&'static str]
Source§fn are_many_names_allowed(&self) -> bool
fn are_many_names_allowed(&self) -> bool
Source§fn capability_type(&self) -> Result<&'static str, Error>
fn capability_type(&self) -> Result<&'static str, Error>
service()
returns Some
, the capability name must be “service”, etc. Read moreSource§fn names(&self) -> Vec<&Name>
fn names(&self) -> Vec<&Name>
protocol()
returns Some(OneOrMany::Many(vec!["a", "b"]))
, this returns![“a”, “b”].fn set_names(&mut self, names: Vec<Name>)
Source§impl<'de> Deserialize<'de> for Offer
impl<'de> Deserialize<'de> for Offer
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl MarkdownReferenceDocGenerator for Offer
impl MarkdownReferenceDocGenerator for Offer
Source§fn get_reference_doc_markdown() -> String
fn get_reference_doc_markdown() -> String
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
fn get_reference_doc_markdown_with_options( indent_headers_by: usize, indent_with_spaces: usize, ) -> String
impl StructuralPartialEq for Offer
Auto Trait Implementations§
impl Freeze for Offer
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> 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§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)