Interfaces
ara::com::InstanceIdentifier
通信管理提供的类,它包含实例信息以及服务类型信息,使每个服务区别于其他服务。
- Swsid:
- 符合标准:
- 非标原因:
- 种类:
- 符号:
| ara::com::InstanceIdentifier |
- 范围:
- 基类:
- 分类:
- 头文件:
| ara/core/instance_identifier.h |
- 模板参数:
- 注解:
ara::com::MethodCallProcessingMode
表示提供服务端(skeleton)的方法调用处理模式。
- Swsid:
- 符合标准:
- 非标原因:
- 种类:
- 符号:
| ara::com::MethodCallProcessingMode |
- 范围:
- 基本类型:
- 分类:
- 头文件:
- 注解:
| 枚举值 |
|
| kPoll |
用户主动触发处理方法调用 |
| kEvent |
多线程回调方式 |
| kEventSingleThread |
单线程回调方式 |
ara::com::SampleAllocateePtr
指向提供服务端(skeleton)已分配样本的指针类型。
- Swsid:
- 符合标准:
- 非标原因:
- 种类:
- 符号:
| ara::com::SampleAllocateePtr |
- 范围:
- 派生来源:
- 分类:
- 头文件:
- 注解:
ara::com::ServiceHandleContainer<Handle>
表示服务句柄列表的容器类型。
- Swsid:
- 符合标准:
- 非标原因:
- 种类:
- 符号:
| ara::com::ServiceHandleContainer<Handle> |
- 范围:
- 派生来源:
- 分类:
- 头文件:
- 注解:
ara::com::FindServiceHandle
struct FindServiceHandle{
internal::ServiceId service_id;
internal::InstanceId instance_id;
std::uint32_t uid;
bool operator==(const FindServiceHandle& other) const;
bool operator<(const FindServiceHandle& other) const;
FindServiceHandle& operator=(const FindServiceHandle& other);
}
- Swsid:
- 符合标准:
- 非标原因:
- 种类:
- 符号:
| ara::com::FindServiceHandle |
- 范围:
- 分类:
- 头文件:
- 注解:
ara::com::SubscriptionState
如果一个事件的订阅状态改变时,会调用该处理程序。
enum class SubscriptionState : uint8_t {
kSubscribed,
kNotSubscribed,
kSubscriptionPending
};
- Swsid:
- 符合标准:
- 非标原因:
- 种类:
- 符号:
| ara::com::SubscriptionState |
- 范围:
- 派生来源:
- 分类:
- 头文件:
- 注解:
ara::com::EventReceiveHandler
事件接收处理程序,从语义上讲是void(void)函数。
- Swsid:
- 符合标准:
- 非标原因:
- 种类:
- 符号:
| ara::com::EventReceiveHandler |
- 范围:
- 派生来源:
- 分类:
- 头文件:
- 注解:
ara::com::SamplePtr
指向数据样本的指针类型。
- Swsid:
- 符合标准:
- 非标原因:
- 种类:
- 符号:
- 范围:
- 基类:
- 分类:
- 头文件:
- 模板参数:
- 注解:
| template <typename T> |
| class SamplePtr |
| { |
| public: |
| using E2ECheckStatus = ara::com::e2e::ProfileCheckStatus; |
| constexpr SamplePtr() noexcept: dataPtr_(nullptr), e2eCheckStatus_(E2ECheckStatus::kOk) |
| {} |
| constexpr SamplePtr(std::nullptr_t) noexcept: SamplePtr() |
| {} |
| explicit SamplePtr(T* ptr, E2ECheckStatus e2eCheckState = E2ECheckStatus::kOk): |
| dataPtr_(ptr), e2eCheckStatus_(e2eCheckState) |
| {} |
| explicit SamplePtr(T* ptr, std::function<void(T* p)> Deleter, E2ECheckStatus e2eCheckState = E2ECheckStatus::kOk) |
| : dataPtr_(ptr, Deleter), e2eCheckStatus_(e2eCheckState) |
| {} |
| explicit constexpr SamplePtr(E2ECheckStatus e2eCheckState) noexcept |
| : dataPtr_(), e2eCheckStatus_(e2eCheckState) |
| {} |
| SamplePtr(SamplePtr<T>&& r) noexcept: dataPtr_(std::move(r.dataPtr_)), e2eCheckStatus_(std::move(r.e2eCheckStatus_)) |
| {} |
| SamplePtr(const SamplePtr<T>& r) = delete; |
| SamplePtr& operator=(SamplePtr<T>&& r) noexcept; |
| SamplePtr& operator=(const SamplePtr<T>& r) = delete; |
| SamplePtr& operator=(std::nullptr_t) noexcept; |
| T* operator->() const noexcept; |
| T& operator*() const noexcept; |
| explicit operator bool() const noexcept; |
| T* Get() const noexcept; |
| void Swap(SamplePtr& other) noexcept; |
| void Reset(std::nullptr_t); |
| E2ECheckStatus GetProfileCheckStatus() const noexcept; |
| private: |
| std::unique_ptr<T, std::function<void(T*)>> dataPtr_; |
| _E2ECheckStatus e2eCheckStatus_; |
| } |
ara::com::ComErrc
这个枚举类型定义了ara::com错误域ComErrorDomain下的错误码。
- Swsid:
- 符合标准:
- 非标原因:
- 种类:
- 符号:
- 范围:
- 基本类型:
- 分类:
- 头文件:
| ara/core/com_error_domain.h |
- 注解:
| 枚举值 |
|
| kServiceNotAvailable |
Service is not available |
| kMaxSamplesExceeded |
Application holds more SamplePtrs than commited in Subscribe() |
| kNetworkBindingFailure |
Local failure has been detected by the network binding |
| kGrantEnforcementError |
Request was refused by Grant enforcement layer |
| kPeerIsUnreachable |
TLS handshake fail |
| kFieldValueIsNotValid |
Field Value is not valid |
| kSetHandlerNotSet |
SetHandler has not been registered |
| kUnsetFailure |
Failure has been detected by unset operation |
| kSampleAllocationFailure |
Not Sufficient memory resources can be allocated |
| kIllegalUseOfAllocate |
The allocation was illegally done via custom allocator (i.e., not via shared memory allocation) |
| kServiceNotOffered |
Service not offered |
| kCommunicationLinkError |
Communication link is broken |
| kCommunicationStackError |
Communication Stack Error, e.g. network stack, network binding, or communication framework reports an error |
| kInstanceIDCouldNotBeResolved |
ResolveInstanceIDs() failed to resolve InstanceID from InstanceSpecifier, i.e. is not mapped correctly |
| kMaxSampleCountNotRealizable |
Provided maxSampleCount not realizable |
| kWrongMethodCallProcessingMode |
Wrong processing mode passed to constructor method call |
| kErroneousFileHandle |
The FileHandle returned from FindServce is corrupt service not available |
| kCouldNotExecute |
Command could not be executed in provided Execution Context |
| kInvalidInstanceIdentifierString |
Given InstanceIdentifier string is corrupted or non-compliant |
| kUnknownError |
Unknown Error |
| kBadParameters |
Bad Parameters |
ara::com::ComErrorDomain
表示ara::com错误域的定义。
其中ComException的定义如下:
class ComException : public ara::core::Exception
{
public:
explicit ComException(ara::core::ErrorCode err) noexcept: ara::core::Exception(err)
{}
};
- Swsid:
- 符合标准:
- 非标原因:
- 种类:
- 符号:
| ara::core::ComErrorDomain |
- 范围:
- 基类:
- 分类:
- 头文件:
- 模板参数:
- 注解:
| class ComErrorDomain final : public ara::core::ErrorDomain |
| { |
| constexpr static ara::core::ErrorDomain::IdType kId = 0x8000'0000'0000'1267; |
| public: |
| using Errc = ComErrc; |
| using Exception = ComException; |
| constexpr ComErrorDomain() noexcept: ara::core::ErrorDomain(kId) |
| {} |
| char const* Name() const noexcept override; |
| char const* Message(ara::core::ErrorDomain::CodeType errorCode) const noexcept override; |
| void ThrowAsException(ara::core::ErrorCode const& errorCode) const noexcept(false) override; |
| } |
| |
<ApApplicationErrorDomain.SN>Errc
这个枚举类型是根据上位机Application Errors相关配置生成的代码,
定义了错误域<ApApplicationErrorDomain.SN>下的错误码。
其中:
<ApApplicationErrorDomain.Namespaces>为用户配置的错误域命名空间;
<ApApplicationErrorDomain.SN>为用户配置的错误域名称;
<ApApplicationError.SN>为用户配置的错误码名称;
<ApApplicationError.errorCode>为用户配置的错误码值;
<name>为<ApApplicationErrorDomain.SN>转换为小写字母。
- Swsid:
- 符合标准:
- 非标原因:
- 种类:
- 符号:
| <ApApplicationErrorDomain.Namespaces>::<ApApplicationErrorDomain.SN>Errc |
- 范围:
| namespace <ApApplicationErrorDomain.Namespaces> |
- 基本类型:
- 分类:
- 头文件:
- 注解:
<ApApplicationErrorDomain.SN>ErrorDomain
这个错误域类型是根据上位机Application Errors相关配置生成的代码,被定义在生成的头文件error_domain_<name>.h中。
<ApApplicationErrorDomain.Namespaces>为用户配置的错误域命名空间;
<ApApplicationErrorDomain.SN>为用户配置的错误域名称;
<ApApplicationErrorDomain.Value>为用户配置的错误域ID;
<name>为<ApApplicationErrorDomain.SN>转换为小写字母。
<ApApplicationErrorDomain.SN>Exception的定义如下:
class <ApApplicationErrorDomain.SN>Exception : public ::ara::core::Exception
{
public:
explicit <ApApplicationErrorDomain.SN>Exception(ara::core::ErrorCode err) noexcept: ara::core::Exception(err)
{}
};
- Swsid:
- 符合标准:
- 非标原因:
- 种类:
- 符号:
| <ApApplicationErrorDomain.Namespaces>::<ApApplicationErrorDomain.SN>ErrorDomain |
- 范围:
| namespace <ApApplicationErrorDomain.Namespaces> |
- 基类:
- 分类:
- 头文件:
- 模板参数:
- 注解:
| class <ApApplicationErrorDomain.SN>ErrorDomain final : public ara::core::ErrorDomain |
| { |
| constexpr static ::ara::core::ErrorDomain::IdType kId = <ApApplicationErrorDomain.Value>; |
| public: |
| using Errc = <ApApplicationErrorDomain.SN>Errc; |
| using Exception = <ApApplicationErrorDomain.SN>Exception; |
| constexpr <ApApplicationErrorDomain.SN>ErrorDomain() noexcept: ara::core::ErrorDomain(kId) |
| {} |
| char const* Name() const noexcept override; |
| char const* Message(ara::core::ErrorDomain::CodeType errorCode) const noexcept override; |
| void ThrowAsException(::ara::core::ErrorCode const& errorCode) const noexcept(false) override; |
| }; |
| |
ara::com::e2e::Result
定义E2E检查结果。
- Swsid:
- 符合标准:
- 非标原因:
- 种类:
- 符号:
- 范围:
- 基类:
- 分类:
- 头文件:
- 模板参数:
- 注解:
| class Result |
| { |
| public: |
| using E2EState = ara::com::e2e::SMState; |
| using E2ECheckStatus = ara::com::e2e::ProfileCheckStatus; |
| private: |
| E2ECheckStatus checkStatus; |
| E2EState smState; |
| public: |
| Result() noexcept; |
| Result(E2EState state, E2ECheckStatus checkStatus) noexcept; |
| ~Result() noexcept = default; |
| Result& operator=(Result&&) noexcept = default; |
| Result& operator=(const Result&) = default; |
| Result(Result&&) noexcept = default; |
| Result(const Result&) = default; |
| E2EState GetSMState() const noexcept |
| { |
| return smState; |
| } |
| E2ECheckStatus GetCheckStatus() const noexcept |
| { |
| return checkStatus; |
| } |
| bool IsOK() const noexcept; |
| }; |
| |
ara::com::e2e::ProfileCheckStatus
定义E2E消息检查结果枚举值。
- Swsid:
- 符合标准:
- 非标原因:
- 种类:
- 符号:
| ara::com::e2e::ProfileCheckStatus |
- 范围:
- 基本类型:
- 分类:
- 头文件:
| ara/com/e2e/e2e_state_machine.h |
- 注解:
| 枚举值 |
|
| kOk |
The checks of the sample in thiscycle were successful(including counter check) |
| kRepeated |
sample has a repeated counter |
| kWrongSequence |
The checks of the sample in this cycle were successful,with the exception of counter jump,which changed more than the allowed delta |
| kError |
Error not related to counters occurred(wrong crc,wrong length,wrong Data ID) |
| kNotAvailable |
Not Available |
| kNoNewData |
No New Data |
| kCheckDisabled |
No E2E check status available.Return value of function GetProfileCheckStatus if EndToEndTransformationComSpecProps.disableEndToEndCheck is set to True |
ara::com::e2e::SMState
定义E2E状态机检查结果枚举值。
- Swsid:
- 符合标准:
- 非标原因:
- 种类:
- 符号:
- 范围:
- 基本类型:
- 分类:
- 头文件:
| ara/com/e2e/e2e_state_machine.h |
- 注解:
| 枚举值 |
|
| kValid |
Communication of the samples of this event functioning properly according to E2E checks,samples can be used |
| kNoData |
No data have been received from the publisher at all |
| kInit |
Not enough data where the E2E check yielded OK from the publisher is availabe since the initialization,samples cannot be used. |
| kInvalid |
Too few data where the E2E check yielded OK or to many data where the E2E check yielded ERROR were received within the E2E time window – communication of the sample of this event not functioning properly, samples cannot be used. |
| kStateMDisabled |
No E2E state machine available. Return value of function GetE2EStateMachineState if EndToEndTransformationComSpecProps.disableEndToEndStateMachine is set to TRUE |
ara::com::e2e::E2EErrc
定义E2E Error Domain的E2E错误码
- Swsid:
- 符合标准:
- 非标原因:
- 种类:
- 符号:
- 范围:
- 基本类型:
- 分类:
- 头文件:
| ara/com/e2e/e2e_error_domain.h |
- 注解:
| 枚举值 |
|
| kRepeated |
Data has a repeated counter |
| kWrongSequence |
The checks of the Data in this cycle were successful, with the exception of counter jump,which changed more than the allowed delta. |
| kError |
Error not related to counters occurred (e.g. wrong crc, wrong length, wrong Data ID) or the return of the check function was not OK. |
| kNotAvailable |
No value has been received yet (e.g. during initialization). This is used as the initialization value for the buffer, it is not returned by any E2E profile |
| kNoNewData |
No new data is available |
<Name>Proxy::HandleType
通信管理提供HandleType的定义。它为特定的服务实例键入句柄(handle),并包含创建<Name>Proxy所需的信息。其中HandleType::GetInstanceId()方法返回创建<Name>Proxy所引用的实例标志符信息。
- Swsid:
- 符合标准:
- 非标原因:
- 种类:
- 符号:
- 范围:
- 基类:
- 分类:
- 头文件:
- 模板参数:
- 注解:
| <name>是ServiceInterface.shortName转换为小写字母;<Name>是ServiceInterface.shortName首字母转换为大写形式。 |
| |
| |
ara::core::Result<void> <Name>Skeleton::OfferService()
通信管理在<Name>Skeleton类中向应用程序提供OfferService方法,以对外提供服务。
若服务接口存在field,当调用 OfferService()时,field的值无效则不会提供服务,返回值的错误类型为ComErrc::kFieldValueIsNotValid
若提供服务的field中包含定义的hasSetter=true并且没有SetHandler则服务也不会被提供,返回值的错误类型为ComErrc::kSetHandlerNotSet
示例:
// Initialize Fields values before Offering Service.
ara::core::Result<void> res1 = my_skeleton->myField.Update(myField_value)
// Offering Service.
ara::core::Result<void> res2 = my_skeleton->OfferService();
- 模板参数*
- 参数:
| [in] N/A |
| [out] N/A |
| [in,out] N/A |
- 返回:
- 注释:
| <name>是ServiceInterface.shortName转换为小写字母;<Name>是ServiceInterface.shortName首字母转换为大写形式。 |
- 异常:
| 绑定服务失败会抛出异常字符串"Given service interface does not fit to the binding adapter!“;S2S配置错误抛出异常字符串"S2S(Signal To Service) Error: Register IPdu Failed: wrong configuration, overlapping configuration" |
- 错误码偏离项:
- Swsid:
- 符合标准:
- 非标原因:
- 种类:
- 可见:
- 线程安全:
- Fireandforget:
- 错误:
- 头文件:
- 异常安全:
- 分类:
<Name>Skeleton::StopOfferService()
通信管理在<Name>Skeleton类中向应用程序提供StopOfferService方法,用来停止提供服务。
- 模板参数:
- 参数:
| [in] N/A |
| [out] N/A |
| [in,out] N/A |
- 返回:
- 注释:
| <name>是ServiceInterface.shortName转换为小写字母;<Name>是ServiceInterface.shortName首字母转换为大写形式。 |
- 异常:
- 错误码偏离项:
- Swsid:
- 符合标准:
- 非标原因:
- 种类:
- 可见:
- 线程安全:
- Fireandforget:
- 错误:
- 头文件:
- 异常安全:
- 分类:
ServiceSkeleton(ara::com::InstanceIdentifier instanceID, ara::com::MethodCallProcessingMode = ara::com::MethodCallProcessingMode::kEvent)
通信管理需要提供一个构造函数构建ServiceSkeleton类。
示例:
my_skeleton = new myInterfaceImp(ara::core::InstanceIdentifier(ara::com::internal::INSTANCE_ID_UNKNOWN, ara::com::internal::MiddlewareType::VSOMEIP_BINDING), ara::com::MethodCallProcessingMode::kPoll);
- 模板参数:
- 参数:
| [in] ara::core::InstanceIdentifier 查找特定服务的标识。 |
| [in] mode 服务端处理method请求消息的方式,包含kEvent、kPoll和kEventSingleThread。 |
| [out] N/A |
| [in,out] N/A |
- 返回:
- 注释:
| <name>是ServiceInterface.shortName转换为小写字母;<Name>是ServiceInterface.shortName首字母转换为大写形式。 |
- 异常:
- 错误码偏离项:
- Swsid:
- 符合标准:
- 非标原因:
- 种类:
- 可见:
- 线程安全:
- Fireandforget:
- 错误:
- 头文件:
- 异常安全:
- 分类:
ServiceSkeleton(ara::core::InstanceSpecifier instance_spec, ara::com::MethodCallProcessingMode = ara::com::MethodCallProcessingMode::kEvent)
通信管理需要提供一个构造函数构建ServiceSkeleton类。
示例:
my_skeleton = new myInterfaceImp(ara::core::InstanceSpecifier("myServer/NeuSAR/myServer/myPPort"), ara::com::MethodCallProcessingMode::kPoll);
- 模板参数:
- 参数:
| [in] ara::core::InstanceSpecifier 说明符 |
| [in] mode 服务端处理method请求消息的方式,包含kEvent、kPoll和kEventSingleThread。 |
| [out] N/A |
| [in,out] N/A |
- 返回:
- 注释:
| <name>是ServiceInterface.shortName转换为小写字母;<Name>是ServiceInterface.shortName首字母转换为大写形式。 |
- 异常:
- 错误码偏离项:
- Swsid:
- 符合标准:
- 非标原因:
- 种类:
- 可见:
- 线程安全:
- Fireandforget:
- 错误:
- 头文件:
- 异常安全:
- 分类:
ServiceSkeleton(ara::com::InstanceIdentifierContainer instances, ara::com::MethodCallProcessingMode = ara::com::MethodCallProcessingMode::kEvent)
通信管理需要提供一个构造函数构建ServiceSkeleton类。
示例:
my_skeleton = new myInterfaceImp(instances, ara::com::MethodCallProcessingMode::kPoll);
- 模板参数:
- 参数:
| [in] ara::com::InstanceIdentifierContainer 服务实例的容器(ara::core::Vector < ara::com::InstanceIdentifier > ) |
| [in] mode 服务端处理method请求消息的方式,包含kEvent、kPoll和kEventSingleThread。 |
| [out] N/A |
| [in,out] N/A |
- 返回:
- 注释:
| <name>是ServiceInterface.shortName转换为小写字母;<Name>是ServiceInterface.shortName首字母转换为大写形式。 |
- 异常:
- 错误码偏离项:
- Swsid:
- 符合标准:
- 非标原因:
- 种类:
- 可见:
- 线程安全:
- Fireandforget:
- 错误:
- 头文件:
- 异常安全:
- 分类:
ara::core::Result<void> Event::Send(const SampleType &data)
应用程序负责准备发送的数据,通信管理创建发送数据的副本,并将数据发送到所有的订阅者。
该版本的Send方法被用于数据可能会在后续被应用程序进一步处理的场景。如果发送失败函数会返回一个ara::com::ComErrorDomain中
的ara::core::ErrorCode类型来提示错误信息:
ComErrc::kServiceNotOffered: 服务不提供。
ComErrc::kCommunicationLinkError: 通信连接被损坏。
ComErrc::kCommunicationStackError: 可能为通信栈错误,网络栈错误,网络绑定错误,或通信框架错误导致。
- 模板参数:
- 参数:
| [in] data 待发送的数据引用,其中SampleType表示待发送数据的数据类型。 |
| [out] N/A |
| [in,out] N/A |
- 返回:
- 注释:
| <name>是ServiceInterface.shortName转换为小写字母;Event为服务接口类下的特定事件类。在dds绑定的情况下,由于采用rtps通信,rtps基于UDP协议,所以event序列化数据的长度应该小于60k。 |
| 不支持SHM/S2S。 |
- 异常:
- 错误码偏离项:
| kCommunicationLinkError未实现; kCommunicationStackError未实现。 |
- Swsid:
- 符合标准:
- 非标原因:
- 种类:
- 可见:
- 线程安全:
- Fireandforget:
- 错误:
- 头文件:
- 异常安全:
- 分类:
ara::core::Result<void> Event::Send(ara::com::SampleAllocateePtr<SampleType>data)
通信管理负责准备发送的数据(通过调用Event::Allocate()接口申请内存),数据被发送给所有订阅者。数据发送后不能再被应用程序访问。
在每次调用此版本的Send前,都需要重新调用Event::Allocate()接口来为数据申请内存。
如果发送失败函数会返回一个ara::com::ComErrorDomain中的ara::core::ErrorCode类型来提示错误信息:
ComErrc::kServiceNotOffered: 服务不提供。
ComErrc::kCommunicationLinkError: 通信连接被损坏。
ComErrc::kCommunicationStackError: 可能为通信栈错误,网络栈错误,网络绑定错误,或通信框架错误导致。
示例:
// allocate sample for myEvent
auto myEvent_sample =my_skeleton->myEvent.Allocate().ValueOrThrow();
// write data
*myEvent_sample = myEnumForEvent::kTwo;
// send sample,send后,myEvent_sample不再可用
auto res = my_skeleton->myEvent.Send(std::move(myEvent_sample));
- 模板参数:
- 参数:
| [in] data 待发送的数据指针. |
| [out] N/A |
| [in,out] N/A |
- 返回:
- 注释:
| <name>是ServiceInterface.shortName转换为小写字母; Event为服务接口类下的特定事件类。 |
- 异常:
- 错误码偏离项:
| kCommunicationLinkError未实现; kCommunicationStackError未实现。 |
- Swsid:
- 符合标准:
- 非标原因:
- 种类:
- 可见:
- 线程安全:
- Fireandforget:
- 错误:
- 头文件:
- 异常安全:
- 分类:
ara::core::Result<ara::com::SampleAllocateePtr <SampleType> > Event::Allocate()
通过Allocate方法为event申请分配内存,配合Event::Send(ara::com::SampleAllocateePtr <SampleType> data)方法使用。
在调用这个Send方法后,本次申请的内存即交由ara::com管理;再次Send前请重新调用Allocate。
如果函数执行失败会返回两种错误类型结果:
ComErrc::kSampleAllocationFailure: 共享内存分配失败(取回或分配一个样本实例失败)。
ComErrc::kIllegalUseOfAllocate: 分配已通过自定义分配过(不是通过共享内存分配)
当服务端提供多个实例时,不能调用该API接口,需要调用Event::Send(const SampleType &data)方法发送Event。
- 模板参数:
- 参数:
| [in] N/A |
| [out] N/A |
| [in,out] N/A |
- 返回:
| ara::com::SampleAllocateePtr <SampleType> 返回申请的数据指针. |
- 注释:
| <name>是ServiceInterface.shortName转换为小写字母; Event为服务接口类下的特定事件类。 |
- 异常:
| 对象分配失败会抛异常。抛出异常信息kIllegalUseOfAllocate。 |
- 错误码偏离项:
| kIllegalUseOfAllocate未实现。 |
- Swsid:
- 符合标准:
- 非标原因:
- 种类:
- 可见:
- 线程安全:
- Fireandforget:
- 错误:
- 头文件:
- 异常安全:
- 分类:
<Name>Skeleton::Method1(TypeInputParameter1 input1, TypeInputParameter2 input2,...)
对于所提供的每一种服务方法,一个纯虚函数方法被定义在<Name>Skeleton类中。方法名和参数从提供的服务方法中获取(上位机配置服务接口中的method,服务方法输入参数应成为<Name>Skeleton类中定义的相应方法的输入参数。在<Name>Skeleton类内提供一种Output类型(struct类型),将输出参数和可选的返回值组合在一起。必须创建提供方法实现的相应子类,以实现相应<Name>Skeleton中的方法。
- 模板参数:
- 参数:
| [in] input1 输入参数1。 |
| [in] input2 输入参数2。 |
| [out] N/A |
| [in,out] N/A |
- 返回:
| ara::core::Future <Method1Output> 返回包含输出结果的Future对象。 |
- 注释:
| <name>是ServiceInterface.shortName转换为小写字母; <Name>是ServiceInterface.shortName首字母转换为大写形式。 |
| 不支持SHM/S2S。 |
- 异常:
- 错误码偏离项:
- Swsid:
- 符合标准:
- 非标原因:
- 种类:
- 可见:
- 线程安全:
| 对于kEvent模式是线程安全的,其它两种不是线程安全的。 |
- Fireandforget:
- 错误:
- 头文件:
- 异常安全:
- 分类:
<Name>Skeleton::FF_Method1(TypeInputParameter1 input1, TypeInputParameter2 input2,...)
对于所提供的每一种服务方法,一个纯虚函数方法被定义在<Name>Skeleton类中。方法名和参数从提供的服务方法中获取(上位机配置服务接口中的method),服务方法输入参数应成为<Name>Skeleton类中定义的相应方法的输入参数。在<Name>Skeleton类内提供一种Output类型(struct类型),将输出参数和可选的返回值组合在一起。必须创建提供方法实现的相应子类,以实现相应<Name>Skeleton中的方法。
- 模板参数:
- 参数:
| [in] input1 输入参数1。 |
| [in] input2 输入参数2。 |
| [out] N/A |
| [in,out] N/A |
- 返回:
- 注释:
| <name>是ServiceInterface.shortName转换为小写字母; <Name>是ServiceInterface.shortName首字母转换为大写形式。 |
| 不支持SHM/S2S。 |
- 异常:
| 如果鉴权不通过,由用户决定是否抛异常 。抛出异常信息kGrantEnforcementError。 |
- 错误码偏离项:
- Swsid:
- 符合标准:
- 非标原因:
- 种类:
- 可见:
- 线程安全:
| 对于kEvent模式是线程安全的,其它两种不是线程安全的。 |
- Fireandforget:
- 错误:
- 头文件:
- 异常安全:
- 分类:
ara::core::Future<bool> <Name>Skeleton::ProcessNextMethodCall()
在<Name>Skeleton内部,提供ProcessNextMethodCall方法。如果处理模式被设置为轮询,则此方法允许提供服务方法的实现在特定时间点触发下一个服务使用者方法调用的执行。参见4.1.2 Service skeleton creation节,仅当mode参数为kPoll时,才可调用ProcessNextMethodCall()接口进行请求消息的处理。
- 模板参数:
- 参数:
| [in] N/A |
| [out] N/A |
| [in,out] N/A |
- 返回:
| ara::core::Future<bool> 返回包含了一个bool参数作为返回值的ara::core::Future对象,返回true意味着至少有一个待处理的调用,相反返回false。 |
- 注释:
| <name>是ServiceInterface.shortName转换为小写字母; <Name>是ServiceInterface.shortName首字母转换为大写形式。 |
| 不支持SHM/S2S。 |
- 异常:
| 只能在轮询模式下使用。在非轮询模式下,它将抛出异常信息"Error: ProcessNextMethodCall() called in non-polling mode!"。 |
- 错误码偏离项:
- Swsid:
- 符合标准:
- 非标原因:
- 种类:
- 可见:
- 线程安全:
- Fireandforget:
- 错误:
- 头文件:
- 异常安全:
- 分类:
ara::core::Result<void> Field::RegisterGetHandler( std::function<ara::core::Future<FieldType>()> getHandler)
在相应的<Name>Skeleton内部的field类需要提供RegisterGetHandler方法来注册GetHandler函数,在通信管理接收到get请求时调用。
为能够及时处理请求服务端的get请求消息,需在调用OfferService接口前调用RegisterGetHandler。
- 模板参数:
- 参数:
| [in] getHandler 回调函数 |
| [out] N/A |
| [in,out] N/A |
- 返回:
- 注释:
| <name>是ServiceInterface.shortName转换为小写字母; <Name>是ServiceInterface.shortName首字母转换为大写形式。Field为服务接口类下的特定字段类。在dds绑定的情况下,由于采用rtps通信,rtps基于UDP协议,所以序列化数据的长度应该小于60k。 |
| 不支持SHM/S2S。 |
- 异常:
| 在handler没有默认初始值的情况下调用Getter。会抛出异常信息"Default Get() handler called without initial value!"。 |
- 错误码偏离项:
- Swsid:
- 符合标准:
- 非标原因:
- 种类:
- 可见:
- 线程安全:
- Fireandforget:
- 错误:
- 头文件:
- 异常安全:
- 分类:
ara::core::Result<void> Field::RegisterSetHandler(std::function<ara::core::Future<FieldType>(const FieldType& value)> setHandler)
在相应的<Name>Skeleton内部的field类需要提供RegisterSetHandler方法来注册SetHandler函数,在通信管理接收到set请求时调用。
为能够及时处理请求服务端的set请求消息,需在调用OfferService接口前调用RegisterSetHandler。
- 模板参数:
- 参数:
| [in] setHandler 回调函数 |
| [out] N/A |
| [in,out] N/A |
- 返回:
- 注释:
| <name>是ServiceInterface.shortName转换为小写字母; <Name>是ServiceInterface.shortName首字母转换为大写形式。Field为服务接口类下的特定字段类。在dds绑定的情况下,由于采用rtps通信,rtps基于UDP协议,所以序列化数据的长度应该小于60k。 |
| 不支持SHM/S2S。 |
- 异常:
- 错误码偏离项:
- Swsid:
- 符合标准:
- 非标原因:
- 种类:
- 可见:
- 线程安全:
- Fireandforget:
- 错误:
- 头文件:
- 异常安全:
- 分类:
ara::core::Result<void> Field::Update(const FieldType &value)
在相应的<Name>Skeleton类的特定Field类内部,应提供一个Update函数,用于向订阅者发送初始化的更新数据。
如果函数执行成功无返回值,如果失败返回一个ara::com::ComErrorDomain中的ara::core::ErrorCode类型数据:
ComErrc::kServiceNotOffered: 服务不提供。
ComErrc::kCommunicationLinkError: 通信连接被损坏。
ComErrc::kCommunicationStackError: 可能为通信栈错误,网络栈错误,网络绑定错误,或通信框架错误导致。
- 模板参数:
- 参数:
| [in] value 更新的field值 |
| [out] N/A |
| [in,out] N/A |
- 返回:
- 注释:
| <name>是ServiceInterface.shortName转换为小写字母; <Name>是ServiceInterface.shortName首字母转换为大写形式。Field为服务接口类下的特定字段类。在dds绑定的情况下,由于采用rtps通信,rtps基于UDP协议,所以序列化数据的长度应该小于60k。 |
- 异常:
- 错误码偏离项:
| kCommunicationLinkError目前未实现;kCommunicationStackError目前未实现。 |
- Swsid:
- 符合标准:
- 非标原因:
- 种类:
- 可见:
- 线程安全:
- Fireandforget:
- 错误:
- 头文件:
- 异常安全:
- 分类:
static ara::core::Result < ara::com::ServiceHandleContainer <<ProxyClassName>:: HandleType> > FindService(ara::com::InstanceIdentifier instance )
通信管理提供FindService方法(<Name>Proxy类的一部分)以允许应用程序查找服务。 此版本是一个“一次性”查找请求,返回当前可利用的服务实例容器(如果当前不存在匹配的服务实例,则容器可能为空)。由于在调用此接口查找服务时服务可能还不可用,可进行循环调用,直至查找到服务。建议调用StartFindService接口来查找服务。如果函数执行成功会返回一个包含所有匹配服务实例句柄的容器,如果失败会返回以下三种错误结果:
kNetworkBindingFailure: 网络绑定检测到本地错误。
kGrantEnforcementError: 请求被强制拒绝。
kPeerIsUnreachable: 传输层握手失败。
- 模板参数:
- 参数:
| [in] ara::com::InstanceIdentifier 要查找的某服务的特定实例标识。 |
| [out] N/A |
| [in,out] N/A |
- 返回:
| ara::core::Result < ara::com::ServiceHandleContainer <<ProxyClassName>:: HandleType> > |
- 注释:
| <ProxyClassName>即<Name>Proxy。<name>是ServiceInterface.shortName转换为小写字母;<Name>是ServiceInterface.shortName首字母转换为大写形式。 根据[SWS_CM_00122]描述,在FindService接口中对ara::com::InstanceIdentifier验证失败时应该调用ara::core::Abort接口。 |
- 异常:
| S2S配置错误会抛出异常信息"S2S(Signal To Service) Error: Register IPdu Failed: wrong configuration, overlapping configuration"。 |
- 错误码偏离项:
| kGrantEnforcementError目前未实现;kPeerIsUnreachable目前未实现。 |
- Swsid:
- 符合标准:
- 非标原因:
- 种类:
- 可见:
- 线程安全:
- Fireandforget:
- 错误:
- 头文件:
- 异常安全:
- 分类:
static ara::core::Result < ara::com::ServiceHandleContainer <<ProxyClassName>:: HandleType> > FindService(ara::com::InstanceSpecifier instance )
通信管理提供FindService方法(<Name>Proxy类的一部分)以允许应用程序查找服务。 此版本是一个“一次性”查找请求,返回当前可利用的服务实例容器(如果当前不存在匹配的服务实例,则容器可能为空)。由于在调用此接口查找服务时服务可能还不可用,可进行循环调用,直至查找到服务。建议调用StartFindService接口来查找服务。如果函数执行成功会返回一个包含所有匹配服务实例句柄的容器,如果失败会返回以下三种错误结果:
kNetworkBindingFailure: 网络绑定检测到本地错误。
kGrantEnforcementError: 请求被强制拒绝。
kPeerIsUnreachable: 传输层握手失败。
- 模板参数:
- 参数:
| [in] ara::com::InstanceSpecifier 按照上位机路径查找某特定实例ID。 |
| [out] N/A |
| [in,out] N/A |
- 返回:
| ara::core::Result < ara::com::ServiceHandleContainer <<ProxyClassName>:: HandleType> > |
- 注释:
| <ProxyClassName>即<Name>Proxy。<name>是ServiceInterface.shortName转换为小写字母;<Name>是ServiceInterface.shortName首字母转换为大写形式。 根据[SWS_CM_00622]描述,在FindService接口中对ara::core::InstanceSpecifier验证失败时应该调用ara::core::Abort接口。 |
- 异常:
| S2S配置错误会抛出异常信息"S2S(Signal To Service) Error: Register IPdu Failed: wrong configuration, overlapping configuration"。 |
- 错误码偏离项:
| kGrantEnforcementError目前未实现;kPeerIsUnreachable目前未实现。 |
- Swsid:
- 符合标准:
- 非标原因:
- 种类:
- 可见:
- 线程安全:
- Fireandforget:
- 错误:
- 头文件:
- 异常安全:
- 分类:
static ara::core::Result < ara::com::FindServiceHandle > StartFindService(ara::com::FindServiceHandler<<ProxyClassName> ::HandleType> handler, const ara::com::InstanceIdentifier instance)
带有处理程序注册的<Name>Proxy类的StartFindService方法将FindServiceHandler作为输入参数,与相应的<Name>Proxy类相匹配(在检测到匹配的服务时调用该类),并可选地使用一个实例ID来限定服务所需的实例。如果没有指定实例,函数的第二个参数必须传入ara::com::InstanceIdentifier(ara::com::internal::INSTANCE_ID_UNKNOWN, ara::com::internal::MiddlewareType::VSOMEIP_BINDING)。返回结果为此查找请求的FindServiceHandle,这是停止服务可用性监视和给定处理程序的相关触发所需的。
- 模板参数:
- 参数:
| [in] handler 待注册的handler。 |
| [in] ara::com::InstanceIdentifier 要查找的某个服务的特定实例标识。 |
| [out] N/A |
| [in,out] N/A |
- 返回:
| ara::com::FindServiceHandle 返回此查找请求的FindServiceHandle,被用于停止可用性监视和给定处理程序的相关触发(StopFindService)。 |
- 注释:
| <name>是ServiceInterface.shortName转换为小写字母;<Name>是ServiceInterface.shortName首字母转换为大写形式。根据[SWS_CM_00123]描述,在StartFindService接口中对ara::com::InstanceIdentifier验证失败时应该调用ara::core::Abort接口。 |
- 异常:
| S2S配置错误会抛出异常信息"S2S(Signal To Service) Error: Register IPdu Failed: wrong configuration, overlapping configuration"。 |
- 错误码偏离项:
| kGrantEnforcementError目前未实现;kPeerIsUnreachable目前未实现。 |
- Swsid:
- 符合标准:
- 非标原因:
- 种类:
- 可见:
- 线程安全:
- Fireandforget:
- 错误:
- 头文件:
- 异常安全:
- 分类:
static ara::core::Result < ara::com::FindServiceHandle > StartFindService(ara::com::FindServiceHandler<<ProxyClassName>::Handle> handler, ara::com::InstanceSpecifier instance)
带有处理程序注册的<Name>Proxy类的StartFindService方法将FindServiceHandler作为输入参数,与相应的<Name>Proxy类相匹配(在检测到匹配的服务时调用该类),并可选地使用一个实例ID来限定服务所需的实例。如果没有指定实例,函数的第二个参数必须传入ara::core::InstanceSpecifier("myClient/NeuSAR/myClient/myRPort")。返回结果为此查找请求的FindServiceHandle,这是停止服务可用性监视和给定处理程序的相关触发所需的。
- 模板参数:
- 参数:
| [in] handler 待注册的handler。 |
| [in] ara::com::InstanceSpecifier 按照上位机路径查找某特定实例ID。 |
| [out] N/A |
| [in,out] N/A |
- 返回:
| ara::com::FindServiceHandle 返回此查找请求的FindServiceHandle,被用于停止可用性监视和给定处理程序的相关触发(StopFindService)。 |
- 注释:
| <name>是ServiceInterface.shortName转换为小写字母;<Name>是ServiceInterface.shortName首字母转换为大写形式。根据[SWS_CM_00123]描述,在StartFindService接口中对ara::com::InstanceIdentifier验证失败时应该调用ara::core::Abort接口。 |
- 异常:
| S2S配置错误会抛出异常信息"S2S(Signal To Service) Error: Register IPdu Failed: wrong configuration, overlapping configuration"。 |
- 错误码偏离项:
| kGrantEnforcementError目前未实现;kPeerIsUnreachable目前未实现。 |
- Swsid:
- 符合标准:
- 非标原因:
- 种类:
- 可见:
- 线程安全:
- Fireandforget:
- 错误:
- 头文件:
- 异常安全:
- 分类:
<Name>Proxy::StopFindService(ara::com::FindServiceHandle handle)
停止查找服务。
- 模板参数:
- 参数:
| [in] handle StartFindService中返回的handle |
| [out] N/A |
| [in,out] N/A |
- 返回:
- 注释:
| <name>是ServiceInterface.shortName转换为小写字母;<Name>是ServiceInterface.shortName首字母转换为大写形式。 |
- 异常:
- 错误码偏离项:
- Swsid:
- 符合标准:
- 非标原因:
- 种类:
- 可见:
- 线程安全:
- Fireandforget:
- 错误:
- 头文件:
- 异常安全:
- 分类:
explicit <Name>Proxy::<Name>Proxy(const HandleType &handle)
通信管理为每一个<Name>Proxy代理类提供一个构造函数。
- 模板参数:
- 参数:
| [in] handle StartFindService中返回的handle |
| [out] N/A |
| [in,out] N/A |
- 返回:
- 注释:
| <name>是ServiceInterface.shortName转换为小写字母;<Name>是ServiceInterface.shortName首字母转换为大写形式。 |
- 异常:
- 错误码偏离项:
- Swsid:
- 符合标准:
- 非标原因:
- 种类:
- 可见:
- 线程安全:
- Fireandforget:
- 错误:
- 头文件:
- 异常安全:
- 分类:
HandleType <Name>Proxy::GetHandle()
通信管理为每个特定的<Name>Proxy类提供一个GetHandle方法来获取创建<Name>Proxy实例的句柄。
- 模板参数:
- 参数:
| [in] N/A |
| [out] N/A |
| [in,out] N/A |
- 返回:
| HandleType 返回创建<Name>Proxy实例的句柄 |
- 注释:
| <name>是ServiceInterface.shortName转换为小写字母;<Name>是ServiceInterface.shortName首字母转换为大写形式。 |
- 异常:
- 错误码偏离项:
- Swsid:
- 符合标准:
- 非标原因:
- 种类:
- 可见:
- 线程安全:
- Fireandforget:
- 错误:
- 头文件:
- 异常安全:
- 分类:
ara::core::Result<void> Event::Subscribe(size_t maxSampleCount)
在相应的<Name>Proxy类内部的event 类需要提供Subscribe方法,用于开始订阅相应的事件,输入参数为缓存大小。
如果订阅成功没有返回值,如果失败返回ComErrc::kMaxSampleCountNotRealizable的类型结果,导致失败的原因如下:
该Event已经被订阅过; 当前提供的maxSampleCount值与订阅的maxSampleCount值不相符.
- 模板参数:
- 参数:
| [in] maxSampleCount 订阅的最大样本个数 |
| [out] N/A |
| [in,out] N/A |
- 返回:
| ara::core::Result<void> 如果Event已经被订阅或者提供的最大样本个数与订阅的个数不相符则会返回ComErrc::kMaxSampleCountNotRealizeable类型的错误结果。 |
- 注释:
| <name>是ServiceInterface.shortName转换为小写字母;<Name>是ServiceInterface.shortName首字母转换为大写形式。Event为服务接口类下的特定事件类。 |
- 异常:
| 订阅的Event个数小于1会抛出异常信息"Subscribe cache size must be at least 1"。 |
- 错误码偏离项:
- Swsid:
- 符合标准:
- 非标原因:
- 种类:
- 可见:
- 线程安全:
- Fireandforget:
- 错误:
- 头文件:
- 异常安全:
- 分类:
Event::Unsubscribe()
在相应的<Name>Proxy类内部的event 类需要提供Unsubscribe方法,用于取消订阅事件。
- 模板参数:
- 参数:
| [in] N/A |
| [out] N/A |
| [in,out] N/A |
- 返回:
- 注释:
| <name>是ServiceInterface.shortName转换为小写字母;<Name>是ServiceInterface.shortName首字母转换为大写形式。Event为服务接口类下的特定事件类。 |
- 异常:
- 错误码偏离项:
- Swsid:
- 符合标准:
- 非标原因:
- 种类:
- 可见:
- 线程安全:
- Fireandforget:
- 错误:
- 头文件:
- 异常安全:
- 分类:
ara::com::SubcriptionState Event::GetSubscriptionState()const
获取事件的订阅状态。
- 模板参数:
- 参数:
| [in] N/A |
| [out] N/A |
| [in,out] N/A |
- 返回:
- 注释:
| <name>是ServiceInterface.shortName转换为小写字母;Event为服务接口类下的特定事件类。 |
- 异常:
- 错误码偏离项:
- Swsid:
- 符合标准:
- 非标原因:
- 种类:
- 可见:
- 线程安全:
- Fireandforget:
- 错误:
- 头文件:
- 异常安全:
- 分类:
ara::core::Result<void> Event::SetSubscriptionStateChangeHandler(ara::com::SubscriptionStateChangeHandler handler)
设置订阅状态改变回调函数。 如果提供的handler无法执行,函数会执行失败会返回ComErrc::kCouldNotExcute类型错误。如果函数执行成功无返回值
- 模板参数:
- 参数:
| [in] handler 回调函数 |
| [out] N/A |
| [in,out] N/A |
- 返回:
- 注释:
| <name>是ServiceInterface.shortName转换为小写字母;Event为服务接口类下的特定事件类。 |
- 异常:
- 错误码偏离项:
- Swsid:
- 符合标准:
- 非标原因:
- 种类:
- 可见:
- 线程安全:
- Fireandforget:
- 错误:
- 头文件:
- 异常安全:
- 分类:
Event::UnsetSubscriptionStateChangeHandler()
取消订阅状态改变回调函数。
- 模板参数:
- 参数:
| [in] N/A |
| [out] N/A |
| [in,out] N/A |
- 返回:
- 注释:
| <name>是ServiceInterface.shortName转换为小写字母;Event为服务接口类下的特定事件类。 |
- 异常:
- 错误码偏离项:
- Swsid:
- 符合标准:
- 非标原因:
- 种类:
- 可见:
- 线程安全:
- Fireandforget:
- 错误:
- 头文件:
- 异常安全:
- 分类:
ara::core::Result< std::size_t >Event::GetNewSamples(NewSamplesCallback&& f, size_t maxNumberOfSamples = std::numeric_limits<size_t>::max())
通信管理应提供一个GetNewSamples方法作为事件类的一部分,用接收到的数据样本更新事件缓存。
作为输入参数,GetNewSamples方法期望一个可调用的f,
并允许指定maxNumberOfSamples来限制在这个调用中处理的接收数据样本的数量。
回调函数类型NewSamplesCallback定义如下:
using NewSamplesCallback = std::function<void(SamplePtr<const T>)>;
其中,T为Event数据样本的类型,SamplePtr为数据样本的指针。
当前的应用请求的样本个数超过最大可获取的样本个数时,函数会返回一个包含ara::core::ErrorCode类型的ara::com::ComErrorDomain的错误值
- 模板参数:
- 参数:
| [in] f 回调函数,用来处理每个新数据样本。 |
| [in] maxNumberOfSamples 通过本次GetNewSamples()调用可获取的最大样本数 |
| [out] N/A |
| [in,out] N/A |
- 返回:
| ara::core::Result< std::size_t > |
- 注释:
| <name>是ServiceInterface.shortName转换为小写字母. |
- 异常:
- 错误码偏离项:
- Swsid:
- 符合标准:
- 非标原因:
- 种类:
- 可见:
- 线程安全:
- Fireandforget:
- 错误:
- 头文件:
- 异常安全:
- 分类:
std::size_t Event::GetFreeSampleCount()
获取内部缓存中的空闲数据插槽的数量。函数的返回值表示 在本地的缓存中没有被用到或空闲的事件样本槽的个数
- 模板参数:
- 参数:
| [in] N/A |
| [out] N/A |
| [in,out] N/A |
- 返回:
- 注释:
| <name>是ServiceInterface.shortName转换为小写字母. |
- 异常:
- 错误码偏离项:
- Swsid:
- 符合标准:
- 非标原因:
- 种类:
- 可见:
- 线程安全:
- Fireandforget:
- 错误:
- 头文件:
- 异常安全:
- 分类:
ara::core::Result<void> Event::SetReceiveHandler(ara::com::EventReceiveHandler handler)
为了使应用程序在属于特定<Name>Proxy类的特定Event类中接收到事件时被触发,应提供一个SetReceiveHandler方法来指定在事件到达时调用的函数,输入参数为函数指针。 如果函数执行成功没有返回值;如果失败返回Com::kSetHandlerNotSet类型结果。
- 模板参数:
- 参数:
| [in] handler 无参回调函数,并通过调用GetNewSamples接口来处理接收到的数据。 |
| [out] N/A |
| [in,out] N/A |
- 返回:
- 注释:
| <name>是ServiceInterface.shortName转换为小写字母;<Name>是ServiceInterface.shortName首字母转换为大写形式。Event为服务接口类下的特定事件类。 |
- 异常:
| 消息循环被开启,无法设置Handler会抛出异常信息"Error: VSOMEIP_ENV_MESSAGE_DISPATCHER ENABLE,Can not set handler!"。 |
- 错误码偏离项:
- Swsid:
- 符合标准:
- 非标原因:
- 种类:
- 可见:
- 线程安全:
- Fireandforget:
- 错误:
- 头文件:
- 异常安全:
- 分类:
ara::core::Result<void> Event::UnsetReceiveHandler()
为了在属于特定<Name>Proxy类的特定Event类中接收到事件时禁用应用程序的触发,应提供一个UnsetReceiveHandler方法来禁用触发应用程序。
如果函数执行成功没有返回值;如果函数执行失败返回ComErrc::kUnsetFailure类型结果。
- 模板参数:
- 参数:
| [in] handler 无参回调函数,并通过调用GetNewSamples接口来处理接收到的数据。 |
| [out] N/A |
| [in,out] N/A |
- 返回:
- 注释:
| <name>是ServiceInterface.shortName转换为小写字母;<Name>是ServiceInterface.shortName首字母转换为大写形式。Event为服务接口类下的特定事件类。 |
- 异常:
- 错误码偏离项:
- Swsid:
- 符合标准:
- 非标原因:
- 种类:
- 可见:
- 线程安全:
- Fireandforget:
- 错误:
- 头文件:
- 异常安全:
- 分类:
ara::core::Future<Output> Method::operator()(TypeInputParameter1 input1,TypeInputParameter2 input2,...)
在<Name>Proxy类内部的特定Method类中提供操作符(),以允许调用服务端提供的方法。
- 模板参数:
- 参数:
| [in] input1 输入参数1 |
| [in] input2 输入参数2 |
| [out] N/A |
| [in,out] N/A |
- 返回:
| ara::core::Future<Output> 返回包含输出结果的Future对象。 |
- 注释:
| <name>是ServiceInterface.shortName转换为小写字母;<Name>是ServiceInterface.shortName首字母转换为大写形式。Method为服务接口类下的特定方法类。在dds绑定的情况下,由于采用rtps通信,rtps基于UDP协议,所以序列化数据的长度应该小于60k。 |
| 不支持SHM/S2S。 |
- 异常:
- 错误码偏离项:
- Swsid:
- 符合标准:
- 非标原因:
- 种类:
- 可见:
- 线程安全:
- Fireandforget:
- 错误:
- 头文件:
- 异常安全:
- 分类:
FireAndForgetMethod::operator()(TypeInputParameter1 input1, TypeInputParameter2 input2,...)
在<Name>Proxy类内部的特定Method类中提供操作符(),以允许调用服务端提供的方法。
- 模板参数:
- 参数:
| [in] input1 输入参数1 |
| [in] input2 输入参数2 |
| [out] N/A |
| [in,out] N/A |
- 返回:
- 注释:
| <name>是ServiceInterface.shortName转换为小写字母;<Name>是ServiceInterface.shortName首字母转换为大写形式。FireAndForgetMethod为服务接口中的特定方法类. |
| 不支持SHM/S2S。 |
- 异常:
- 错误码偏离项:
- Swsid:
- 符合标准:
- 非标原因:
- 种类:
- 可见:
- 线程安全:
- Fireandforget:
- 错误:
- 头文件:
- 异常安全:
- 分类:
ara::core::Future<FieldType> Field::Get()
通信管理提供Get方法请求服务提供者field的当前值。
- 模板参数:
- 参数:
| [in] N/A |
| [out] N/A |
| [in,out] N/A |
- 返回:
| ara::core::Future<FieldType> 返回包含field数据的Future对象。 |
- 注释:
| <name>是ServiceInterface.shortName转换为小写字母;Field为服务接口类下的特定字段类。在dds绑定的情况下,由于采用rtps通信,rtps基于UDP协议,所以序列化数据的长度应该小于60k。 |
| 不支持SHM/S2S。 |
- 异常:
- 错误码偏离项:
- Swsid:
- 符合标准:
- 非标原因:
- 种类:
- 可见:
- 线程安全:
- Fireandforget:
- 错误:
- 头文件:
- 异常安全:
- 分类:
ara::core::Future<FieldType> Field::Set(const FieldType& value)
通信管理提供Set方法设置服务提供者field的新值。
- 模板参数:
- 参数:
| [in] value 设置field的值 |
| [out] N/A |
| [in,out] N/A |
- 返回:
| ara::core::Future<FieldType> 返回包含field数据的Future对象。 |
- 注释:
| &<name>是ServiceInterface.shortName转换为小写字母;Field为服务接口类下的特定字段类。在dds绑定的情况下,由于采用rtps通信,rtps基于UDP协议,所以序列化数据的长度应该小于60k。 |
| 不支持SHM/S2S。 |
- 异常:
- 错误码偏离项:
- Swsid:
- 符合标准:
- 非标原因:
- 种类:
- 可见:
- 线程安全:
- Fireandforget:
- 错误:
- 头文件:
- 异常安全:
- 分类:
ara::core::Result<ara ::core::InstanceIdentifierContainer> ResolveInstanceIDs(ara::core::InstanceSpecifier modelName)
方法实例标识翻译。通信管理提供ResolveInstanceID方法将 InstanceSpecifier转换为Instance Identifiers 列表。列表的大小可以是0,1或大于1,具体取决于匹配项。
- 模板参数:
- 参数:
| [in] modelName 需要被翻译的实例标识。 |
| [out] N/A |
| [in,out] N/A |
- 返回:
| ara::core::Result< ara::com::InstanceIdentifierContainer > 如果成功返回实例标识列表,否则返回ara::com::ComErrc::kInstanceIDCouldNotBeResolved错误码。 |
- 注释:
- 异常:
- 错误码偏离项:
- Swsid:
- 符合标准:
- 非标原因:
- 种类:
- 可见:
- 线程安全:
- Fireandforget:
- 错误:
- 头文件:
| ara/com/runtime/runtime.h |
- 异常安全:
- 分类:
ara::core::Result<void> Trigger::Subscribe()
在相应的<Name>Proxy类内部的Trigger类需要提供Subscribe方法,用于开始订阅相应的tigger
- 模板参数:
- 参数:
| [in] N/A |
| [out] N/A |
| [in,out] N/A |
- 返回:
- 注释:
- 异常:
- 错误码偏离项:
- Swsid:
- 符合标准:
- 非标原因:
- 种类:
- 可见:
- 线程安全:
- Fireandforget:
- 错误:
- 头文件:
| ara/com/internal/proxy/trigger.h |
- 异常安全:
- 分类:
Trigger::Unsubscribe()
在相应的<Name>Proxy类内部的trigger 类需要提供Unsubscribe方法,用于取消订阅trigger。
- 模板参数:
- 参数:
| [in] N/A |
| [out] N/A |
| [in,out] N/A |
- 返回:
- 注释:
- 异常:
- 错误码偏离项:
- Swsid:
- 符合标准:
- 非标原因:
- 种类:
- 可见:
- 线程安全:
- Fireandforget:
- 错误:
- 头文件:
| ara/com/internal/proxy/trigger.h |
- 异常安全:
- 分类:
ara::core::Result<void> Trigger::SetReceiveHandler(ara::com::TriggerReceiveHandler handler)
为了使应用程序在属于特定ServiceProxy类的特定Trigger类中接收到trigger时被触发,应提供一个SetReceiveHandler方法来指定在trigger到达时调用的函数,输入参数为函数指针。 如果函数执行成功没有返回值;如果失败返回Com::kSetHandlerNotSet类型结果。
- 模板参数:
- 参数:
| [in] handler 无参回调函数,并通过调用GetNewTriggers接口来处理接收到的数据。 |
| [out] N/A |
| [in,out] N/A |
- 返回:
- 注释:
- 异常:
| 消息循环被开启,无法设置Handler会抛出异常信息"Error: VSOMEIP_ENV_MESSAGE_DISPATCHER ENABLE,Can not set handler!"。 |
- 错误码偏离项:
- Swsid:
- 符合标准:
- 非标原因:
- 种类:
- 可见:
- 线程安全:
- Fireandforget:
- 错误:
- 头文件:
| ara/com/internal/proxy/trigger.h |
- 异常安全:
- 分类:
std::size_t Trigger::GetNewTriggers()
使用该方法获取trigger的个数。
- 模板参数:
- 参数:
| [in] N/A |
| [out] N/A |
| [in,out] N/A |
- 返回:
- 注释:
- 异常:
- 错误码偏离项:
- Swsid:
- 符合标准:
- 非标原因:
- 种类:
- 可见:
- 线程安全:
- Fireandforget:
- 错误:
- 头文件:
| ara/com/internal/proxy/trigger.h |
- 异常安全:
- 分类:
ara::core::Result<void> Trigger::Send()
使用该方法用于发送Trigger。
如果发送失败函数会返回一个ara::com::ComErrorDomain中的ara::core::ErrorCode类型来提示错误信息:
ComErrc::kServiceNotOffered: 服务不提供。
ComErrc::kCommunicationLinkError: 通信连接被损坏。
ComErrc::kCommunicationStackError: 可能为通信栈错误,网络栈错误,网络绑定错误,或通信框架错误导致。
- 模板参数:
- 参数:
| [in] N/A |
| [out] N/A |
| [in,out] N/A |
- 返回:
- 注释:
- 异常:
- 错误码偏离项:
| kCommunicationLinkError未实现;kCommunicationStackError未实现。 |
- Swsid:
- 符合标准:
- 非标原因:
- 种类:
- 可见:
- 线程安全:
- Fireandforget:
- 错误:
- 头文件:
| ara/com/internal/skeleton/trigger.h |
- 异常安全:
- 分类:
ara::core::Result<void> Field::Update(const FieldType &value)
在相应的<Name>Skeleton类的特定Field类内部,应提供一个Update函数,用于向订阅者发送初始化的更新数据。
如果函数执行成功无返回值,如果失败返回一个ara::com::ComErrorDomain中的ara::core::ErrorCode类型数据:
ComErrc::kServiceNotOffered: 服务不提供。
ComErrc::kCommunicationLinkError: 通信连接被损坏。
ComErrc::kCommunicationStackError: 可能为通信栈错误,网络栈错误,网络绑定错误,或通信框架错误导致。
- 模板参数:
- 参数:
| [in] value 更新的field值 |
| [out] N/A |
| [in,out] N/A |
- 返回:
- 注释:
| <name>是ServiceInterface.shortName转换为小写字母; <Name>是ServiceInterface.shortName首字母转换为大写形式。Field为服务接口类下的特定字段类。在dds绑定的情况下,由于采用rtps通信,rtps基于UDP协议,所以序列化数据的长度应该小于60k。 |
- 异常:
- 错误码偏离项:
| kCommunicationLinkError未实现;kCommunicationStackError未实现。 |
- Swsid:
- 符合标准:
- 非标原因:
- 种类:
- 可见:
- 线程安全:
- Fireandforget:
- 错误:
- 头文件:
- 异常安全:
- 分类:
ara::core::ErrorCode MakeErrorCode(ara::com::ComErrc code, ara::core::ErrorDomain::SupportDataType data)
创建一个错误码的实例
- 模板参数:
- 参数:
| [in] code 错误码 |
| [in] data 支持错误码的数据 |
| [out] N/A |
| [in,out] N/A |
- 返回:
| ara::core::ErrorCode 一个错误码对象 |
- 注释:
- 异常:
- Swsid:
- 符合标准:
- 非标原因:
- 种类:
- 可见:
- 线程安全:
- Fireandforget:
- 错误:
- 头文件:
| ara/com/com_error_domain.h |
- 异常安全:
- 分类:
const ara::com::e2e::Result Event::GetResult() const
使用该方法获取E2E检查结果。
- 模板参数:
- 参数:
| [in] N/A |
| [out] N/A |
| [in,out] N/A |
- 返回:
| ara::com::e2e::Result E2E检查结果,包含E2E状态机状态ara::com::e2e::SMState和E2E消息检查结果ara::com::e2e::ProfileCheckStatus。 |
- 注释:
| <name>是ServiceInterface.shortName转换为小写字母;Event为服务接口类下的特定事件类。 |
- 异常:
- 错误码偏离项:
- Swsid:
- 符合标准:
- 非标原因:
- 种类:
- 可见:
- 线程安全:
- Fireandforget:
- 错误:
- 头文件:
- 异常安全:
- 分类:
ara::com::e2e::ProfileCheckStatus SamplePtr::GetProfileCheckStatus() const noexcept
使用该方法获取样本的E2E检查结果 。
- 模板参数:
- 参数:
| [in] N/A |
| [out] N/A |
| [in,out] N/A |
- 返回:
| ara::com::e2e::ProfileCheckStatus E2E样本检查结果ara::com::e2e::ProfileCheckStatus。 |
- 注释:
| <name>是ServiceInterface.shortName转换为小写字母;SamplePtr是Event中数据样本的指针。 |
- 异常:
- 错误码偏离项:
- Swsid:
- 符合标准:
- 非标原因:
- 种类:
- 可见:
- 线程安全:
- Fireandforget:
- 错误:
- 头文件:
- 异常安全:
- 分类:
ara::com::e2e::SMState GetE2EStateMachineState()const noexcept
获取method的E2E检查状态
- 模板参数:
- 参数:
| [in] N/A |
| [out] N/A |
| [in,out] N/A |
- 返回:
- 注释:
- 异常:
- 错误码偏离项:
- Swsid:
- 符合标准:
- 非标原因:
- 种类:
- 可见:
- 线程安全:
- Fireandforget:
- 错误:
- 头文件:
| ara/com/internal/proxy/event.h |
| ara/com/internal/proxy/method.h |
- 异常安全:
- 分类:
void E2EErrorHandler(ara::com::e2e::E2EErrorCode errorCode,ara::com::e2e::DataID dataID,ara::com::e2e::MessageCounter messageCounter)
E2E的错误报告函数。
- 模板参数:
- 参数:
| [in] errorCode E2E错误码 |
| [in] dataID E2E保护消息的唯一ID |
| [in] messageCounter 消息的个数 |
| [out] N/A |
| [in,out] N/A |
- 返回:
- 注释:
- 异常:
- 错误码偏离项:
- Swsid:
- 符合标准:
- 非标原因:
- 种类:
- 可见:
- 线程安全:
- Fireandforget:
- 错误:
- 头文件:
| ara/com/internal/skeleton/typed_service_impl_base.h |
- 异常安全:
- 分类:
ara::com::e2e::SMState GetE2EGetterStateMachineState()const noexcept
获取Field内的getter的E2E检查状态
- 模板参数:
- 参数:
| [in] N/A |
| [out] N/A |
| [in,out] N/A |
- 返回:
- 注释:
| <name>是ServiceInterface.shortName转换为小写字母。 |
- 异常:
- 错误码偏离项:
- Swsid:
- 符合标准:
- 非标原因:
| 标准定义的接口无法区分Setter/Getter,目前按照非标实现 |
- 种类:
- 可见:
- 线程安全:
- Fireandforget:
- 错误:
- 头文件:
| ara/com/internal/proxy/field.h |
- 异常安全:
- 分类:
ara::com::e2e::SMState GetE2ESetterStateMachineState()const noexcept
获取Field内的setter的E2E检查状态
- 模板参数:
- 参数:
| [in] N/A |
| [out] N/A |
| [in,out] N/A |
- 返回:
- 注释:
| <name>是ServiceInterface.shortName转换为小写字母。 |
- 异常:
- 错误码偏离项:
- Swsid:
- 符合标准:
- 非标原因:
| 标准定义的接口无法区分Setter/Getter,目前按照非标实现 |
- 种类:
- 可见:
- 线程安全:
- Fireandforget:
- 错误:
- 头文件:
| ara/com/internal/proxy/mutable_field.h |
- 异常安全:
- 分类:
Skeleton::RegisterSECOCErrorHandler(const ara::com::secoc::SecOcErrorHandler func_handler)
通信管理在<ServiceInterface.shortName>Skeleton类中向应用提供RegisterSECOCErrorHandler方法,用于注册SecOC错误处理函数,当Method消息检查到SecOC错误时,会调用SecOC错误处理函数。用户自行完成SecOC错误处理函数(即SecOcErrorHandler)的开发,根据SecOC错误信息决定后续处理流程。
SecOcErrorHandler实现必须符合ara::com::secoc::SecOcErrorHandler定义。
- 模板参数:
- 参数:
| [in] func_handler SecOC错误处理回调函数 |
| [out] N/A |
| [in,out] N/A |
- 返回:
- 注释:
| <name>是ServiceInterface.shortName转换为小写字母。 |
- 异常:
- 错误码偏离项:
- Swsid:
- 符合标准:
- 非标原因:
| SecOC的标准中类似功能为服务接口,平台暂不支持,非标方法替代。 |
- 种类:
- 可见:
- 线程安全:
- Fireandforget:
- 错误:
- 头文件:
| ara/com/secoc/secoc_error_domain.h |
- 异常安全:
- 分类:
ProxyFactoryImpl::RegisterSECOCErrorHandler(const ara::com::secoc::SecOcErrorHandler func_handler)
通信管理在<ServiceInterface.shortName>Proxy类中向应用提供RegisterSECOCErrorHandler方法,用于注册SecOC错误处理函数,当Method消息检查到SecOC错误时,会调用SecOC错误处理函数。用户自行完成SecOC错误处理函数(即SecOcErrorHandler)的开发,根据SecOC错误信息决定后续处理流程。
SecOcErrorHandler实现必须符合ara::com::secoc::SecOcErrorHandler定义。
- 模板参数:
- 参数:
| [in] func_handler SecOC错误处理回调函数 |
| [out] N/A |
| [in,out] N/A |
- 返回:
- 注释:
| <name>是ServiceInterface.shortName转换为小写字母。 |
- 异常:
- 错误码偏离项:
- Swsid:
- 符合标准:
- 非标原因:
| SecOC的标准中类似功能为服务接口,平台暂不支持,非标方法替代。 |
- 种类:
- 可见:
- 线程安全:
- Fireandforget:
- 错误:
- 头文件:
| ara/com/secoc/secoc_error_domain.h |
- 异常安全:
- 分类: