Struct cml::Capability
source · pub struct Capability {Show 22 fields
pub service: Option<OneOrMany<Name>>,
pub protocol: Option<OneOrMany<Name>>,
pub directory: Option<Name>,
pub storage: Option<Name>,
pub runner: Option<Name>,
pub resolver: Option<Name>,
pub event_stream: Option<OneOrMany<Name>>,
pub dictionary: Option<Name>,
pub config: Option<Name>,
pub path: Option<Path>,
pub rights: Option<Rights>,
pub from: Option<CapabilityFromRef>,
pub extends: Option<DictionaryRef>,
pub backing_dir: Option<Name>,
pub subdir: Option<RelativePath>,
pub storage_id: Option<StorageId>,
pub config_type: Option<ConfigType>,
pub config_max_size: Option<NonZeroU32>,
pub config_max_count: Option<NonZeroU32>,
pub config_element_type: Option<ConfigNestedValueType>,
pub value: Option<Value>,
pub delivery: Option<DeliveryType>,
}
Fields§
§service: Option<OneOrMany<Name>>
The name for this service capability. Specifying path
is valid
only when this value is a string.
protocol: Option<OneOrMany<Name>>
The name for this protocol capability. Specifying path
is valid
only when this value is a string.
directory: Option<Name>
The name for this directory capability.
storage: Option<Name>
The name for this storage capability.
runner: Option<Name>
The name for this runner capability.
resolver: Option<Name>
The name for this resolver capability.
event_stream: Option<OneOrMany<Name>>
The name for this event_stream capability.
dictionary: Option<Name>
The name for this dictionary capability.
config: Option<Name>
The name for this configuration capability.
path: Option<Path>
The path within the [outgoing directory][glossary.outgoing directory] of the component’s program to source the capability.
For protocol
and service
, defaults to /svc/${protocol}
, otherwise required.
For protocol
, the target of the path MUST be a channel, which tends to speak
the protocol matching the name of this capability.
For service
, directory
, the target of the path MUST be a directory.
For runner
, the target of the path MUST be a channel and MUST speak
the protocol fuchsia.component.runner.ComponentRunner
.
For resolver
, the target of the path MUST be a channel and MUST speak
the protocol fuchsia.component.resolution.Resolver
.
rights: Option<Rights>
(directory
only) The maximum [directory rights][doc-directory-rights] that may be set
when using this directory.
from: Option<CapabilityFromRef>
(storage
only) The source component of an existing directory capability backing this
storage capability, one of:
parent
: The component’s parent.self
: This component.#<child-name>
: A reference to a child component instance.
extends: Option<DictionaryRef>
(dictionary
only, optional) The contents to initialize a dictionary with. One of:
parent/<relative_path>
: A path to a dictionary offered byparent
.#<child-name>/<relative_path>
: A path to a dictionary exposed by#<child-name>
.self/<relative_path>
: A path to a dictionary defined by this component.<relative_path>
may be either a name, identifying a dictionary capability), or a path with multiple parts, identifying a nested dictionary.
backing_dir: Option<Name>
(storage
only) The name of the directory capability backing the storage. The
capability must be available from the component referenced in from
.
subdir: Option<RelativePath>
(storage
only) A subdirectory within backing_dir
where per-component isolated storage
directories are created
storage_id: Option<StorageId>
(storage
only) The identifier used to isolated storage for a component, one of:
static_instance_id
: The instance ID in the component ID index is used as the key for a component’s storage. Components which are not listed in the component ID index will not be able to use this storage capability.static_instance_id_or_moniker
: If the component is listed in the component ID index, the instance ID is used as the key for a component’s storage. Otherwise, the component’s moniker from the storage capability is used.
config_type: Option<ConfigType>
(configuration
only) The type of configuration, one of:
bool
: Boolean type.uint8
: Unsigned 8 bit type.uint16
: Unsigned 16 bit type.uint32
: Unsigned 32 bit type.uint64
: Unsigned 64 bit type.int8
: Signed 8 bit type.int16
: Signed 16 bit type.int32
: Signed 32 bit type.int64
: Signed 64 bit type.string
: ASCII string type.vector
: Vector type. Seeelement
for the type of the element within the vector.
config_max_size: Option<NonZeroU32>
(configuration
only) Only supported if this configuration type
is ‘string’.
This is the max size of the string.
config_max_count: Option<NonZeroU32>
(configuration
only) Only supported if this configuration type
is ‘vector’.
This is the max number of elements in the vector.
config_element_type: Option<ConfigNestedValueType>
(configuration
only) Only supported if this configuration type
is ‘vector’.
This is the type of the elements in the configuration vector.
Example (simple type):
{ type: "uint8" }
Example (string type):
{
type: "string",
max_size: 100,
}
value: Option<Value>
(configuration
only) The value of the configuration.
delivery: Option<DeliveryType>
(protocol
only) Specifies when the framework will open the protocol
from this component’s outgoing directory when someone requests the
capability. Allowed values are:
eager
: (default) the framework will open the capability as soon as some consumer component requests it.on_readable
: the framework will open the capability when the server endpoint pipelined in a connection request becomes readable.
Trait Implementations§
source§impl CapabilityClause for Capability
impl CapabilityClause for Capability
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>)
source§fn capability_type(&self) -> &'static str
fn capability_type(&self) -> &'static str
service()
returns Some
, the capability name must be “service”, etc. Read morefn 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 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 Clone for Capability
impl Clone for Capability
source§fn clone(&self) -> Capability
fn clone(&self) -> Capability
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl Debug for Capability
impl Debug for Capability
source§impl Default for Capability
impl Default for Capability
source§fn default() -> Capability
fn default() -> Capability
source§impl<'de> Deserialize<'de> for Capability
impl<'de> Deserialize<'de> for Capability
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 Capability
impl MarkdownReferenceDocGenerator for Capability
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
source§impl PartialEq for Capability
impl PartialEq for Capability
source§fn eq(&self, other: &Capability) -> bool
fn eq(&self, other: &Capability) -> bool
self
and other
values to be equal, and is used
by ==
.