答 协议功能 是一项由 作者: 频道 这个语言中 FIDL 协议 ,了解所有最新动态。
library fuchsia.examples;
const MAX_STRING_LENGTH uint64 = 32;
@discoverable
protocol Echo {
EchoString(struct {
value string:MAX_STRING_LENGTH;
}) -> (struct {
response string:MAX_STRING_LENGTH;
});
SendString(struct {
value string:MAX_STRING_LENGTH;
});
-> OnString(struct {
response string:MAX_STRING_LENGTH;
});
};
使用 传出目录 从另一个 组件的 命名空间 ,了解所有最新动态。
提供协议功能
要提供协议功能,组件必须声明该功能,并
从 self
路由。该组件用于托管
其
传出目录
,了解所有最新动态。
如需定义该 capability,请为其添加 capabilities
声明:
{
capabilities: [
{
protocol: "fuchsia.example.ExampleProtocol",
},
],
}
这定义了一个由此组件托管的功能,其传出目录路径
为 /svc/fuchsia.example.ExampleProtocol
。您还可以自定义路径:
{
capabilities: [
{
protocol: "fuchsia.example.ExampleProtocol",
path: "/my_svc/fuchsia.example.MyExampleProtocol",
},
],
}
路由协议功能
如需详细了解该框架如何路由组件功能, 请参阅功能路由。
曝光
公开协议功能可让组件的父级访问 功能:
{
expose: [
{
protocol: "fuchsia.example.ExampleProtocol",
from: "self",
},
],
}
成为协作者
提供协议功能可让子组件访问该功能 功能:
{
offer: [
{
protocol: "fuchsia.example.ExampleProtocol",
from: "self",
to: [ "#child-a", "#child_b" ],
},
],
}
使用协议功能
要使用某个协议功能,该组件必须请求该功能, 在其 命名空间 ,了解所有最新动态。
如需请求该功能,请为其添加 use
声明:
{
use: [
{
protocol: "fuchsia.example.ExampleProtocol",
},
],
}
这会填充组件命名空间中已知路径下的协议
/svc/fuchsia.example.ExampleProtocol
。您还可以自定义路径:
{
use: [
{
protocol: "fuchsia.example.ExampleProtocol",
path: "/my_svc/fuchsia.example.MyExampleProtocol",
},
],
}
有关待处理请求的详细信息,请参阅 开放协议的生命周期
使用可选的协议功能
请参阅连接组件:使用可选功能。
框架协议
框架协议是指组件框架提供的协议。
任何组件都可以通过将 framework
设为来源来 use
这些功能
没有来自其父级的配套 offer
。
Fuchsia 支持以下框架协议:
fuchsia.component.Realm
:允许组件管理和绑定到 子项。作用域限定为组件的领域。fuchsia.component.Binder
:允许组件启动 另一个组件。
{
use: [
{
protocol: "fuchsia.component.Realm",
from: "framework",
},
],
}