协议功能

协议功能 是一项由 作者: 频道 这个语言中 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",
        },
    ],
}

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 支持以下框架协议:

{
    use: [
        {
            protocol: "fuchsia.component.Realm",
            from: "framework",
        },
    ],
}