这一节看一下实例标识符
实例标识符,顾名思义,是从类到对象的创建过程,即一个服务对象的创建成实例的过程,服务端和客户端都会分别创建自己的实例。
命名空间为ara:: com
class InstanceIdentifier{
public:
explicit InstanceIdentifier(const ara::core:string_view value);
const ara::core:string_view toString()const;
bool operator==(const InstanceIdentifier&other)const;
bool operator<(const InstanceIdentifier&other)const;
InstanceIdentifier&operator=(const InstanceIdentifier&other);
};
实例标识符接口ara::com::InstanceIdentifier提供了一个接受字符串的 value
这个字符串就是实例的用户命名。
namespace ara{
namespace com{
namespace runtime{
ara::com::InstanceIdentifierContainer ara::com::runtime::ResolveInstanceIDs
(ara::core::InstanceSpecifier modelName);
}
}
}
为什么此API返回InstanceIdentifierContainer? 说明ara::com::InstanceIdentifier是一个集合。
此功能称为多重绑定技术,即一个实例可以绑定多个InstanceID。
在骨架/服务器端使用多绑定是一种常见的用例,但是它只允许不同的客户端在联系服务器时使用其首选绑定。
这样做的目的是容错性,它可以用于支持一些故障转移方法(如果绑定A不起作用,则返回绑定B)
ResolveInstanceIDs 可能取的值为:
- 空列表:这种情况集成程序无法为抽象标识符提供映射;
- 带有一个元素的列表:这是最常见情况,他会映射到一个具体技术绑定的一个具体实例id;
- 包含多个元素的列表:映射到可能具有多个技术绑定的多个技术实例;
ResolveInstanceIDs()的中间件实现流程是从绑定在流程中的服务实例清单中查找ara::core::InstanceSpecifier的实例标识符