超节点

版本:24.03 LTS SP3

API参考 ​

介绍 ​

本文主要介绍UBS Comm对外提供的API。可以从两个不同的角度,对UBS Comm的API进行分类:

  • 编程语言

    UBS Comm主体使用C++语言开发,对外提供C++ API。为了方便不同场景的开发者使用,UBS Comm还对C++ API做了一层封装,对外提供C API。

  • 功能架构

    考虑性能及易用性,UBS Comm使用了“传输层”和“服务层”两层架构。传输层追求极致性能,服务层追求极致易用性。传输层和服务层均提供API,使用传输层或服务层的API均可以独立完成通信功能。传输层仅提供了高性能的通信基础功能,服务层还提供了链路重连、限流、超时检测等常用的高级功能。

由于UBS Comm对外提供的API较多,为方便开发者阅读及理解,本文分为如下几个大章节介绍UBS Comm的API。

  • 基础API参考

    介绍应用开发过程中最常用和基础的API,建议使用UBS Comm的开发者对这些API都有所了解。

  • 高级API参考

    介绍应用开发过程中不常用的API,开发者可以根据自身场景需要进行查阅。

  • 环境变量

    介绍UBS Comm对外提供的环境变量。

  • 错误码

    介绍UBS Comm的错误码名称、取值及部分常见错误码的处理方法。

基础API参考 ​

C++ API ​

服务层API ​

UBSHcomService::Create ​

函数定义

根据类型、名字和可选配置项创建一个服务层的NetService对象。

实现方法

static UBSHcomService* UBSHcomService::Create(UBSHcomServiceProtocol t, const std::string &name, const UBSHcomServiceOptions &opt = {});

参数说明

表 1 参数说明

参数名数据类型参数类型描述
tUBSHcomNetDriverProtocol入参UBSHcomService协议类型。
nameString入参UBSHcomService的名称。长度范围[1, 64],只能包含数字、字母、‘_’和‘-’。
optUBSHcomServiceOptions入参可选基础配置项。

返回值

成功则返回NetService类型的实例,否则返回空。

UBSHcomService::Destroy ​

函数定义

销毁服务,会清理全局map并根据名字销毁对象。

实现方法

static int32_t UBSHcomService::Destroy(const std::string &name);

参数说明

表 1 参数说明

参数名数据类型参数类型描述
nameString入参要删除的服务对象的名称。长度范围[1, 100],只能包含数字、字母、‘_’和‘-’。

返回值

表示函数执行结果,返回值为0则表示销毁成功。

UBSHcomService::Bind ​

函数定义

服务端绑定监听的url和端口号

实现方法

int32_t UBSHcomService::Bind(const std::string &listenerUrl, const UBSHcomServiceNewChannelHandler &handler)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
listenerUrlString入参要监听的url,格式如下:TCP:tcp://127.0.0.1:9981表示是TVP协议。监听IP为127.0.0.1,port为9981。在使用IPOverUrma的情况下,监听IP可以为bondingEid,例如:4245:4944:0000:0000:0000:0000:0100:0000。UDS:uds://file:perm表示是UDS协议。监听文件名为file,如果:perm为空则表示监听抽象文件,否则监听真实文件,perm表示文件权限,例如0600。
handlerUBSHcomServiceNewChannelHandler入参建链回调函数。

返回值

绑定成功返回0,失败返回对应错误码

UBSHcomService::Start ​

函数定义

启动服务

实现方法

int32_t UBSHcomService::Start()

参数说明

无

返回值

启动成功返回0,启动失败返回失败错误码。

UBSHcomService::Connect ​

函数定义

客户端向服务端发起建链。

实现方法

int32_t UBSHcomService::Connect(const std::string &serverUrl, UBSHcomChannelPtr &ch, const UBSHcomConnectOptions &opt = {})

参数说明

表 1 参数说明

参数名数据类型参数类型描述
serverUrlconst std::string入参服务端绑定监听的url。
chUBSHcomChannelPtr出参建链成功返回的channel通道。
optconst UBSHcomConnectOptions &入参建链配置项。

返回值

无

UBSHcomService::Disconnect ​

函数定义

断开链接。

实现方法

void UBSHcomService::Disconnect(const UBSHcomChannelPtr &ch)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
chconst UBSHcomChannelPtr入参要断开的channel通道。

返回值

无

UBSHcomService::RegisterMemoryRegion ​

函数定义

  • 注册一个内存区域,内存将在UBS Comm内部分配。
  • 将用户申请的内存,注册到UBS Comm中。

实现方法

  • int32_t UBSHcomService::RegisterMemoryRegion(uint64_t size, UBSHcomRegMemoryRegion &mr)
  • int32_t UBSHcomService::RegisterMemoryRegion(uintptr_t address, uint64_t size, UBSHcomRegMemoryRegion &mr)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
addressuintptr_t入参如果有此参数,则是外部申请的内存。
sizeuint64_t入参需要注册的内存大小,单位byte。方法1:范围为(0, 107374182400]。方法2:范围为(0, 1099511627776]。
mrUBSHcomRegMemoryRegion出参内存区域结构,包含key、名字、大小、buf等字段。

说明

若需要放入pgTable管理(通过UBSHcomService::SetEnableMrCache设置为true,默认不放入),则要求首地址(startAddress)和尾地址(startAddress+size)都需要16字节对齐,因此用户申请的size需要能被16整除。

返回值

表示函数执行结果,返回值为0则表示注册成功。

UBSHcomService::DestroyMemoryRegion ​

函数定义

销毁一个内存区域。

实现方法

void UBSHcomService::DestroyMemoryRegion(UBSHcomRegMemoryRegion &mr)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
mrUBSHcomRegMemoryRegion入参要销毁的内存区域。

返回值

无

UBSHcomService::RegisterChannelBrokenHandler ​

说明

用户实现的回调函数,内部不能销毁Service及相关的资源。

函数定义

给UBSHcomService注册断链回调函数。

实现方法

void UBSHcomService::RegisterChannelBrokenHandler(const UBSHcomServiceChannelBrokenHandler &handler, const UBSHcomChannelBrokenPolicy policy)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
handlerUBSHcomServiceChannelBrokenHandler入参断链回调函数。
policyUBSHcomChannelBrokenPolicy入参断链回调策略。

返回值

无

UBSHcomService::RegisterIdleHandler ​

说明

用户实现的回调函数,内部不能销毁service及相关的资源。

函数定义

给此UBSHcomService注册worker闲时回调函数

实现方法

void UBSHcomService::RegisterIdleHandler(const NetServiceIdleHandler &h)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
handlerconst UBSHcomServiceIdleHandler入参回调函数。

返回值

无

说明

数据类型解释如下: using UBSHcomServiceIdleHandler= std::function<void(const UBSHcomNetWorkerIndex &)>.

UBSHcomService::RegisterRecvHandler ​

说明

  • 用户实现的回调函数,内部不能销毁Service及相关的资源。
  • 用户需要避免在该回调中死等发送完成事件,应添加超时时间,否则会造成死锁。
  • 用户需要尽量避免在该回调中占用过长时间处理业务,以免影响性能。

函数定义

注册回调函数以处理异步通信收到消息事件。

实现方法

void UBSHcomService::RegisterRecvHandler(const UBSHcomServiceRecvHandler &recvHandler)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
recvHandlerUBSHcomServiceRecvHandler入参处理异步通信收数据事件的回调函数句柄。

返回值

无

UBSHcomService::RegisterSendHandler ​

说明

用户实现的回调函数,内部不能销毁Service及相关的资源。

函数定义

注册回调函数以处理消息发送完成事件。

实现方法

void UBSHcomService::RegisterSendHandler(const UBSHcomServiceSendHandler &sendHandler)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
sendHandlerUBSHcomServiceSendHandler入参处理发送完成事件的回调函数句柄。

返回值

无

UBSHcomService::RegisterOneSideHandler ​

说明

用户实现的回调函数,内部不能销毁Service及相关的资源。

函数定义

注册回调函数以处理单边读/写完成事件。

实现方法

void UBSHcomService::RegisterOneSideHandler(const UBSHcomServiceOneSideDoneHandler &oneSideDoneHandler)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
oneSideDoneHandlerUBSHcomServiceOneSideDoneHandler入参处理单边读/写完成事件的回调函数句柄。

返回值

无

UBSHcomChannel::Send ​

说明

  • 若使用拆包和rndv的功能,需要通过UBSHcomChannel::SetUBSHcomTwoSideThreshold设置拆包和rndv的阈值。
  • 使用rndv,则需要创建service后将UBSHcomService::SetEnableMrCache设置为true(UBSHcomService::RegisterMemoryRegion函数调用前)。

函数定义

  • 向对端异步发送一个双边请求消息,并且不等待响应。
  • 向对端同步发送一个双边请求消息,并且不等待响应。

实现方法

  • int32_t UBSHcomChannel::Send(const UBSHcomRequest &req, const Callback *done)
  • int32_t UBSHcomChannel::Send(const UBSHcomRequest &req)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
reqUBSHcomRequest入参发送给对端的消息message。
doneCallback入参回调函数。如果选择nullptr,函数是同步行为。如果定义了回调函数,接口异步读,直接返回。

返回值

表示函数执行结果,0表示发送成功。

UBSHcomChannel::Call ​

说明

  • rsp中若address字段填了有效内存地址,则回复会被拷贝到该地址上。
  • 若address==NULL,则UBS Comm会通过malloc申请内存,但用户需要自行维护该内存的生命周期,在使用完后通过free释放。
  • 若使用拆包和rndv的功能,需要通过UBSHcomChannel::SetUBSHcomTwoSideThreshold设置拆包和rndv的阈值。
  • 使用rndv,则需要创建service后将UBSHcomService::SetEnableMrCache设置为true(UBSHcomService::RegisterMemoryRegion函数调用前)。

函数定义

  • 异步模式下,发送一个UBSHcomRequest消息,并等待对方回复UBSHcomResponse响应消息。
  • 同步模式下,发送一个UBSHcomRequest消息,并等待对方回复UBSHcomResponse响应消息。

实现方法

  • int32_t UBSHcomChannel::Call(const UBSHcomRequest &req, UBSHcomResponse &rsp, const Callback *done)
  • int32_t UBSHcomChannel::Call(const UBSHcomRequest &req, UBSHcomResponse &rsp)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
reqUBSHcomRequest入参发送给对端的消息请求。
rspUBSHcomResponse出参对端回复的UBSHcomResponse消息。如果消息大小未知,则可以传入空指针,由UBS Comm调用malloc申请内存,并交给用户进行释放。如果响应消息大小已知,则传入已申请的地址。
doneCallback入参回调函数。如果选择nullptr,函数是同步行为。如果定义了回调函数,接口异步读,直接返回。

返回值

表示函数执行结果,返回值为0则表示发送成功。

UBSHcomChannel::Reply ​

函数定义

  • 异步模式下,向对端回复一个消息,配合Call接口使用

  • 同步模式下,向对端回复一个消息,配合Call接口使用

实现方法

  • int32_t UBSHcomChannel::Reply(const UBSHcomReplyContext &ctx, const UBSHcomRequest &req, const Callback *done)

  • int32_t UBSHcomChannel::Reply(const UBSHcomReplyContext &ctx, const UBSHcomRequest &req)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
ctxUBSHcomReplyContext入参消息回复上下文。
reqUBSHcomRequest入参回复发送给对端的请求。
doneCallback入参回调函数。如果选择nullptr,函数是同步行为。如果定义了回调函数,接口异步读,直接返回。

返回值

表示函数执行结果,0表示发送成功。

UBSHcomChannel::Get ​

函数定义

  • 同步模式下,发送一个读请求给对方。
  • 异步模式下,发送一个读请求给对方。

实现方法

-int32_t UBSHcomChannel::Get(const UBSHcomOneSideRequest &req, const Callback *done)

  • int32_t UBSHcomChannel::Get(const UBSHcomOneSideRequest &req)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
reqUBSHcomOneSideRequest入参请求信息。可以在调用OneSideHandler之后释放。
doneCallback入参回调函数。如果选择nullptr,函数是同步行为。如果定义了回调函数,接口异步读,直接返回。

返回值

表示函数执行结果,返回值为0则表示读请求成功。

UBSHcomChannel::Put ​

函数定义

  • 同步模式下,发送一个写请求给对方。
  • 异步模式下,发送一个写请求给对方。

实现方法

  • int32_t UBSHcomChannel::Put(const UBSHcomOneSideRequest &req, const Callback *done)

  • int32_t UBSHcomChannel::Put(const UBSHcomOneSideRequest &req)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
reqUBSHcomOneSideRequest入参请求信息。可以在调用OneSideHandler之后释放。
doneCallback入参回调函数。如果选择nullptr,函数是同步行为。如果定义了回调函数,接口异步写,直接返回。

返回值

表示函数执行结果,返回值为0则表示写请求成功。

UBSHcomChannel::Recv ​

函数定义

只用于接收RNDV请求。

实现方法

int32_t Recv(const UBSHcomServiceContext &context, uintptr_t address, uint32_t size, const Callback *done = nullptr)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
contextUBSHcomServiceContext入参回调中获得的上下文信息。
addressuintptr_t入参接收请求的数据地址。
sizeuint32_t入参接收请求的数据大小。
doneCallback入参回调函数。如果选择nullptr,函数是同步行为。如果定义了回调函数,接口异步写,直接返回。

返回值

表示函数执行结果,返回值为0则表示接收请求成功。

UBSHcomChannel::SetFlowControlConfig ​

函数定义

设置限流。

实现方法

int32_t SetFlowControlConfig(const FlowCtrlOptions &opt)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
optUBSHcomFlowCtrlOptions入参流控配置项。

返回值

返回0表示成功

UBSHcomChannel::SetChannelTimeOut ​

函数定义

给该channel设置超时时间。未设置时默认超时时间30s。

实现方法

void UBSHcomChannel::SetChannelTimeOut(int16_t oneSideTimeout, int16_t twoSideTimeout)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
oneSideTimeoutint16_t入参单边超时时间,单位为秒,0为立即超时,负数为永不超时(通常设置为-1)。范围是[-1, INT16_MAX]。未设置时默认超时时间30s。
twoSideTimeoutint16_t入参双边超时时间,单位为秒,0为立即超时,负数为永不超时(通常设置为-1)。范围是[-1, INT16_MAX]。未设置时默认超时时间30s。

返回值

无

UBSHcomChannel::SetUBSHcomTwoSideThreshold ​

函数定义

设置双边操作阈值。

实现方法

int32_t SetUBSHcomTwoSideThreshold(const UBSHcomTwoSideThreshold &threshold)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
thresholdUBSHcomTwoSideThreshold入参双边操作阈值。

返回值

返回0表示成功。

UBSHcomChannel::GetId ​

函数定义

获得channel ID。

实现方法

uint64_t UBSHcomChannel::GetId()

参数说明

无

返回值

uint64_t id信息。

UBSHcomChannel::GetPeerConnectPayload ​

函数定义

获得建链的payLoad信息。

实现方法

std::string UBSHcomChannel::GetPeerConnectPayload()

参数说明

无

返回值

playLoad信息。

UBSHcomChannel::SetTraceId ​

函数定义

设置trace id。

实现方法

void SetTraceId(const std::string &traceId)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
traceIdstd::string入参要设置的trace ID。

返回值

无

UBSHcomServiceContext::Result ​

函数定义

获得ctx的结果,表示通信操作的成功与否。

实现方法

SerResult UBSHcomServiceContext::Result() const

参数说明

无

返回值

ctx的结果。

UBSHcomServiceContext::Channel ​

函数定义

获得ctx的NetChannel,可以用于向对端回复消息。

实现方法

const UBSHcomChannelPtr &UBSHcomServiceContext::Channel() const

参数说明

无

返回值

ctx的NetChannel。

UBSHcomServiceContext::OpType ​

函数定义

获得ctx的操作类型。

实现方法

Operation UBSHcomServiceContext::OpType() const

参数说明

无

返回值

ctx的操作类型。

UBSHcomServiceContext::RspCtx ​

函数定义

获得ctx的rspCtx,可以用于接收对端发送call消息后回复消息时当作参数使用。

实现方法

uintptr_t UBSHcomServiceContext::RspCtx() const

参数说明

无

返回值

ctx的rspCtx。

UBSHcomServiceContext::ErrorCode ​

函数定义

获得ctx的errorCode。

实现方法

const int32_t UBSHcomServiceContext::ErrorCode()

参数说明

无

返回值

ctx的errorCode

UBSHcomServiceContext::OpCode ​

函数定义

获得ctx的opCode。

实现方法

uint16_t UBSHcomServiceContext::OpCode() const

参数说明

无

返回值

ctx的opCode。

UBSHcomServiceContext::MessageData ​

函数定义

获得ctx的消息,为对端发送过来的消息。

实现方法

void *UBSHcomServiceContext::MessageData() const

参数说明

无

返回值

ctx的消息。

UBSHcomServiceContext::MessageDataLen ​

函数定义

获得ctx的消息长度。

实现方法

uint32_t UBSHcomServiceContext::MessageDataLen() const

参数说明

无

返回值

ctx的消息长度。

UBSHcomServiceContext::Clone ​

函数定义

将ctx的内容拷贝。

实现方法

static SerResult UBSHcomServiceContext::Clone(UBSHcomServiceContext &newOne, const UBSHcomServiceContext &oldOne, bool copyData = true)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
newOneUBSHcomServiceContext出参拷贝得到的ctx。
oldOneconst UBSHcomServiceContext入参被拷贝的ctx。
copyDatabool入参是否拷贝数据。

返回值

返回值为0则表示成功。

UBSHcomServiceContext::IsTimeout ​

函数定义

获得ctx是否超时,表示此次操作是否超时。

实现方法

bool UBSHcomServiceContext::IsTimeout() const

参数说明

无

返回值

ctx是否超时。

UBSHcomServiceContext::Invalidate ​

函数定义

将ctx的内容失效。

实现方法

void UBSHcomServiceContext::Invalidate()

参数说明

无

返回值

无

UBSHcomService::SetEnableMrCache ​

说明

若用户需要使用RNDV,则需要设置为true。

函数定义

设置RegisterMemoryRegion是否将mr放入pgTable管理。

实现说明

void SetEnableMrCache(bool enableMrCache);

参数说明

表 1 参数说明

参数名数据类型参数类型描述
enableMrCachebool入参mr放入pgTable管理标志位。

返回值

无

C API ​

服务层API ​

ubs_hcom_service_create ​

函数定义

根据类型和名字创建一个服务层的NetService对象。

实现方法

int Service_Create(ubs_hcom_service_type t, const char *name, ubs_hcom_service_options options, ubs_hcom_service *service);

参数说明

表 1 参数说明

参数名数据类型参数类型描述
tubs_hcom_service_type入参ubs_hcom_service协议类型。
nameconst char *入参ubs_hcom_service的名字。长度范围[1, 64],只能包含数字、字母、‘_’和‘-’。
optionsubs_hcom_service_options入参Service配置项。
serviceubs_hcom_service出参表示创建的ubs_hcom_service对象,如果创建失败返回空。

返回值

返回值为0则表示发送消息成功。

ubs_hcom_service_bind ​

函数定义

根据类型和名字创建一个服务层的NetService对象。

实现方法

int ubs_hcom_service_bind(ubs_hcom_service service, const char *listenerUrl, ubs_hcom_service_channel_handler h);

参数说明

表 1 参数说明

参数名数据类型参数类型描述
serviceubs_hcom_service入参表示创建的ubs_hcom_service对象,如果创建失败返回空。
listenerUrlconst char *入参监听的URL。对于TCP来说:tcp://127.0.0.1:9981。在使用IPOverUrma的情况下,监听IP可以为bondingEid,例如:4245:4944:0000:0000:0000:0000:0100:0000。对于UDS来说:uds://file:perm。如果有:perm则使用真实文件,perm格式如:0600,没有则使用抽象文件。
hubs_hcom_service_channel_handler入参收到新建链的channel回调。

返回值

返回值为0则表示bind成功。

ubs_hcom_service_start ​

函数定义

根据类型和名字创建一个服务层的NetService对象。

实现方法

int ubs_hcom_service_start(ubs_hcom_service service);

参数说明

表 1 参数说明

参数名数据类型参数类型描述
serviceubs_hcom_service入参之前创建的ubs_hcom_service对象。

返回值

返回值为0则表示创建成功。

ubs_hcom_service_destroy ​

函数定义

销毁服务,会清理全局map根据名字销毁对象。

实现方法

int ubs_hcom_service_destroy(ubs_hcom_service service, const char *name);

参数说明

表 1 参数说明

参数名数据类型参数类型描述
serviceubs_hcom_service入参需要销毁的ubs_hcom_service对象。
nameconst char *入参需要销毁的ubs_hcom_service对象名字。
ubs_hcom_service_connect ​

函数定义

建立与远程服务器的连接,并返回连接通道。

实现方法

int ubs_hcom_service_connect(ubs_hcom_service service, const char *serverUrl, ubs_hcom_channel *channel, Service_UBSHcomConnectOptions options);

参数说明

表 1 参数说明

参数名数据类型参数类型描述
serviceubs_hcom_service入参之前创建的ubs_hcom_service对象。
serverUrlconst char *入参连接的远程服务器的IP地址或名称。对于TCP来说:tcp://127.0.0.1:9981。对于UDS来说:uds://file:perm。如果有:perm则使用真实文件,perm格式如:0600,没有则使用抽象文件。
channelubs_hcom_channel出参建链生成的连接通道NetChannel。
optionsService_UBSHcomConnectOptions入参建链使用的参数选项。

返回值

返回值为0则表示建链成功。

ubs_hcom_service_disconnect ​

函数定义

切断与远程服务器的连接。

实现方法

int ubs_hcom_service_disconnect(ubs_hcom_service service, ubs_hcom_channel channel);

参数说明

表 1 参数说明

参数名数据类型参数类型描述
serviceubs_hcom_service入参之前创建的ubs_hcom_service对象。
channelubs_hcom_channel入参建链生成的连接通道ubs_hcom_channel对象。

返回值

返回值为0则表示断链成功。

ubs_hcom_service_register_memory_region ​

函数定义

注册一个内存区域,内存将在UBS Comm内部分配。

实现方法

int ubs_hcom_service_register_memory_region(ubs_hcom_service service, uint64_t size, ubs_hcom_memory_region *mr);

参数说明

表 1 参数说明

参数名数据类型参数类型描述
serviceubs_hcom_service入参初始化创建的ubs_hcom_service对象。
sizeuint64_t入参需要注册的内存大小,单位byte。范围为(0, 107374182400]。
mrubs_hcom_memory_region入参内存区域结构,包含key、名字、大小、buf等字段。

说明

若需要放入pgTable管理(通过ubs_hcom_service_set_enable_mrcache设置为true,默认不放入),则要求首地址(startAddress)和尾地址(startAddress+size)都需要16字节对齐,因此用户申请的size需要能被16整除。

返回值

表示函数执行结果,返回值为0则表示注册成功。

ubs_hcom_service_get_memory_region_info ​

函数定义

获得mr的内容。

实现方法

int ubs_hcom_service_get_memory_region_info(ubs_hcom_memory_region mr, ubs_hcom_mr_info *info);

参数说明

表 1 参数说明

参数名数据类型参数类型描述
mrubs_hcom_memory_region入参mr对象。
infoubs_hcom_mr_info出参mr的信息。

返回值

表示函数执行结果,返回值为0则表示注册成功。

ubs_hcom_service_register_assign_memory_region ​

函数定义

注册一个内存区域,内存将在UBS Comm外部分配。

实现方法

int ubs_hcom_service_register_assign_memory_region(ubs_hcom_service service, uintptr_t address, uint64_t size, ubs_hcom_memory_region *mr);

参数说明

表 1 参数说明

参数名数据类型参数类型描述
serviceubs_hcom_service入参初始化创建的ubs_hcom_service对象。
addressuintptr_t入参外部申请的内存地址。
sizeuint64_t入参外部申请的内存大小,单位byte。范围为(0, 1099511627776]。
mrubs_hcom_memory_region出参内存区域结构,包含key、名字、大小、buf等字段。

返回值

表示函数执行结果,返回值为0则表示注册成功。

ubs_hcom_service_destroy_memory_region ​

函数定义

销毁一个内存区域,内存将在UBS Comm内部分配。

实现方法

int ubs_hcom_service_destroy_memory_region(ubs_hcom_service service, ubs_hcom_memory_region mr);

参数说明

表 1 参数说明

参数名数据类型参数类型描述
serviceubs_hcom_service入参初始化创建的ubs_hcom_service对象。
mrubs_hcom_memory_region入参内存区域结构,包含key、名字、大小、buf等字段。

返回值

无

ubs_hcom_service_register_broken_handler ​

Service_RegisterChannelHandler

说明

用户注册的回调函数,不能销毁Service及相关的资源。

函数定义

注册通道Channel的回调函数,以处理通道建链和断连事件。

实现方法

void ubs_hcom_service_register_broken_handler(ubs_hcom_service service, ubs_hcom_service_channel_handler h,

ubs_hcom_service_channel_policy policy, uint64_t usrCtx);

参数说明

表 1 参数说明

参数名数据类型参数类型描述
serviceubs_hcom_service入参之前创建的ubs_hcom_service对象。
tubs_hcom_service_handler_type入参句柄的类型。
hubs_hcom_service_channel_handler入参回调函数句柄。
policyubs_hcom_service_channel_policy入参链路断开时的策略,策略可选。
usrCtxuint64_t入参用户上下文。

返回值

uintptr_t,返回内部句柄地址。

ubs_hcom_service_register_idle_handler ​

说明

用户注册的回调函数,不能销毁Service及相关的资源。

函数定义

设置NetService的worker闲时回调函数。

实现方法

void ubs_hcom_service_register_idle_handler(ubs_hcom_service service, ubs_hcom_service_idle_handler h, uint64_t usrCtx);

参数说明

表 1 参数说明

参数名数据类型参数类型描述
serviceubs_hcom_service入参ubs_hcom_service对象。
hubs_hcom_service_idle_handler入参worker闲时回调函数。
usrCtxuint64_t入参用户上下文,可以在回调函数中使用。

返回值

内部回调函数地址。

说明

数据类型解释如下: typedef void (*ubs_hcom_service_idle_handler)(uint8_t wkrGrpIdx, uint16_t idxInGrp, uint64_t usrCtx).

ubs_hcom_service_register_handler ​

说明

  • 用户注册的回调函数,不能销毁Service及相关的资源。
  • 用户需要避免在该回调中死等发送完成事件,应添加超时时间,否则会造成死锁。
  • 用户需要尽量避免在该回调中占用过长时间处理业务,以免影响性能。

函数定义

注册回调函数,以处理通道双边发送完成、单边发送完成、双边收消息事件。

实现方法

void ubs_hcom_service_register_handler(ubs_hcom_service service, ubs_hcom_service_handler_type t, ubs_hcom_service_request_handler h,

uint64_t usrCtx);

参数说明

表 1 参数说明

参数名数据类型参数类型描述
serviceubs_hcom_service入参之前创建的ubs_hcom_service对象。
tubs_hcom_service_handler_type入参句柄的类型。
hubs_hcom_service_request_handler入参回调函数句柄。
usrCtxuint64_t入参用户上下文。

返回值

无

ubs_hcom_service_set_enable_mrcache ​

说明

用户需要使用RNDV,则需要设置为true。

函数定义

设置RegisterMemoryRegion是否将mr放入pgTable管理。

实现方法

void ubs_hcom_service_set_enable_mrcache(ubs_hcom_service service, bool enableMrCache);

参数说明

表 1 参数说明

参数名数据类型参数类型描述
serviceubs_hcom_service入参之前创建的ubs_hcom_service对象。
enableMrCachebool入参mr放入pgTable管理标志位。

返回值

无

ubs_hcom_channel_refer ​

函数定义

将此NetChannel增加一次引用计数。

实现方法

void ubs_hcom_channel_refer(ubs_hcom_channel channel)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
channelubs_hcom_channel入参需要增加引用计数的NetChannel。

返回值

无

ubs_hcom_channel_derefer ​

函数定义

将此ubs_hcom_channel 减少一次引用计数。

实现方法

void ubs_hcom_channel_derefer(ubs_hcom_channel channel)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
channelubs_hcom_channel入参需要减少引用计数的ubs_hcom_channel 。

返回值

无

ubs_hcom_channel_send ​

说明

  • 若使用拆包和rndv的功能,需要通过UBSHcomChannel::SetUBSHcomTwoSideThreshold设置拆包和rndv的阈值。
  • 使用rndv,则需要创建service后将UBSHcomService::SetEnableMrCache设置为true(UBSHcomService::RegisterMemoryRegion函数调用前)。

函数定义

发送双边消息,不需要对端回复。

实现方法

int ubs_hcom_channel_send(ubs_hcom_channel channel, ubs_hcom_channel_request req, ubs_hcom_channel_callback *cb);

参数说明

表 1 参数说明

参数名数据类型参数类型描述
channelubs_hcom_channel入参创建的channel对象。
requbs_hcom_channel_request入参发送双边消息请求。
cbubs_hcom_channel_callback入参nullptr:同步发送。非nullptr:异步发送,发送完成后回调函数。

返回值

返回值为0则表示成功。

ubs_hcom_channel_call ​

说明

  • rsp中若address字段填了有效内存地址,则用户回复的信息会被拷贝到该地址上。
  • 若address==NULL,则UBS Comm会通过malloc申请内存,但用户需要自行维护该内存的生命周期,在使用完后通过free释放。
  • 若使用拆包和rndv的功能,需要通过UBSHcomChannel::SetUBSHcomTwoSideThreshold设置拆包和rndv的阈值。
  • 使用rndv,则需要创建service后将UBSHcomService::SetEnableMrCache设置为true(UBSHcomService::RegisterMemoryRegion函数调用前)。

函数定义

发送双边消息并等待回复,需要对端配合Reply使用。

实现方法

int ubs_hcom_channel_call(ubs_hcom_channel channel, ubs_hcom_channel_request req, ubs_hcom_channel_response *rsp, ubs_hcom_channel_callback *cb);

参数说明

表 1 参数说明

参数名数据类型参数类型描述
channelubs_hcom_channel入参创建的channel对象。
requbs_hcom_channel_request入参发送双边消息请求
rspubs_hcom_channel_response入参出参,发送双边消息请求后对端回复
cbubs_hcom_channel_callback入参nullptr:同步发送。非nullptr:异步发送,发送完成后回调函数。

返回值

返回值为0则表示成功。

ubs_hcom_channel_reply ​

函数定义

回复双边消息,接收端配合Call使用。

实现方法

int ubs_hcom_channel_reply(ubs_hcom_channel channel, ubs_hcom_channel_request req, ubs_hcom_channel_reply_context ctx, ubs_hcom_channel_callback*cb);

参数说明

表 1 参数说明

参数名数据类型参数类型描述
channelubs_hcom_channel入参创建的channel对象。
requbs_hcom_channel_request入参回复数据。
ctxubs_hcom_channel_reply_context入参回复上下文。
cbubs_hcom_channel_callback入参nullptr:同步发送。非nullptr:异步发送,发送完成后回调函数。

返回值

返回值为0则表示成功。

ubs_hcom_channel_put ​

数据定义

发送单边写请求。

实现方法

int ubs_hcom_channel_put(ubs_hcom_channel channel, ubs_hcom_oneside_request req, ubs_hcom_channel_callback*cb);

参数说明

表 1 参数说明

参数名数据类型参数类型描述
channelubs_hcom_channel入参创建的channel对象。
requbs_hcom_oneside_request入参单边请求。
cbubs_hcom_channel_callback入参异步请求回调函数。

返回值

返回值为0则表示成功。

ubs_hcom_channel_get ​

函数定义

发送单边读请求。

实现方法

int ubs_hcom_channel_get(ubs_hcom_channel channel, ubs_hcom_oneside_request req, ubs_hcom_channel_callback*cb);

参数说明

表 1 参数说明

参数名数据类型参数类型描述
channelubs_hcom_channel入参创建的channel对象。
requbs_hcom_oneside_request入参单边请求。
cbubs_hcom_channel_callback入参异步请求回调函数。

返回值

返回值为0则表示成功。

ubs_hcom_channel_recv ​

函数定义

只用于接收RNDV请求。

实现方法

int ubs_hcom_channel_recv(ubs_hcom_channel channel, ubs_hcom_service_context ctx, uintptr_t address, uint32_t size, ubs_hcom_channel_callback *cb);

参数说明

表 1 参数说明

参数名数据类型参数类型描述
channelubs_hcom_channel入参创建的channel对象。
ctxubs_hcom_service_context入参上下文。
addressuintptr_t入参接收数据地址。
sizeuint32_t入参接收数据大小。
cbubs_hcom_channel_callback *入参异步请求回调。

返回值

返回值为0则表示成功。

ubs_hcom_channel_set_flowctl_cfg ​

函数定义

给此NetChannel设置流控参数。

实现方法

int Channel_ConfigFlowControl(ubs_hcom_channel channel, ubs_hcom_flowctl_opts options)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
channelubs_hcom_channel入参通信渠道。
optionsubs_hcom_flowctl_opts入参流控参数。

返回值

返回值为0则表示成功。

ubs_hcom_channel_set_timeout ​

函数定义

设置ubs_hcom_channel 的双边超时时间。

实现方法

void ubs_hcom_channel_set_timeout(ubs_hcom_channel channel, int32_t timeout)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
channelubs_hcom_channel入参ubs_hcom_channel 。
timeoutint32_t入参超时时间,单位为秒,0为立即超时,负数为永不超时(一般设置为-1)。范围是[-1, INT16_MAX]。

返回值

无

ubs_hcom_channel_set_twoside_threshold ​

函数定义

设置拆包和rndv的阈值。

实现方法

int ubs_hcom_channel_set_twoside_threshold(ubs_hcom_channel channel, ubs_hcom_twoside_threshold threshold);

参数说明

表 1 参数说明

参数名数据类型参数类型描述
channelNet_Channel入参NetChannel。
thresholdubs_hcom_twoside_threshold入参拆包和rndv阈值。

返回值

无

ubs_hcom_channel_get_id ​

函数定义

获取channelId。

实现方法

int ubs_hcom_channel_get_id(ubs_hcom_channel channel);

参数说明

表 1 参数说明

参数名数据类型参数类型描述
channelubs_hcom_channel入参通信channel对象。

返回值

返回0为成功。

ubs_hcom_context_get_channel ​

函数定义

通过ctx获得ubs_hcom_channel。

实现方法

int ubs_hcom_context_get_channel(ubs_hcom_service_context context, ubs_hcom_channel *channel);

参数说明

表 1 参数说明

参数名数据类型参数类型描述
contextubs_hcom_service_context入参回调函数的参数ctx。
channelubs_hcom_channel出参返回得到的ubs_hcom_channel。

返回值

返回0为成功。

ubs_hcom_context_get_type ​

函数定义

通过ctx获得操作类型。

实现方法

int ubs_hcom_context_get_type(ubs_hcom_service_context context, ubs_hcom_service_context_type *type);

参数说明

表 1 参数说明

参数名数据类型参数类型描述
contextubs_hcom_service_context入参回调函数的参数ctx。
typeubs_hcom_service_context_type出参返回得到的ubs_hcom_channel。

返回值

返回0为成功。

ubs_hcom_context_get_result ​

函数定义

通过ctx获得操作结果。

实现方法

int ubs_hcom_context_get_result(ubs_hcom_service_context context, int *result)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
contextubs_hcom_service_context入参回调函数的参数ctx。
resultint出参操作结果。

返回值

返回0为成功。

ubs_hcom_context_get_rspctx ​

函数定义

通过ctx获得回复消息所需的rspCtx。

实现方法

int ubs_hcom_context_get_rspctx(ubs_hcom_service_context context, ubs_hcom_channel_reply_context *rspCtx);

参数说明

表 1 参数说明

参数名数据类型参数类型描述
contextubs_hcom_service_context入参回调函数的参数ctx。
rspCtxubs_hcom_channel_reply_context出参回复消息接口所需参数。

返回值

返回0为成功。

ubs_hcom_context_get_opcode ​

函数定义

通过ctx获得OpCode。

实现方法

uint16_t ubs_hcom_context_get_opcode(ubs_hcom_service_context context);

参数说明

表 1 参数说明

参数名数据类型参数类型描述
contextubs_hcom_service_context入参回调函数的参数ctx。
返回值uint16_t出参OpCode。

返回值

返回0为成功。

ubs_hcom_context_get_data ​

函数定义

通过ctx获得接收到的消息。

实现方法

void *ubs_hcom_context_get_data(ubs_hcom_service_context context)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
contextubs_hcom_service_context入参回调函数的参数ctx。

返回值

返回接收到的消息。

ubs_hcom_context_get_datalen ​

函数定义

通过ctx获得接收到的消息长度。

实现方法

uint32_t ubs_hcom_context_get_datalen(ubs_hcom_service_context context)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
contextubs_hcom_service_context入参回调函数的参数ctx。

返回值

返回接收到的消息长度。

传输层API ​

ubs_hcom_driver_create ​

函数定义

根据类型和名字创建一个传输层的HcomDriver对象。

实现方法

int ubs_hcom_driver_create(ubs_hcom_driver_type t, const char *name, uint8_t startOobSvr, ubs_hcom_driver *driver)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
tubs_hcom_driver_type入参ubs_hcom_driver协议类型,取值范围详见ubs_hcom_driver_type。
namechar *入参ubs_hcom_driver的名字。长度范围[1, 100],只能包含数字、字母、‘_’和‘-’。
startOobSvruint8_t入参Server端设置为0,Client端设置为1。
driverubs_hcom_driver出参创建的ubs_hcom_driver实例。

返回值

返回值为0则表示创建HcomDriver成功。

ubs_hcom_driver_set_ipport ​

函数定义

给HcomDriver对象设置OOB的IP和Port。

实现方法

void ubs_hcom_driver_set_ipport(ubs_hcom_driver driver, const char *ip, uint16_t port)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
driverubs_hcom_driver入参ubs_hcom_driver对象。
ipconst char *入参IP。该参数内部有系统函数对IP有效性进行校验。
portuint16_t入参端口。范围值[1024, 65535]。

返回值

无

ubs_hcom_driver_get_ipport ​

函数定义

得到HcomDriver对象的OOB的IP和Port。

实现方法

bool ubs_hcom_driver_get_ipport(ubs_hcom_driver driver, char ***ipArray, uint16_t **portArray, int *length)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
driverubs_hcom_driver入参ubs_hcom_driver对象。
ipArraychar **出参OOB的IP数组。
portArrayuint16_t *出参OOB的端口数组。
lengthint出参数组长度。

返回值

返回值为true则表示成功。

说明

出参ipArray和portArray为内部分配的内存,用户需要在使用完成之后自行释放此内存。

ubs_hcom_driver_set_udsname ​

函数定义

给HcomDriver对象设置的OOB type为UDS时的name。

实现方法

void ubs_hcom_driver_set_udsname(ubs_hcom_driver driver, const char *name)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
driverubs_hcom_driver入参ubs_hcom_driver对象。
nameconst char *入参需要设置的name。长度范围是(0, 96)。

返回值

无

ubs_hcom_driver_add_uds_opt ​

函数定义

给HcomDriver对象设置的OOB type为UDS时的name和一些参数。

实现方法

void ubs_hcom_driver_add_uds_opt(ubs_hcom_driver driver, ubs_hcom_driver_uds_listen_opts option)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
driverubs_hcom_driver入参ubs_hcom_driver对象。
optionubs_hcom_driver_listen_opts入参需要设置的UDS参数。

返回值

无

ubs_hcom_driver_add_oob_opt ​

函数定义

设置HcomDriver对象的OOB的IP和Port。

实现方法

void ubs_hcom_driver_add_oob_opt(ubs_hcom_driver driver, ubs_hcom_driver_listen_opts options)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
driverubs_hcom_driver入参ubs_hcom_driver对象。
optionsubs_hcom_driver_listen_opts出参需要设置的IP和Port参数。

返回值

无

ubs_hcom_driver_initizalize ​

函数定义

根据类型和名字创建一个传输层的HcomDriver对象。

实现方法

int ubs_hcom_driver_initizalize(ubs_hcom_driver driver, ubs_hcom_driver_opts options)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
driverubs_hcom_driver入参需要初始化的ubs_hcom_driver。
optionsubs_hcom_driver_opts入参根据Option,初始化ubs_hcom_driver。

返回值

返回值为0则表示初始化HcomDriver成功。

ubs_hcom_driver_start ​

函数描述

根据类型和名字创建一个传输层的HcomDriver对象。

函数定义

int ubs_hcom_driver_start(ubs_hcom_driver driver)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
driverubs_hcom_driver入参需要开启的ubs_hcom_driver。

返回值

返回值为0则表示开启HcomDriver成功。

ubs_hcom_driver_connect ​

说明

如果用户实现中需要主动销毁EP,要先调用ubs_hcom_ep_close接口;如果需要减少EP的引用计数,可调用ubs_hcom_ep_destroy函数。

函数定义

建立与远程服务器的连接,并返回连接创建的EP。

实现方法

  • int ubs_hcom_driver_connect(ubs_hcom_driver driver, const char *payloadData, ubs_hcom_endpoint *ep, uint32_t flags)
  • int ubs_hcom_driver_connect_with_grpno(ubs_hcom_driver driver, const char *payloadData, ubs_hcom_endpoint *ep, uint32_t flags, uint8_t serverGrpNo, uint8_t clientGrpNo)
  • int ubs_hcom_driver_connect_to_ipport(ubs_hcom_driver driver, const char *serverIp, uint16_t serverPort, const char *payloadData, ubs_hcom_endpoint *ep, uint32_t flags)
  • int ubs_hcom_driver_connect_to_ipport_with_grpno(ubs_hcom_driver driver, const char *serverIp, uint16_t serverPort, const char *payloadData, ubs_hcom_endpoint *ep, uint32_t flags, uint8_t serverGrpNo, uint8_t clientGrpNo)
  • int ubs_hcom_driver_connect_to_ipport_with_ctx(ubs_hcom_driver driver, const char *serverIp, uint16_t serverPort, const char *payloadData, ubs_hcom_endpoint *ep, uint32_t flags, uint8_t serverGrpNo, uint8_t clientGrpNo, uint64_t ctx)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
driverubs_hcom_driver入参需要连接的ubs_hcom_driver。
payloadDatachar *入参建链时传输到远程服务器的字段,将在ep connected NetCallback中获取到。长度范围[0, 512]。
epubs_hcom_endpoint *出参连接之后新创建的EP。
flagsuint32_t入参默认是Net_C_EP_EVENT_POLLING。当创建同步EP时flags设置为Net_C_EP_SELF_POLLING。
serverGrpNouint8_t入参对端EP所在的worker组号。
clientGrpNouint8_t入参本端EP所在的worker组号。
serverIpconst char *入参对端监听的IP地址。
serverPortuint16_t入参对端监听的Port。范围是[1024, 65535]。
ctxuint64_t入参secInfo回调时的ctx。

返回值

返回值为0则表示连接成功。

ubs_hcom_driver_stop ​

函数定义

停止服务和内部启动的线程。

实现方法

void ubs_hcom_driver_stop(ubs_hcom_driver driver)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
driverubs_hcom_driver入参需要停止的ubs_hcom_driver。

返回值

无

ubs_hcom_driver_uninitialize ​

函数定义

清理服务创建时的相关资源。

实现方法

void ubs_hcom_driver_uninitialize(ubs_hcom_driver driver)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
driverubs_hcom_driver入参需要清理的ubs_hcom_driver。

返回值

无

ubs_hcom_driver_destroy ​

函数定义

销毁HcomDriver。

实现方法

void ubs_hcom_driver_destroy(ubs_hcom_driver driver)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
driverubs_hcom_driver入参需要销毁的ubs_hcom_driver。

返回值

无

ubs_hcom_driver_register_ep_handler ​

说明

用户实现的回调函数,内部不能销毁driver及相关的资源。

函数定义

注册EP的回调函数,以处理EP建链和断连事件。并把回调函数句柄放入全局句柄管理器。

实现方法

uintptr_t ubs_hcom_driver_register_ep_handler(ubs_hcom_driver driver, ubs_hcom_ep_handler_type t, ubs_hcom_ep_handler h, uint64_t usrCtx)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
driverubs_hcom_driver入参需要注册回调函数的ubs_hcom_driver。
tubs_hcom_ep_handler_type入参句柄的类型。
hubs_hcom_ep_handler入参回调函数的句柄。
usrCtxuint64入参用户上下文。

返回值

uintptr_t类型,返回内部句柄地址。

ubs_hcom_driver_register_op_handler ​

说明

用户实现的回调函数,内部不能销毁driver及相关的资源。

函数定义

注册回调函数,以处理通道双边发送完成、单边发送完成、双边收消息事件。并把回调函数句柄放入全局句柄管理器。

实现方法

uintptr_t ubs_hcom_driver_register_op_handler(ubs_hcom_driver driver, ubs_hcom_op_handler_type t, ubs_hcom_request_handler h, uint64_t usrCtx)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
driverubs_hcom_driver入参需要注册回调函数的ubs_hcom_driver。
tubs_hcom_op_handler_type入参句柄的类型。
hubs_hcom_request_handler入参回调函数的句柄。
usrCtxuint64_t入参用户上下文。

返回值

uintptr_t类型,返回内部句柄地址。

ubs_hcom_driver_register_idle_handler ​

说明

用户实现的回调函数,内部不能销毁driver及相关的资源。

函数定义

给HcomDriver对象设置EP闲时回调函数。并把回调函数句柄放入全局句柄管理器。

实现方法

uintptr_t ubs_hcom_driver_register_idle_handler(ubs_hcom_driver driver, ubs_hcom_idle_handler h, uint64_t usrCtx)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
driverubs_hcom_driver入参ubs_hcom_driver对象。
hubs_hcom_idle_handler入参闲时回调函数。
usrCtxuint64_t入参带到回调函数中的ctx。

返回值

内部回调函数地址。

说明

数据类型解释如下: typedef void (*ubs_hcom_idle_handler)(uint8_t wkrGrpIdx, uint16_t idxInGrp, uint64_t usrCtx)

ubs_hcom_driver_register_secinfo_provider ​

说明

用户实现的回调函数,内部不能销毁driver及相关的资源。

函数定义

给HcomDriver对象设置EP安全信息提供函数。

实现方法

uintptr_t ubs_hcom_driver_register_secinfo_provider(ubs_hcom_driver driver, ubs_hcom_secinfo_provider provider)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
driverubs_hcom_driver入参ubs_hcom_driver对象。
providerubs_hcom_secinfo_provider入参安全信息提供函数。

返回值

内部回调函数地址。

说明

数据类型解释如下: typedef int (*ubs_hcom_secinfo_provider)(uint64_t ctx, int64_t *flag, ubs_hcom_driver_sec_type *type, char **output, uint32_t *outLen, int *needAutoFree)

ubs_hcom_driver_register_secinfo_validator ​

说明

用户实现的回调函数,内部不能销毁driver及相关的资源。

函数定义

给HcomDriver对象设置EP安全信息校验函数。

实现方法

uintptr_t ubs_hcom_driver_register_secinfo_validator(ubs_hcom_driver driver, ubs_hcom_secinfo_validator validator)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
driverubs_hcom_driver入参ubs_hcom_driver对象。
validatorubs_hcom_secinfo_validator入参安全信息校验函数。

返回值

内部回调函数地址。

说明

数据类型解释如下: typedef int (*ubs_hcom_secinfo_validator)(uint64_t ctx, int64_t flag, const char *input, uint32_t inputLen)

ubs_hcom_driver_unregister_ep_handler ​

函数定义

从全局回调函数句柄管理器中去掉某一个回调函数句柄。

实现方法

void ubs_hcom_driver_unregister_ep_handler(ubs_hcom_ep_handler_type t, uintptr_t handle)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
tubs_hcom_ep_handler_type入参回调函数类型。0:新建链回调函数1:断链回调函数
handleuintptr_t入参回调函数句柄。

返回值

无

ubs_hcom_driver_unregister_op_handler ​

函数定义

从全局回调函数句柄管理器中去掉某一个回调函数句柄。

实现方法

void ubs_hcom_driver_unregister_op_handler(ubs_hcom_op_handler_type t, uintptr_t handle)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
tubs_hcom_op_handler_type入参回调函数类型。0:接收消息回调函数1:消息发送回调函数2:单边操作完成回调函数
handleuintptr_t入参回调函数句柄。

返回值

无

ubs_hcom_driver_unregister_idle_handler ​

函数定义

从全局回调函数句柄管理器中去掉某一个回调函数句柄。

实现方法

void ubs_hcom_driver_unregister_idle_handler(uintptr_t handle)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
handleuintptr_t入参回调函数句柄。

返回值

无

ubs_hcom_driver_create_memory_region ​

函数定义

通过HcomDriver对象来创建一个Memory region。

实现方法

int ubs_hcom_driver_create_memory_region(ubs_hcom_driver driver, uint64_t size, ubs_hcom_memory_region *mr)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
driverubs_hcom_driver入参ubs_hcom_driver对象。
sizeuint64_t入参MR的大小。范围为(0, 107374182400]。
mrubs_hcom_memory_region出参创建的MR。

返回值

返回0为成功。

ubs_hcom_driver_create_assign_memory_region ​

函数定义

通过HcomDriver对象来创建一个Memory region。

实现方法

int ubs_hcom_driver_create_assign_memory_region(ubs_hcom_driver driver, uintptr_t address, uint64_t size, ubs_hcom_memory_region *mr)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
driverubs_hcom_driver入参ubs_hcom_driver对象。
addressuintptr_t入参内存地址。
sizeuint64_t入参内存的大小。
mrubs_hcom_memory_region出参创建的MR。

返回值

返回0为成功。

ubs_hcom_driver_destroy_memory_region ​

函数定义

通过HcomDriver对象来销毁一个Memory region。

实现方法

void ubs_hcom_driver_destroy_memory_region(ubs_hcom_driver driver, ubs_hcom_memory_region mr)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
driverubs_hcom_driver入参ubs_hcom_driver对象。
mrubs_hcom_memory_region入参需要销毁的MR。

返回值

无

ubs_hcom_driver_get_memory_region_info ​

函数定义

获取一个MR的信息。

实现方法

int ubs_hcom_driver_get_memory_region_info(ubs_hcom_memory_region mr, ubs_hcom_memory_region_info *info)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
mrubs_hcom_memory_region入参创建的MR。
infoubs_hcom_memory_region_info出参MR相关的信息。

返回值

返回0为成功。

ubs_hcom_ep_set_context ​

函数定义

给EP设置本端回调函数可使用的ctx。

实现方法

void ubs_hcom_ep_set_context(ubs_hcom_endpoint ep, uint64_t ctx)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
epubs_hcom_endpoint入参EndPoint。
ctxuint64_t入参设置的context。

返回值

无

ubs_hcom_ep_get_context ​

函数定义

获得EP的ctx。

实现方法

uint64_t ubs_hcom_ep_get_context(ubs_hcom_endpoint ep)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
epubs_hcom_endpoint入参EndPoint。

返回值

EP的context。

ubs_hcom_ep_get_worker_idx ​

函数定义

获取EP所在的worker group的worker索引。

实现方法

uint16_t ubs_hcom_ep_get_worker_idx(ubs_hcom_endpoint ep)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
epubs_hcom_endpoint入参EndPoint。

返回值

返回worker group的worker索引。

ubs_hcom_ep_get_workergroup_idx ​

函数定义

获取EP所在的worker group索引。

实现方法

uint8_t ubs_hcom_ep_get_workergroup_idx(ubs_hcom_endpoint ep)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
epubs_hcom_endpoint入参EndPoint。

返回值

返回worker group索引。

ubs_hcom_ep_get_listen_port ​

函数定义

获取EP建链时所监听的端口号。

实现方法

uint32_t ubs_hcom_ep_get_listen_port(ubs_hcom_endpoint ep)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
epubs_hcom_endpoint入参EndPoint。

返回值

返回端口号。

ubs_hcom_ep_version ​

函数定义

获取EP的版本。

实现方法

uint8_t ubs_hcom_ep_version(ubs_hcom_endpoint ep)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
epubs_hcom_endpoint入参EndPoint。

返回值

返回EP的版本。

ubs_hcom_ep_set_timeout ​

函数定义

设置EP的超时时间。

实现方法

void ubs_hcom_ep_set_timeout(ubs_hcom_endpoint ep, int32_t timeout)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
epubs_hcom_endpoint入参EndPoint。
timeoutint32_t入参超时时间,单位是秒。0为立刻超时,负数为永不超时。

返回值

无

ubs_hcom_ep_post_send ​

函数定义

向对端发送一个带有op信息的请求。

实现方法

int ubs_hcom_ep_post_send(ubs_hcom_endpoint ep, uint16_t opcode, ubs_hcom_send_request *req)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
epubs_hcom_endpoint入参建链创建好的EP对象。
opcodeuint16_t入参操作码,取值范围[0, 1023]。
*requbs_hcom_send_request入参发送请求信息,使用本地内存来存储数据,数据会被复制,调用后可释放本地内存。

返回值

返回值为0则表示发送成功。

ubs_hcom_ep_post_send_with_opinfo ​

函数定义

使用EP发送PostSend消息,带有opInfo。

实现方法

int ubs_hcom_ep_post_send_with_opinfo(ubs_hcom_endpoint ep, uint16_t opcode, Hcom_SendRequest *req, ubs_hcom_opinfo *opInfo)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
epubs_hcom_endpoint入参EndPoint。
opcodeuint16_t入参操作编号。
requbs_hcom_send_request入参需要发送的消息。
opInfoubs_hcom_opinfo入参操作信息。

返回值

返回0为成功。

ubs_hcom_ep_post_send_with_seqno ​

函数定义

使用EP发送PostSend消息,带有seqNo。

实现方法

int ubs_hcom_ep_post_send_with_seqno(ubs_hcom_endpoint ep, uint16_t opcode, ubs_hcom_send_request *req, uint32_t replySeqNo)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
epubs_hcom_endpoint入参EndPoint。
opcodeuint16_t入参操作编号。
requbs_hcom_send_request入参需要发送的消息。
replySeqNouint32_t入参序列号。

返回值

返回0为成功。

ubs_hcom_ep_post_read ​

函数定义

向对端发送一个读请求。

实现方法

int ubs_hcom_ep_post_read(ubs_hcom_endpoint ep, ubs_hcom_readwrite_request *req)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
epubs_hcom_endpoint入参建链创建好的EP对象。
*requbs_hcom_readwrite_request入参读请求信息。

返回值

返回值为0则表示读成功。

ubs_hcom_ep_post_write ​

函数定义

向对端发送一个写请求。

实现方法

int ubs_hcom_ep_post_write(ubs_hcom_endpoint ep, ubs_hcom_readwrite_request *req)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
epubs_hcom_endpoint入参建链创建好的EP对象。
*requbs_hcom_readwrite_request入参写请求信息。

返回值

返回值为0则表示写成功。

ubs_hcom_ep_wait_completion ​

函数定义

等待send,read,write消息完成,只有在EP是NET_EP_SELF_POLLING时生效。

实现方法

int ubs_hcom_ep_wait_completion(ubs_hcom_endpoint ep, int32_t timeout)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
epubs_hcom_endpoint入参EndPoint。
timeoutint32_t入参超时时间,单位是秒。0为立刻超时,负数为永不超时。

返回值

返回值为0则表示成功。

ubs_hcom_ep_receive ​

函数定义

接收对端发送过来的消息。

实现方法

int ubs_hcom_ep_receive(ubs_hcom_endpoint ep, int32_t timeout, ubs_hcom_response_context **ctx)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
epubs_hcom_endpoint入参EndPoint。
timeoutint32_t入参超时时间,单位是秒。0为立刻超时,负数为永不超时。
ctxubs_hcom_response_context出参接收到的消息。

返回值

返回值为0则表示成功。

ubs_hcom_ep_refer ​

函数定义

给EP增加一次引用。

实现方法

void ubs_hcom_ep_refer(ubs_hcom_endpoint ep)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
epubs_hcom_endpoint入参EndPoint。

返回值

无

ubs_hcom_ep_close ​

说明

如果用户实现中需要主动销毁EP,要先调用ubs_hcom_ep_close接口;如果需要减少EP的引用计数,可调用ubs_hcom_ep_destroy函数。

函数定义

关闭EP。

实现方法

void ubs_hcom_ep_close(ubs_hcom_endpoint ep)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
epubs_hcom_endpoint入参EndPoint。

返回值

无

ubs_hcom_ep_destroy ​

说明

如果用户实现中需要主动销毁EP,要先调用ubs_hcom_ep_close接口;如果需要减少EP的引用计数,可调用ubs_hcom_ep_destroy函数。

函数定义

销毁EP。

实现方法

void ubs_hcom_ep_destroy(ubs_hcom_endpoint ep)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
epubs_hcom_endpoint入参EndPoint。

返回值

无

ubs_hcom_err_str ​

函数定义

得到errorCode的解释。

实现方法

const char *ubs_hcom_err_str(int16_t errCode)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
errCodeint16_t入参需要翻译的错误码。

返回值

返回错误码翻译。

ubs_hcom_mem_allocator_create ​

函数定义

创建一个内存分配器。

实现方法

int ubs_hcom_mem_allocator_create(ubs_hcom_memory_allocator_type t, ubs_hcom_memory_allocator_options *options, ubs_hcom_memory_allocator *allocator)

参数说明`

表 1 参数说明

参数名数据类型参数类型描述
tubs_hcom_memory_allocator_type入参分配器类型。0:动态大小1:动态大小和缓存
optionsubs_hcom_memory_allocator_options入参分配器参数。
outubs_hcom_memory_allocator出参创建的分配器指针。

返回值

返回值为0则表示成功。

ubs_hcom_mem_allocator_destroy ​

函数定义

销毁一个内存分配器。

实现方法

int ubs_hcom_mem_allocator_destroy(ubs_hcom_memory_allocator allocator)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
allocatorubs_hcom_memory_allocator入参需要销毁的内存分配器。

返回值

返回值为0则表示成功。

ubs_hcom_mem_allocator_set_mr_key ​

函数定义

给分配器设置memory region key。

实现方法

int ubs_hcom_mem_allocator_set_mr_key(ubs_hcom_memory_allocator allocator, uint32_t mrKey)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
allocatorubs_hcom_memory_allocator入参需要被设置的内存分配器。
mrKeyuint32_t入参memory region key。范围值(0, UINT32_MAX]。

返回值

返回值为0则表示成功。

ubs_hcom_mem_allocator_get_offset ​

函数定义

得到地址在分配器内存的偏移值。

实现方法

int ubs_hcom_mem_allocator_get_offset(ubs_hcom_memory_allocator allocator, uintptr_t address, uintptr_t *offset)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
allocatorubs_hcom_memory_allocator入参内存分配器。
addressuintptr_t入参内存地址。
offsetuintptr_t出参偏移值。

返回值

返回0为成功。

ubs_hcom_mem_allocator_get_free_size ​

函数定义

得到分配器剩余的内存大小。

实现方法

int ubs_hcom_mem_allocator_get_free_size(ubs_hcom_memory_allocator allocator, uintptr_t *size)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
allocatorubs_hcom_memory_allocator入参内存分配器。
sizeuintptr_t出参剩余的内存大小。

返回值

返回0为成功。

ubs_hcom_mem_allocator_allocate ​

函数定义

从内存分配器中分配出指定大小的内存。

实现方法

int ubs_hcom_mem_allocator_allocate(ubs_hcom_memory_allocator allocator, uint64_t size, uintptr_t *address, uint32_t *key)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
allocatorubs_hcom_memory_allocator入参内存分配器。
sizeuint64_t入参分配的内存大小。
addressuintptr_t出参分配的内存地址。
keyuint32_t出参MR Key。

返回值

返回值为0则表示成功。

ubs_hcom_mem_allocator_free ​

函数定义

将从内存分配器中分配的内存释放给分配器。

实现方法

int ubs_hcom_mem_allocator_free(ubs_hcom_memory_allocator allocator, uintptr_t address)

说明

使用时防止相同address多次调用该函数。

参数说明

表 1 参数说明

参数名数据类型参数类型描述
allocatorubs_hcom_memory_allocator入参内存分配器。
addressuintptr_t入参需要释放的内存地址。

返回值

返回值为0则表示成功。

ubs_hcom_set_log_handler ​

函数定义

设置外部日志。

实现方法

void ubs_hcom_set_log_handler(ubs_hcom_log_handler h)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
hubs_hcom_log_handler入参外部日志函数。

返回值

无

说明

数据类型解释如下: typedef void (*ubs_hcom_log_handler)(int level, const char *msg)

ubs_hcom_check_local_supporr ​

函数定义

校验本机是否支持所提供协议,若为RDMA协议且支持的情况下,会返回设备信息。

实现方法

int ubs_hcom_check_local_supporr(ubs_hcom_driver_type t, ubs_hcom_device_info *info)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
tubs_hcom_driver_type入参需要校验的协议。
infoubs_hcom_device_info出参RDMA设备信息,最大的SGL的iov count。

返回值

返回值为1则表示支持此协议。

ubs_hcom_get_remote_uds_info ​

函数定义

仅支持服务端且OOB type为UDS时,查询此EP的对端UDS ID信息。

实现方法

int ubs_hcom_get_remote_uds_info(ubs_hcom_endpoint ep, ubs_hcom_uds_id_info *idInfo)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
epubs_hcom_endpoint入参EndPoint。
idInfoubs_hcom_uds_id_info出参对端UDS ID信息。

返回值

返回值为0则表示成功。

高级API参考 ​

C++API ​

服务层 ​

UBSHcomService::AddWorkerGroup ​

函数定义

向Service中增加内存池。

实现说明

void UBSHcomService::AddWorkerGroup(uint16_t workerGroupId, uint32_t threadCount,const std::pair<uint32_t, uint32_t> &cpuIdsRange, int8_t priority = 0, uint16_t multirailIdx = 0);

参数说明

表 1 参数说明

参数名数据类型参数类型描述
workerGroupIduint16_t入参增加的workerGroup的编号ID,用于标识不同的workerGroup。
threadCountuint32_t入参该workerGroup中的线程数。
cpuIdsRangeconst std::pair<uint32_t, uint32_t>入参该workerGroup绑定的cpu范围,如{0, 10}表示绑定在0到10号CPU上。
priorityint8_t入参线程优先级,同线程nice值,范围[-20, 19],取值越大优先级越低。
multirailIdxuint16_t入参该workerGroup绑定的MultiRail索引序号。

返回值

无

UBSHcomService::AddListener ​

函数定义

向Service中增加listener。

实现说明

void UBSHcomService::AddListener(const std::string &url, uint16_t workerCount = UINT16_MAX);

参数说明

表 1 参数说明

参数名数据类型参数类型描述
urlconst std::string入参增加的listener监听的url,同bind。
workerCountuint16_t入参从workerGroup中选取workerCount个线程,与该url建立的连接请求通过这workerCount个线程去处理。

返回值

无

UBSHcomService::SetConnectLBPolicy ​

函数定义

设置建链负载均衡策略

实现说明

void UBSHcomService::SetConnectLBPolicy(UBSHcomServiceLBPolicy lbPolicy)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
lbPolicyUBSHcomNetDriverLBPolicy入参建链时,设置Worker的负载均衡模式。NET_ROUND_ROBIN = 0NET_HASH_IP_PORT = 1

返回值

无

UBSHcomService::SetUBSHcomTlsOptions ​

函数定义

设置TLS可选配置项。

实现说明

void UBSHcomService::SetUBSHcomTlsOptions(const UBSHcomTlsOptions &opt);

参数说明

表 1 参数说明

参数名数据类型参数类型描述
optUBSHcomTlsOptions入参TLS可选配置项。

说明

使用UB自举建链时,暂不支持安全认证和安全加密。

返回值

无

UBSHcomService::SetConnSecureOpt ​

函数定义

链接安全配置项

实现说明

void UBSHcomService::SetConnSecureOpt(const UBSHcomConnSecureOptions &opt);

参数说明

表 1 参数说明

参数名数据类型参数类型描述
optconst UBSHcomConnSecureOptions &入参链接安全可选配置项。

返回值

无

UBSHcomService::SetTcpUserTimeOutSec ​

函数定义

设置TCP套接字选项TCP_USER_TIMEOUT。

实现说明

void UBSHcomService::SetTcpUserTimeOutSec(uint16_t timeOutSec);

参数说明

表 1 参数说明

参数名数据类型参数类型描述
timeOutSecuint16_t入参对应TCP_USER_TIMEOUT套接字选项,范围[0, 1024],0表示永不超时。

返回值

无

UBSHcomService::SetTcpSendZCopy ​

函数定义

设置TCP发送是否要做内存拷贝。

实现说明

void UBSHcomService::SetTcpSendZCopy(bool tcpSendZCopy);

参数说明

表 1 参数说明

参数名数据类型参数类型描述
tcpSendZCopybool入参true:开启ZCopyfalse:关闭ZCopy

返回值

无

UBSHcomService::SetDeviceIpMask ​

函数定义

设置设备ipMask,用于rdma/ub。

实现说明

void UBSHcomService::SetDeviceIpMask(const std::vector<std::string> &ipMasks);

参数说明

表 1 参数说明

参数名数据类型参数类型描述
ipMasksconst std::vector<std::string>入参用于过滤的ipMask集合。

返回值

无

UBSHcomService::SetDeviceIpGroups ​

函数定义

设置设备ipGroup。

实现说明

void UBSHcomService::SetDeviceIpGroups(const std::vector<std::string> &ipGroups);

参数说明

表 1 参数说明

参数名数据类型参数类型描述
ipGroupsconst std::vector<std::string>入参设备的ipGroups集合。

返回值

无

UBSHcomService::SetCompletionQueueDepth ​

函数定义

设置cq队列深度。

实现说明

void UBSHcomService::SetCompletionQueueDepth(uint16_t depth);

参数说明

表 1 参数说明

参数名数据类型参数类型描述
depthuint16_t入参完成队列深度。

返回值

无

UBSHcomService::SetSendQueueSize ​

函数定义

设置发送队列深度。

实现说明

void UBSHcomService::SetSendQueueSize(uint32_t sqSize);

参数说明

表 1 参数说明

参数名数据类型参数类型描述
sqSizeuint32_t入参发送队列深度。

返回值

无

UBSHcomService::SetRecvQueueSize ​

函数定义

设置接收队列深度。

实现说明

void UBSHcomService::SetRecvQueueSize(uint32_t rqSize);

参数说明

表 1 参数说明

参数名数据类型参数类型描述
rqSizeuint32_t入参接收队列深度。

返回值

无

UBSHcomService::SetPollingBatchSize ​

函数定义

设置批量polling的大小。

实现说明

void UBSHcomService::SetPollingBatchSize(uint16_t pollSize);

参数说明

表 1 参数说明

参数名数据类型参数类型描述
pollSizeuint16_t入参批量polling的大小。

返回值

无

UBSHcomService::SetEventPollingTimeOutUs ​

函数定义

设置event polling的超时时间。

实现说明

void UBSHcomService::SetEventPollingTimeOutUs(uint16_t pollTimeout);

参数说明

表 1 参数说明

参数名数据类型参数类型描述
pollTimeoutuint16_t入参event polling超时时间。

返回值

无

UBSHcomService::SetTimeOutDetectionThreadNum ​

函数定义

设置周期任务处理线程数。

实现说明

void UBSHcomService::SetTimeOutDetectionThreadNum(uint32_t threadNum);

参数说明

表 1 参数说明

参数名数据类型参数类型描述
threadNumuint32_t入参周期任务处理线程数。

返回值

无

UBSHcomService::SetMaxConnectionCount ​

函数定义

设置最大链接数。

实现说明

void UBSHcomService::SetMaxConnectionCount(uint32_t maxConnCount);

参数说明

表 1 参数说明

参数名数据类型参数类型描述
maxConnCountuint32_t入参最大链接数。

返回值

无

UBSHcomService::SetUBSHcomHeartBeatOptions ​

函数定义

设置心跳参数配置项。

实现说明

void UBSHcomService::SetUBSHcomHeartBeatOptions(const UBSHcomHeartBeatOptions &opt);

参数说明

表 1 参数说明

参数名数据类型参数类型描述
optUBSHcomHeartBeatOptions入参心跳可选参数项。

返回值

无

UBSHcomService::SetUBSHcomMultiRailOptions ​

函数定义

设置多路径参数配置项。

实现说明

void UBSHcomService::SetUBSHcomMultiRailOptions(const UBSHcomMultiRailOptions &opt);

参数说明

表 1 参数说明

参数名数据类型参数类型描述
optUBSHcomMultiRailOptions入参多路径参数配置项。

返回值

无

UBSHcomService::SetQueuePrePostSize ​

函数定义

设置提前下发wr的数量,不设置的话默认64。

实现说明

void UBSHcomService::SetQueuePrePostSize(uint32_t prePostSize);

参数说明

表 1 参数说明

参数名数据类型参数类型描述
prePostSizeuint32_t入参预先下发的wr数量。

返回值

无

UBSHcomService::SetMaxSendRecvDataCount ​

函数定义

设置发送数据块最大数量,不设置的话默认8192。

实现说明

void SetMaxSendRecvDataCount(uint32_t maxSendRecvDataCount);

参数说明

表 1 参数说明

参数名数据类型参数类型描述
maxSendRecvDataCountuint32_t入参发送数据块最大数量。

返回值

无

UBSHcomRegMemoryRegion::GetMemoryKey ​

函数定义

获得所有内存池的keys。

实现说明

void UBSHcomRegMemoryRegion::GetMemoryKey(UBSHcomMemoryKey &mrKey);

参数说明

表 1 参数说明

参数名数据类型参数类型描述
mrKeyUBSHcomMemoryKey出参内存池的keys。

返回值

无

UBSHcomRegMemoryRegion::GetAddress ​

函数定义

获得首个内存池地址。

实现说明

uintptr_t UBSHcomRegMemoryRegion::GetAddress();

参数说明

无

返回值

地址值。

UBSHcomRegMemoryRegion::GetSize ​

函数定义

获得首个内存池长度。

实现说明

uint64_t UBSHcomRegMemoryRegion::GetSize();

参数说明

无

返回值

内存池的长度。

UBSHcomRegMemoryRegion::GetHcomMrs ​

函数定义

获得内存池组。

实现说明

std::vector<UBSHcomMemoryRegionPtr>& UBSHcomRegMemoryRegion::GetHcomMrs();

参数说明

无

返回值

返回std::vector<UBSHcomMemoryRegionPtr>类型的数组。

UBSHcomNewCallback ​

函数定义

创建Callback函数。

实现说明

template <typename... Args> Callback *UBSHcomNewCallback(Args... args);

参数说明

表 1 参数说明

参数名数据类型参数类型描述
argsArgs入参回调函数入参。

返回值

返回Callback *函数。

传输层 ​

UBSHcomNetDriver::RegisterTLSCaCallback ​
接口使用方法 ​

函数定义

注册建链双向认证的回调函数,用于获取CA证书。

实现方法

void UBSHcomNetDriver::RegisterTLSCaCallback(const UBSHcomTLSCaCallback &cb);

参数说明

表 1 参数说明

参数名数据类型参数类型描述
cbUBSHcomTLSCaCallback入参获取CA证书的回调函数。

返回值

无

代码样例

xml
int Verify(void *x509, const char *path)
{
    return 0;
}

bool CACallback(const std::string &name, std::string &caPath, std::string &crlPath,
    UBSHcomPeerCertVerifyType &peerCertVerifyType, UBSHcomTLSCertVerifyCallback &cb)
{
    caPath = certPath + "/CA/cacert.pem";
    cb = std::bind(&Verify, std::placeholders::_1, std::placeholders::_2);
    return true;
}
xml
driver->RegisterTLSCaCallback(std::bind(&CACallback, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3, std::placeholders::_4, std::placeholders::_5));
UBSHcomTLSCaCallback函数类型 ​

函数定义

using UBSHcomTLSCaCallback = std::function<bool(const std::string &name, std::string &capath, std::string &crlPath, UBSHcomPeerCertVerifyType &verifyPeerCert, UBSHcomTLSCertVerifyCallback &cb)>;

参数说明

表 1 参数说明

参数名数据类型参数类型描述
nameString入参句柄名字。
capathString出参提供的CA证书路径。
crlPathString出参提供的吊销列表路径。
verifyPeerCertUBSHcomPeerCertVerifyType出参证书校验方式:VERIFY_BY_NONE:不验证对方证书。VERIFY_BY_DEFAULT:用UBS Comm默认的方式校验证书。VERIFY_BY_CUSTOM_FUNC:用自定义的函数校验证书。
cbUBSHcomTLSCertVerifyCallback出参证书校验函数,当verifyPeerCert值为VERIFY_BY_CUSTOM_FUNC的时候设置。

返回值

Bool类型,表示回调函数是否执行成功。

  • 返回值为true:表示成功。
  • 返回值为false:表示失败。

代码样例

xml
bool CACallback(const std::string &name, std::string &caPath, std::string &crlPath,
    UBSHcomPeerCertVerifyType &peerCertVerifyType, UBSHcomTLSCertVerifyCallback &cb)
{
    caPath = certPath + "/CA/cacert.pem";
    cb = std::bind(&Verify, std::placeholders::_1, std::placeholders::_2);
    return true;
}
UBSHcomTLSCertVerifyCallback函数类型 ​

函数定义

using UBSHcomTLSCertVerifyCallback = std::function<int(void *, const char *)>;

参数说明

表 1 参数说明

参数名数据类型参数类型描述
-void*入参加载之后的证书。

返回值

表示函数执行结果,返回值为0表示证书验证成功。

UBSHcomNetDriver::RegisterTLSCertificationCallback ​
接口使用方法 ​

函数定义

注册建链双向认证的回调函数,用于获取公钥证书。

实现方法

void UBSHcomNetDriver::RegisterTLSCertificationCallback(const UBSHcomTLSCertificationCallback &cb);

参数说明

表 1 参数说明

参数名数据类型参数类型描述
cbUBSHcomTLSCertificationCallback入参获取公钥的回调函数。

返回值

无

代码样例

xml
bool CertCallback(const std::string &name, std::string &value)
{
    value = certPath + "/client/cert.pem";
    return true;
}
xml
driver->RegisterTLSCertificationCallback( std::bind(&CertCallback, std::placeholders::_1, std::placeholders::_2));
UBSHcomTLSCertificationCallback函数类型 ​

函数定义

using UBSHcomTLSCertificationCallback = std::function<bool(const std::string &name, std::string &path)>;

参数说明

表 1 参数说明

参数名数据类型参数类型描述
nameString入参句柄名字。
pathString出参提供的公钥证书路径。

返回值

Bool类型,表示回调函数是否执行成功。

  • 返回值为true:表示成功。
  • 返回值为false:表示失败。

代码样例

xml
bool CertCallback(const std::string &name, std::string &value)
{
    value = certPath + "/client/cert.pem";
    return true;
}
UBSHcomNetDriver::RegisterTLSPrivateKeyCallback ​
接口使用方法 ​

函数定义

注册建链双向认证的回调函数,用户获取私钥证书。

实现方法

void UBSHcomNetDriver::RegisterTLSPrivateKeyCallback(const UBSHcomTLSPrivateKeyCallback &cb);

参数说明

表 1 参数说明

参数名数据类型参数类型描述
cbUBSHcomTLSPrivateKeyCallback入参私钥回调函数。

返回值

无

代码样例

xml
void Erase(void *pass, int len) {}

bool PrivateKeyCallback(const std::string &name, std::string &value, void *&keyPass, int &len, UBSHcomTLSEraseKeypass &erase)
{
    static char content[] = "xxxx";
    keyPass = reinterpret_cast<void *>(content);
    len = sizeof(content);
    value = certPath + "/client/key.pem";
    erase = std::bind(&Erase, std::placeholders::_1, std::placeholders::_2);
    return true;
}
xml
driver->RegisterTLSPrivateKeyCallback(std::bind(&PrivateKeyCallback, std::placeholders::_1,  std::placeholders::_2, std::placeholders::_3, std::placeholders::_4, std::placeholders::_5));
UBSHcomTLSPrivateKeyCallback函数类型 ​

函数定义

using UBSHcomTLSPrivateKeyCallback = std::function<bool(const std::string &name, std::string &path, void *&password, int &length, UBSHcomTLSEraseKeypass &erase)>;

参数说明

表 1 参数说明

参数名数据类型参数类型描述
nameString入参句柄名字。
pathString出参提供的私钥证书路径。
passwordvoid*出参私钥加载的明文密码。
lengthint出参私钥加载的密码长度。
eraseUBSHcomTLSEraseKeypass出参擦除私钥密码的回调函数,当加载完私钥的时候调用。

返回值

Bool类型,表示回调函数是否执行成功。

  • 返回值为true表示成功。
  • 返回值为false表示失败。

代码样例

xml
void Erase(void *pass, int len) {}

bool PrivateKeyCallback(const std::string &name, std::string &value, void *&keyPass, int &len, UBSHcomTLSEraseKeypass &erase)
{
    static char content[] = "xxxx";
    keyPass = reinterpret_cast<void *>(content);
    len = sizeof(content);
    value = certPath + "/client/key.pem";
    erase = std::bind(&Erase, std::placeholders::_1, std::placeholders::_2);
    return true;
}
UBSHcomTLSEraseKeypass函数类型 ​

函数定义

using UBSHcomTLSEraseKeypass = std::function<void(void *, int)>;

参数说明

表 1 参数说明

参数名数据类型参数类型描述
passwordvoid*出参私钥加载的明文密码。
lengthint出参私钥加载的密码长度。

返回值

无

UBSHcomNetDriver::RegisterPskUseSessionCb ​
接口使用方法 ​

函数定义

供Client端注册PSK回调函数。

实现方法

void UBSHcomNetDriver::RegisterPskUseSessionCb(const UBSHcomPskUseSessionCb &cb)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
cbUBSHcomPskUseSessionCb入参预共享密钥回调函数。

返回值

无。

UBSHcomPskUseSessionCb函数类型 ​

函数定义

using UBSHcomPskUseSessionCb = std::function<int(void *ssl, const void *md, const unsigned char **id, size_t *idlen, void **sess)>;

参数说明

表 1 参数说明

参数名数据类型参数类型描述
sslvoid*入参SSL连接对象。
mdvoid*入参摘要算法。
idchar *出参预共享密钥身份标识。
idlensize_t出参预共享密钥身份标识长度。
sessvoid*出参SSL会话对象。

返回值

int类型。

  • 1:表示回调函数执行成功。
  • 0:表示回调函数执行失败。
UBSHcomNetDriver::RegisterPskFindSessionCb ​
接口使用方法 ​

函数定义

供Server端注册PSK回调函数。

实现方法

void UBSHcomNetDriver::RegisterPskFindSessionCb(const UBSHcomPskFindSessionCb &cb)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
cbUBSHcomPskFindSessionCb入参预共享密钥回调函数。

返回值

无。

UBSHcomPskFindSessionCb函数类型 ​

函数定义

using UBSHcomPskFindSessionCb = std::function<int(void *ssl, const unsigned char *identity, size_t identity_len, void **sess)>;

参数说明

表 1 参数说明

参数名数据类型参数类型描述
sslvoid*入参SSL连接对象。
identitychar *入参预共享密钥身份标识。
identity_lensize_t入参预共享密钥身份标识长度。
sessvoid*出参SSL会话对象。

返回值

int类型,1表示回调函数执行成功,0表示执行失败。

UBSHcomNetDriver::RegisterEndpointSecInfoProvider ​

函数定义

给UBSHcomNetDriver对象设置EP安全信息提供函数。

实现方法

void UBSHcomNetDriver::RegisterEndpointSecInfoProvider(const UBSHcomNetDriverEndpointSecInfoProvider &provider)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
providerUBSHcomNetDriverEndpointSecInfoProvider入参安全信息提供函数。

返回值

无

说明

数据类型解释如下: using UBSHcomNetDriverEndpointSecInfoProvider = std::function<int(uint64_t ctx, int64_t &flag, UBSHcomNetDriverSecType &type, char *&output, uint32_t &outLen, bool &needAutoFree)>; 其中,outLen的有效范围为(0,2147483646]。

UBSHcomNetDriver::RegisterEndpointSecInfoValidator ​

函数定义

给UBSHcomNetDriver对象设置EP安全信息校验函数。

实现方法

void UBSHcomNetDriver::RegisterEndpointSecInfoValidator(const UBSHcomNetDriverEndpointSecInfoValidator &validator)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
validatorUBSHcomNetDriverEndpointSecInfoValidator入参安全信息校验函数。

返回值

无

说明

数据类型解释如下: using UBSHcomNetDriverEndpointSecInfoValidator = std::function<int(uint64_t ctx, int64_t flag, const char *input, uint32_t inputLen)>;

UBSHcomNetEndpoint::PostSendRawSgl ​

函数定义

发送一个不带opcode和header的请求给对方,对方将触发新的请求回调,也不带opcode和header,当客户有自己定义的header时可以使用。

实现方法

NResult UBSHcomNetEndpoint::PostSendRawSgl(const UBSHcomNetTransSglRequest &request,uint32_t seqNo)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
requestUBSHcomNetTransSglRequest入参请求信息,填入本地注册MR,按本地MR顺序发送到同一个远端MR,调用后即可释放,rKey/rAddress不需要赋值。
seqNouint32_t入参对方要回复的seqNo必须大于0,对方可以从context.Header().seqNo中获取它。如果seqNo为0,则生成自动递增的数字。在同步发送消息的情况下,请求和响应的seqNo相等。

返回值

返回值为0则表示发送消息成功。

说明

  • 如果NET_EP_SELF_POLLING未设置,则只发出发送请求,不等待发送请求完成情况。
  • 如果NET_EP_SELF_POLLING设置,则发出发送请求并等待发送到达对端。
UBSHcomNetEndpoint::ReceiveRaw ​

函数定义

获得发送请求应答的响应,不包含header和opCode,默认超时生效。

实现方法

NResult UBSHcomNetEndpoint::ReceiveRaw(UBSHcomNetResponseContext &ctx)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
ctxUBSHcomNetResponseContext出参响应消息的ctx。

返回值

返回值为0则表示发送消息成功。

UBSHcomNetEndpoint::EstimatedEncryptLen ​

函数定义

输入原始数据大小的估计加密长度。

实现方法

uint64_t UBSHcomNetEndpoint::EstimatedEncryptLen(uint64_t rawLen)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
rawLenuint64_t入参原始数据长度。范围是(0, 18446744073709551571]。

返回值

返回uint64_t类型,表示数据加密长度。

UBSHcomNetEndpoint::Encrypt ​

函数定义

加密数据。

实现方法

NResult UBSHcomNetEndpoint::Encrypt(const void *rawData, uint64_t rawLen, void *cipher, uint64_t &cipherLen)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
rawDatavoid *入参原始数据地址。
rawLenuint64_t入参原始数据长度。
ciphervoid *出参加密后数据地址。
cipherLenuint64_t出参加密后数据长度。

返回值

返回值为0则表示加密成功。

UBSHcomNetEndpoint::EstimatedDecryptLen ​

函数定义

输出原始数据大小。

实现方法

uint64_t UBSHcomNetEndpoint::EstimatedDecryptLen(uint64_t cipherLen)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
cipherLenuint64_t入参加密后的数据长度。

返回值

返回uint64_t类型,表示解密后的原始数据长度。

UBSHcomNetEndpoint::Decrypt ​

函数定义

解密数据。

实现方法

NResult UBSHcomNetEndpoint::Decrypt(const void * cipher, uint64_t cipherLen, void *rawData, uint64_t &rawLen)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
ciphervoid *入参待解密的数据地址。
cipherLenuint64_t入参待解密的数据长度。
rawDatavoid *出参解密后,原始数据地址。
rawLenuint64_t出参解密后,原始数据长度。

返回值

返回值为0则表示解密成功。

UBSHcomNetEndpoint::SendFds ​

函数定义

发送共享文件的句柄,该接口只支持在SHM协议下使用。

实现方法

NResult UBSHcomNetEndpoint::SendFds(int fds[], uint32_t len)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
fdsint[]入参需要发送的句柄数组。
lenuint32_t入参发送的句柄数量。范围是[1, 4]。

返回值

返回值为0则表示句柄发送成功。

UBSHcomNetEndpoint::ReceiveFds ​

函数定义

接收共享文件的句柄,该接口只支持在SHM协议下使用。

实现方法

NResult UBSHcomNetEndpoint::ReceiveFds(int fds[], uint32_t len)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
fdsint[]入参需要接收的句柄数组。
lenuint32_t入参接收的句柄数量。范围是[1, 4]。

返回值

返回值为0则表示句柄发送成功。

UBSHcomNetOutLogger::Instance ​

函数定义

创建外部日志对象。

实现方法

static UBSHcomNetOutLogger *UBSHcomNetOutLogger::Instance()

参数说明

无

返回值

返回外部日志导入对象。

UBSHcomNetOutLogger::SetLogLevel ​

函数定义

  • 设置外部日志对象日志等级,设置为环境变量HCOM_SET_LOG_LEVEL。

  • 设置外部日志对象日志等级,大于等于此等级的日志将被打印。

    日志等级如下:

    • 0:debug
    • 1:info
    • 2:warn
    • 3:error

实现方法

  • static void UBSHcomNetOutLogger::SetLogLevel()
  • static void UBSHcomNetOutLogger::SetLogLevel(int level)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
levelint入参日志等级。范围是[0, 3]。

返回值

无

UBSHcomNetOutLogger::SetExternalLogFunction ​

函数定义

设置外部日志对象的外部日志函数。

实现方法

void UBSHcomNetOutLogger::SetExternalLogFunction(ExternalLog func)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
funcExternalLog入参外部日志函数。

返回值

无

[!NOTICE]说明

数据类型解释如下: typedef void (*ExternalLog)(int level, const char *msg).

UBSHcomNetOutLogger::Print ​

函数定义

打印日志。

实现方法

static inline void UBSHcomNetOutLogger::Print(int level, const char *msg)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
levelint入参日志等级。范围是[0, 3]。
msgconst char *入参日志内容。

返回值

无

UBSHcomNetOutLogger::Log ​

函数定义

打印日志,如果有外部日志函数,则使用外部日志函数。

实现方法

void UBSHcomNetOutLogger::Log(int level, const std::ostringstream &oss) const

参数说明

表 1 参数说明

参数名数据类型参数类型描述
levelint入参日志等级。范围是[0, 3]。
ossconst std::ostringstream入参日志内容。

返回值

无

UBSHcomNetOutLogger::GetLogLevel ​

函数定义

获取当日志打印等级。

实现方法

int UBSHcomNetOutLogger::GetLogLevel()

参数说明

无

返回值

返回日志等级。

UBSHcomNetAtomicState::Get ​

函数定义

获得原子状态。

实现方法

T Get() const

参数说明

无

返回值

获得原子状态。

UBSHcomNetAtomicState::Set ​

函数定义

设置原子状态。

实现方法

void Set(T newState)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
newStateT入参需要设置的原子状态。

返回值

无

UBSHcomNetAtomicState::CAS ​

函数定义

原子状态比较并交换。

实现方法

bool CAS(T oldState, T newState)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
oldStateT入参旧原子状态。
newStateT入参新原子状态。

返回值

布尔值。检查mState是否等于oldState。如果是,则将其设置为newState,并返回true;否则不做任何修改,返回false。

UBSHcomNetAtomicState::Compare ​

函数定义

原子状态比较。

实现方法

bool Compare(T state)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
stateT入参原子状态。

返回值

布尔值。检查mState是否等于state,如果是返回true;否则返回false。

组播API ​

PublisherService::Create ​

函数定义

创建发布者服务。

实现方法

static PublisherService *Create(const std::string &name, const MulticastServiceOptions &opt = {})

参数说明

表 1 参数说明

参数名数据类型参数类型描述
nameconst std::string入参需要创建的服务名称。
optconst MulticastServiceOptions入参服务创建所需的配置项。

返回值

成功时返回创建好的PublisherService实例,失败时返回空。

PublisherService::Detroy ​

函数定义

销毁发布者服务。

实现方法

static int32_t Destroy(const std::string &name)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
nameconst std::string入参需要销毁的服务名称。

返回值

in32_t。成功时返回0,失败时返回错误码。

PublisherService::Start ​

函数定义

启动发布者服务。

实现方法

int32_t Start()

参数说明

无。

返回值

in32_t。成功时返回0,失败时返回错误码。

PublisherService::Stop ​

函数定义

停止发布者服务。

实现方法

void Stop()

参数说明

无。

返回值

无。

PublisherService::CreatePublisher ​

函数定义

创建发布者publisher。

实现方法

int32_t CreatePublisher(NetRef<Publisher> &publisher)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
pulisherNetRef<Publisher>出参返回创建好的发布者publisher。

返回值

in32_t。成功时返回0,失败时返回错误码。

PublisherService::DestroyPublisher ​

函数定义

销毁发布者publisher。

实现方法

void DestroyPublisher(NetRef<Publisher> &publisher)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
pulisherNetRef<Publisher>入参需要销毁的发布者publisher。

返回值

无。

PublisherService::Bind ​

函数定义

绑定监听url,指定监听的类型及url。

实现方法

int32_t Bind(const std::string &listenerUrl, const NewSubscriptionHandler &handler, const int cpuId = -1)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
listenerUrlconst std::string入参监听url,如:tcp://127.0.0.1:9981。
handlerNewSubscriptionHandler入参收到订阅者建链请求后的回调函数。
cpuIdint入参监听线程绑定的cpuId, 默认不绑核

返回值

in32_t。成功时返回0,失败时返回错误码。

说明

数据类型解释如下: using NewSubscriptionHandler = std::function<int(SubscriptionInfoPtr &info)> using SubscriptionInfoPtr = NetRef<SubscriptionInfo>

PublisherService::GetConfig ​

函数定义

获取MulticastConfig,用于做高级配置。

实现方法

MulticastConfig &GetConfig()

参数说明

无。

返回值

MulticastConfig&。返回MulticastConfig组播配置对象。

PublisherService::RegisterSubscriptionExceptionHandler ​

函数定义

注册SubscriptionException回调函数。

实现方法

void RegisterSubscriptionExceptionHandler(const SubscriptionExceptionHandler &handler)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
handlerconst SubscriptionExceptionHandler入参订阅异常后的回调函数。

返回值

无。

说明

数据类型解释如下: using SubscriptionExceptionHandler = std::function<void(SubscriptionInfo &info)>

PublisherService::RegisterBrokenHandler ​

函数定义

注册Broken断链回调函数。

实现方法

void RegisterBrokenHandler(const MulticastEpBrokenHandler &handler)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
handlerconst MulticastEpBrokenHandler入参断链回调函数。

返回值

无。

说明

数据类型解释如下: using MulticastEpBrokenHandler = std::function<void(const ock::hcom::NetEndpointPtr &ep)>

PublisherService::RegisterSendHandler ​

函数定义

注册发送回调函数。

实现方法

void RegisterSendHandler(const MulticastReqPostedHandler &handler)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
handlerconst MulticastReqPostedHandler入参消息发送后的回调函数。

返回值

无。

说明

数据类型解释如下: using MulticastReqPostedHandler = std::function<int(ock::hcom::NetServiceContext &ctx)>

PublisherService::RegisterPubRecvHandler ​

函数定义

注册发布者接收回调函数。

实现方法

void RegisterPubRecvHandler(const MulticastPubReqRecvHandler &handler)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
handlerconst MulticastPubReqRecvHandler入参发布者接收消息后的回调函数。

返回值

无。

说明

数据类型解释如下: using MulticastPubReqRecvHandler = std::function<int(ock::hcom::PublisherContext &ctx)>

PublisherService::AddWorkerGroup ​

函数定义

添加WorkerGroup配置。

实现方法

void AddWorkerGroup(uint16_t workerGroupId, uint32_t threadCount, const std::pair<uint32_t, uint32_t> &cpuIdsRange, int8_t priority)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
workerGroupIduint16_t入参worker线程中的组ID。
threadCountuint32_t入参线程总数。
cpuIdsRangeconst std::pair<uint32_t, uint32_t>入参指定worker线程CPU范围。
priorityint8_t入参线程优先级。范围:[-20, 19]。

返回值

无。

PublisherService::RegisterMemoryRegion ​

函数定义

  • 注册一个内存区域,内存将在组播内部分配。
  • 将用户申请的内存,注册到组播内部。

实现方法

  • SerResult RegisterMemoryRegion(uint64_t size, NetMemoryRegionPtr &mr)
  • SerResult RegisterMemoryRegion(uintptr_t address, uint64_t size, NetMemoryRegionPtr &mr)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
addressuintptr_t入参如果有此参数,则是外部申请的内存。
sizeuint64_t入参需要注册的内存大小,单位byte。
mrNetMemoryRegionPtr出参内存区域结构,包含key、名字、大小、buf等字段。

返回值

表示函数执行结果,返回值为0则表示注册成功。

PublisherService::DestroyMemoryRegion ​

函数定义

销毁内存区域。

实现方法

void DestroyMemoryRegion(NetMemoryRegionPtr &mr)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
mrNetMemoryRegionPtr入参需要销毁的内存区域。

返回值

无。

Publisher::Call ​

函数定义

发布双边消息,需要订阅者回复。

实现方法

SerResult Call(const NetServiceOpInfo &opInfo, const MultiRequest &req, const MultiCastCallback *done)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
opInfoNetServiceOpInfo入参发送组播消息的opInfo,主要用于设置超时时间。
reqconst MultiRequest入参发送组播消息请求。
doneMultiCastCallback *入参发送组播完成或超时的回调函数。

返回值

SerResult。成功返回0,失败返回错误码。

Publisher::AddSubscription ​

函数定义

发布者添加订阅信息。

实现方法

bool AddSubscription(SubscriptionInfoPtr &info)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
infoSubscriptionInfoPtr入参订阅者信息。

返回值

bool。成功返回true,失败返回false。

Publisher::DelSubscription ​

函数定义

发布者删除订阅信息。

实现方法

bool DelSubscription(SubscriptionInfoPtr &info)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
infoSubscriptionInfoPtr入参订阅者信息。

返回值

bool。成功返回true,失败返回false。

Publisher::GetSubscriberNum ​

函数定义

发布者删除订阅者数量。

实现方法

uint32_t GetSubscriberNum()

参数说明

无。

返回值

uint32_t。返回订阅者数量。

Publisher::GetAllSubscriberInfo ​

函数定义

获取所有订阅者信息。

实现方法

std::vector<SubscriptionInfoPtr> GetAllSubscriberInfo()

参数说明

无。

返回值

vector。返回所有订阅者信息。

Publisher::GetSubscribeByEpId ​

函数定义

通过ep id获取订阅者信息。

实现方法

SubscriptionInfoPtr GetSubscribeByEpId(uint64_t id)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
iduint64_t入参ep id。

返回值

SubscriptionInfoPtr。返回获取到的订阅者信息。

Publisher::Initialize ​

函数定义

初始化发布者。

实现方法

SerResult Initialize(uintptr_t memPool, uintptr_t pubMemPool, uintptr_t periodicMgr, uint32_t ctxStoreCapacity, UBSHcomNetDriverProtocol protocol = UBSHcomNetDriverProtocol::RDMA)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
memPooluintptr_t入参内存池,用于创建timer ctx store。
pubMemPooluintptr_t入参内存池,用于创建回复信息ctx store。
periodicMgruintptr_t入参定时管理器。
ctxStoreCapacityuint32_t入参ctx store的容量大小。
protocolUBSHcomNetDriverProtocol入参组播driver协议类型,默认是RDMA,当前支持RDMA/TCP

返回值

SerResult。成功时返回0,失败时返回错误码。

PublisherContext::GetSubscriberRspInfo ​

函数定义

获取订阅者回复信息列表。

实现方法

const std::vector<SubscriberRspInfo>& GetSubscriberRspInfo()

参数说明

无。

返回值

vector。返回订阅者回复信息列表。

PublisherContext::SetResponseStatus ​

函数定义

指定subscrption,设置其在subscriberRspList内的SubscriberRspStatus响应状态。

实现方法

void SetResponseStatus(SubscriptionInfoPtr &sub, NetMessage *message, SubscriberRspStatus status)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
subSubscriptionInfoPtr入参订阅者信息。
messageNetMessage *入参message信息。
statusSubscriberRspStatus入参订阅者回复响应状态。

返回值

无。

PublisherContext::InitSubscribers ​

函数定义

初始化所有订阅者状态。

实现方法

SerResult InitSubscribers(const std::unordered_map<uint32_t, SubscriptionInfoPtr> &allSubs)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
allSubsconst std::unordered_map<uint32_t, SubscriptionInfoPtr>入参订阅者信息map。

返回值

SerResult。成功时返回0。

PublisherContext::GetReplyCount ​

函数定义

获取订阅者回复数量。

实现方法

uint32_t GetReplyCount()

参数说明

无。

返回值

uint32_t。返回订阅者回复数量。

PublisherContext::SetSendCount ​

函数定义

设置发布者发送数量。内部使用。

实现方法

void SetSendCount(uint32_t count)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
countuint32_t入参要设置的发布者发送数量。

返回值

无。

PublisherContext::GetSendCount ​

函数定义

获取发布者发送数量。

实现方法

uint32_t GetSendCount()

参数说明

无。

返回值

uint32_t。返回发布者发送数量。

SubscriptionInfo::GetId ​

函数定义

获取订阅者id信息。

实现方法

uint64_t GetId()

参数说明

无。

返回值

uint64_t。返回订阅者id信息。

SubscriptionInfo::GetName ​

函数定义

获取订阅者名称信息。

实现方法

std::string& GetName()

参数说明

无。

返回值

std::string。返回订阅者名称信息。

SubscriptionInfo::GetIp ​

函数定义

获取订阅者ip信息。

实现方法

std::string& GetIp()

参数说明

无。

返回值

std::string。返回订阅者ip信息。

SubscriptionInfo::GetPort ​

函数定义

获取订阅者port信息。

实现方法

uint64_t GetPort()

参数说明

无。

返回值

uint64_t。返回订阅者port信息。

SubscriberRspInfo::GetSubInfos ​

函数定义

获取订阅者信息。

实现方法

SubscriptionInfoPtr GetSubInfos()

参数说明

无。

返回值

返回SubscriptionInfoPtr订阅者信息。

SubscriberRspInfo::GetStatus ​

函数定义

获取订阅者响应状态。

实现方法

SubscriberRspStatus GetStatus()

参数说明

无。

返回值

返回SubscriberRspStatus订阅者响应信息。

SubscriberRspInfo::GetMultiResponse ​

函数定义

获取订阅者回复数据。

实现方法

const MultiResponse& GetMultiResponse()

参数说明

无。

返回值

返回MultiResponse订阅者回复数据。

SubscriberService::Create ​

函数定义

创建订阅者服务。

实现方法

static SubscriberService *Create(const std::string &name, const MulticastServiceOptions &opt = {})

参数说明

表 1 参数说明

参数名数据类型参数类型描述
nameconst std::string入参需要创建的服务名称。
optconst MulticastServiceOptions入参服务创建所需的配置项。

返回值

成功时返回创建好的SubscriberService实例,失败时返回空。

SubscriberService::Destroy ​

函数定义

销毁订阅者服务。

实现方法

static int32_t Destroy(const std::string &name)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
nameconst std::string入参需要销毁的服务名称。

返回值

in32_t。成功时返回0,失败时返回错误码。

SubscriberService::Start ​

函数定义

启动订阅者服务。

实现方法

int32_t Start()

参数说明

无。

返回值

in32_t。成功时返回0,失败时返回错误码。

SubscriberService::Stop ​

函数定义

停止订阅者服务。

实现方法

void Stop()

参数说明

无。

返回值

无。

SubscriberService::CreateSubscriber ​

函数定义

创建订阅者subscriber。

实现方法

int32_t CreateSubscriber(const std::string &serverUrl, NetRef<Subscriber> &subscriber)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
serverUrlconst std::string入参目标url,如:tcp://127.0.0.1:9981。
subscriberNetRef<Subscriber>出参返回创建好的订阅者subscriber。

返回值

in32_t。成功时返回0,失败时返回错误码。

SubscriberService::DestroySubscriber ​

函数定义

销毁订阅者subscriber。

实现方法

void DestroySubscriber(const NetRef<Subscriber> &subscriber)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
subscriberNetRef<Subscriber>入参需要销毁的订阅者subscriber。

返回值

无。

SubscriberService::GetConfig ​

函数定义

获取MulticastConfig,用于做高级配置。

实现方法

MulticastConfig &GetConfig()

参数说明

无。

返回值

MulticastConfig&。返回MulticastConfig组播配置对象。

SubscriberService::RegisterBrokenHandler ​

函数定义

注册Broken断链回调函数。

实现方法

void RegisterBrokenHandler(const MulticastEpBrokenHandler &handler)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
handlerconst MulticastEpBrokenHandler入参断链回调函数。

返回值

无。

说明

数据类型解释如下: using MulticastEpBrokenHandler = std::function<void(constock::hcom::NetEndpointPtr &ep)>

SubscriberService::RegisterRecvHandler ​

函数定义

注册订阅者接收回调函数。

实现方法

void RegisterRecvHandler(const MulticastReqRecvHandler &handler)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
handlerconst MulticastReqRecvHandler入参订阅者接收消息后的回调函数。

返回值

无。

说明

数据类型解释如下: using MulticastReqRecvHandler = std::function<int(ock::hcom::NetServiceContext &ctx)>

Subscriber::GetEp ​

函数定义

获取订阅者对应ep。仅用于SubscriberService::DestorySubscriber。

实现方法

NetEndpointPtr &GetEp()

参数说明

无。

返回值

返回订阅者对应ep。

Subscriber::GetIp ​

函数定义

获取订阅者ip信息。

实现方法

const std::string& GetIp()

参数说明

无。

返回值

std::string。返回订阅者ip信息。

Subscriber::GetPort ​

函数定义

获取订阅者port信息。

实现方法

const uint16_t GetPort()

参数说明

无。

返回值

uint16_t。返回订阅者port信息。

Subscriber::Close ​

函数定义

关闭订阅者连接即取消订阅。

实现方法

void Close()

参数说明

无。

返回值

无。

SubscriberContext::Reply ​

函数定义

订阅者回复双边消息。

实现方法

int Reply(const MultiRequest &req)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
reqconst MultiRequest入参发送组播消息请求。

返回值

int。成功返回0,失败返回错误码。

MulticastConfig::Init ​

函数定义

初始化组播配置。

实现方法

bool Init(const std::string &name, const MulticastServiceOptions &opt)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
nameconst std::string入参服务名称。
optconst MulticastServiceOptions入参组播配置项。

返回值

bool。成功时返回true。

MulticastConfig::GetName ​

函数定义

获取配置名称。

实现方法

const std::string &GetName()

参数说明

无。

返回值

std::string。返回配置项中name名称。

MulticastConfig::SetDeviceIpMask ​

函数定义

设置设备IpMask。

实现方法

void SetDeviceIpMask(const std::vector<std::string> &ipMasks)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
ipMasksconst std::vector<std::string>入参ipMask集合。

返回值

无。

MulticastConfig::GetDeviceIpMask ​

函数定义

获取设备IpMask。

实现方法

const std::vector<std::string> GetDeviceIpMask( )

参数说明

无。

返回值

返回获取到的ipMask集合。

MulticastConfig::SetCompletionQueueDepth ​

函数定义

设置cq完成队列深度。

实现方法

void SetCompletionQueueDepth(uint16_t depth)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
depthuint16_t入参cq完成队列深度。

返回值

无。

MulticastConfig::GetCompletionQueueDepth ​

函数定义

获取cq完成队列深度。

实现方法

const uint16_t GetCompletionQueueDepth()

参数说明

无。

返回值

uint16_t 。返回获取的cq完成队列深度。

MulticastConfig::SetSendQueueSize ​

函数定义

设置qp发送队列大小。

实现方法

void SetSendQueueSize(uint32_t sqSize)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
sqSizeuint32_t入参qp发送队列大小。

返回值

无。

MulticastConfig::GetSendQueueSize ​

函数定义

获取qp发送队列大小。

实现方法

const uint32_t GetSendQueueSize()

参数说明

无。

返回值

uint32_t。返回获取的qp发送队列大小。

MulticastConfig::SetRecvQueueSize ​

函数定义

设置qp接收队列大小。

实现方法

void SetRecvQueueSize(uint32_t rqSize)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
rqSizeuint32_t入参qp接收队列大小。

返回值

无。

MulticastConfig::GetRecvQueueSize ​

函数定义

获取qp接收队列大小。

实现方法

const uint32_t GetRecvQueueSize()

参数说明

无。

返回值

uint32_t。返回获取的qp接收队列大小。

MulticastConfig::SetQueuePrePostSize ​

函数定义

设置qp队列预申请大小。

实现方法

void SetQueuePrePostSize(uint32_t prePostSize)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
prePostSizeuint32_t入参qp队列预申请大小。

返回值

无。

MulticastConfig::GetQueuePrePostSize ​

函数定义

获取qp队列预申请大小。

实现方法

const uint32_t GetQueuePrePostSize()

参数说明

无。

返回值

uint32_t。返回获取的qp队列预申请大小。

MulticastConfig::SetPollingBatchSize ​

函数定义

设置批量poll cq的个数。

实现方法

void SetPollingBatchSize(uint16_t pollSize)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
pollSizeuint16_t入参批量poll cq的个数。

返回值

无。

MulticastConfig::GetPollingBatchSize ​

函数定义

获取批量poll cq的个数。

实现方法

const uint16_t GetPollingBatchSize()

参数说明

无。

返回值

uint16_t。返回获取的批量poll cq的个数。

MulticastConfig::SetEventPollingTimeOutUs ​

函数定义

设置event polling超时时间。

实现方法

void SetEventPollingTimeOutUs(uint16_t pollTimeout)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
pollTimeoutuint16_t入参event polling超时时间。
MulticastConfig::GetEventPollingTimeOutUs ​

函数定义

获取event polling超时时间。

实现方法

const uint16_t GetEventPollingTimeOutUs()

参数说明

无。

返回值

uint16_t。返回获取的event polling超时时间。

MulticastConfig::SetHeartBeatOptions ​

函数定义

设置组播心跳配置。

实现方法

void SetHeartBeatOptions(const MulticastHeartBeatOptions &opt)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
optconst MulticastHeartBeatOptions入参组播心跳配置。

返回值

无。

MulticastConfig::GetHeartBeatOptions ​

函数定义

获取组播心跳配置。

实现方法

const MulticastHeartBeatOptions &GetHeartBeatOptions()

参数说明

无。

返回值

MulticastHeartBeatOptions。返回获取的组播心跳配置。

MulticastConfig::SetMaxSendRecvDataCount ​

函数定义

设置同时最大发送的数据个数。

实现方法

void SetMaxSendRecvDataCount(uint32_t maxSendRecvDataCount)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
maxSendRecvDataCountuint32_t入参同时最大发送的数据个数。

返回值

无。

MulticastConfig::GetMaxSendRecvDataCount ​

函数定义

获取同时最大发送的数据个数。

实现方法

const uint32_t GetMaxSendRecvDataCount()

参数说明

无。

返回值

uint16_t。返回获取的同时最大发送的数据个数。

MulticastConfig::SetMaxSendRecvDataSize ​

函数定义

设置发送数据块最大值。

实现方法

void SetMaxSendRecvDataSize(uint32_t maxSendRecvDataSize)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
maxSendRecvDataSizeuint32_t入参同时发送数据块最大值。

返回值

无。

MulticastConfig::GetMaxSendRecvDataSize ​

函数定义

获取发送数据块最大值。

实现方法

const uint32_t GetMaxSendRecvDataSize()

参数说明

无。

返回值

uint16_t。返回获取的发送数据块最大值。

MulticastConfig::SetWorkerGroupInfo ​

函数定义

设置worker组信息。

实现方法

void SetWorkerGroupInfo(std::vector<WorkerGroupInfo> &info)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
infostd::vector<WorkerGroupInfo>入参worker组信息。

返回值

无。

MulticastConfig::GetWorkerGroupInfo ​

函数定义

获取worker组信息。

实现方法

const std::vector<WorkerGroupInfo> &GetWorkerGroupInfo()

参数说明

无。

返回值

std::vector<WorkerGroupInfo>。返回worker组信息。

MulticastConfig::SetPeriodicThreadNum ​

函数定义

设置定时线程数量。

实现方法

void SetPeriodicThreadNum(uint32_t threadNum)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
threadNumuint32_t入参定时线程数量。

返回值

无。

MulticastConfig::GetPeriodicThreadNum ​

函数定义

获取定时线程数量。

实现方法

const uint32_t GetPeriodicThreadNum()

参数说明

无。

返回值

uint32_t。返回定时线程数量。

MulticastConfig::SetMaxSubscriberNum ​

函数定义

设置一个发布者最大的订阅者数量。

实现方法

void SetMaxSubscriberNum(uint32_t maxSubscriberNum)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
maxSubscriberNumuint32_t入参一个发布者最大的订阅者数量。

返回值

无。

MulticastConfig::GetMaxSubscriberNum ​

函数定义

获取一个发布者最大的订阅者数量。

实现方法

const uint32_t GetMaxSubscriberNum()

参数说明

无。

返回值

uint32_t。返回一个发布者最大的订阅者数量。

MulticastConfig::SetPeriodicCpuId ​

函数定义

设置发布者超时定时器线程绑定的cpuId。

实现方法

void SetPeriodicCpuId(int cpuId)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
cpuIdint入参发布者超时定时器线程绑定的cpuId。

返回值

无。

MulticastConfig::GetPeriodicCpuId ​

函数定义

获取发布者超时定时器线程绑定的cpuId。

实现方法

const int GetPeriodicCpuId()

参数说明

无。

返回值

int。返回发布者超时定时器线程绑定的cpuId。

MulticastConfig::GetProtocol ​

函数定义

获取组播driver协议类型。

实现方法

UBSHcomNetDriverProtocol GetProtocol()

参数说明

无。

返回值

UBSHcomNetDriverProtocol。返回组播driver协议类型。

MultiCastCallback::Run ​

函数定义

运行组播回调函数。

实现方法

void Run(PublisherContext &context)

参数说明

参数名数据类型参数类型描述
contextPublisherContext入参PublisherContext上下文。

返回值

无。

MultiCastCallback::SetTime ​

函数定义

设置组播回调初始时间。

实现方法

void SetTime(uint64_t time)

参数说明

参数名数据类型参数类型描述
timeuint64_t入参内部设置的初始时间。

返回值

无

MultiCastCallback::GetTime ​

函数定义

获取组播回调初始时间。

实现方法

uint64_t GetTime()

参数说明

无

返回值

返回组播回调初始时间。

MultiCastCallback::Permanent ​

函数定义

获取组播回调是否永久。

实现方法

bool Permanent()

参数说明

无。

返回值

返回true则为永久回调,不会被析构,反之则会在Run后直接析构自身。

DestroyCallback ​

函数定义

销毁回调。仅用于失败情况下一个 MultiCastCallback 对象没有被扔进超时队列中,需要被清理。当它需要被调用 Run() 时无需调用此函数。另外需要考虑 permanent callback, 它不需要被清理,常用于回复消息。

实现方法

void DestroyCallback(const MultiCastCallback *cb)

参数说明

参数名数据类型参数类型描述
cbconst MultiCastCallback*入参需要销毁的组播回调函数。

返回值

返回true则为永久回调,不会被析构,反之则会在Run后直接析构自身。

NewMultiCastCallback ​

函数定义

创建组播回调函数,会在Run后析构自身。

实现方法

template <typename... Args> MultiCastCallback *NewMultiCastCallback(Args... args)

参数说明

用户可自定义传入的args类型与数量。

返回值

成功返回MultiCastCallback指针,失败则返回nullptr。

NewPermanentCallback ​

函数定义

创建永久回调函数,不会析构自身。

实现方法

template <typename... Args> MultiCastCallback *NewPermanentCallback(Args... args)

参数说明

用户可自定义传入的args类型与数量。

返回值

成功返回callback指针,失败则返回nullptr。

C API ​

服务层 ​

ubs_hcom_service_add_workergroup ​

函数定义

向Service中增加内存池。

实现方法

void ubs_hcom_service_add_workergroup(ubs_hcom_service service, int8_t priority, uint16_t workerGroupId, uint32_t threadCount,

const char *cpuIdsRange);

参数说明

表 1 参数说明

参数名数据类型参数类型描述
serviceubs_hcom_service入参之前创建的ubs_hcom_service对象。
priorityint8_t入参线程优先级。
workerGroupIduint16_t入参线程组ID。
threadCountuint32_t入参组里的线程数。
cpuIdsRangeconst char *入参CPU ID范围。

返回值

无

ubs_hcom_service_add_listener ​

函数定义

添加监听线程。

实现方法

void ubs_hcom_service_add_listener(ubs_hcom_service service, const char *url, uint16_t workerCount);

参数说明

表 1 参数说明

参数名数据类型参数类型描述
serviceubs_hcom_service入参之前创建的ubs_hcom_service对象。
priorityint8_t入参线程优先级。
workerGroupIduint16_t入参线程组ID。
threadCountuint32_t入参组里的线程数。
cpuIdsRangeconst char *入参CPU ID范围。

返回值

无

ubs_hcom_service_set_lbpolicy ​

函数定义

设置负载均衡策略。

实现方法

void ubs_hcom_service_set_lbpolicy(ubs_hcom_service service, ubs_hcom_service_lb_policy lbPolicy);

参数说明

表 1 参数说明

参数名数据类型参数类型描述
serviceubs_hcom_service入参之前创建的ubs_hcom_service对象。
lbPolicyubs_hcom_service_lb_policy入参负载均衡策略。

返回值

无

ubs_hcom_service_set_tls_opt ​

函数定义

设置TLS配置项。

实现方法

void ubs_hcom_service_set_tls_opt(ubs_hcom_service service, bool enableTls, ubs_hcom_service_tls_version version,

ubs_hcom_service_cipher_suite cipherSuite, ubs_hcom_tls_get_cert_cb certCb, ubs_hcom_tls_get_pk_cb priKeyCb, ubs_hcom_tls_get_ca_cb caCb);

参数说明

表 1 参数说明

参数名数据类型参数类型描述
serviceubs_hcom_service入参之前创建的ubs_hcom_service对象。
enableTlsbool入参是否开启TLS。
versionubs_hcom_service_tls_version入参TLS版本。
cipherSuiteubs_hcom_service_cipher_suite入参加密方式。
certCbubs_hcom_tls_get_cert_cb入参获取TLS证书的回调。
priKeyCbubs_hcom_tls_get_pk_cb入参获取TLS私钥的回调。
caCbubs_hcom_tls_get_ca_cb入参获取TLS认证的回调。

说明

使用UB自举建链时,暂不支持安全认证和安全加密。

返回值

无

ubs_hcom_service_set_secure_opt ​

函数定义

设置安全加密选项。

实现方法

void ubs_hcom_service_set_secure_opt(ubs_hcom_service service, ubs_hcom_service_secure_type secType, ubs_hcom_secinfo_provider provider,

ubs_hcom_secinfo_validator validator, uint16_t magic, uint8_t version);

参数说明

表 1 参数说明

参数名数据类型参数类型描述
serviceubs_hcom_service入参之前创建的ubs_hcom_service对象。
secTypeubs_hcom_service_secure_type入参加密方式。
providerubs_hcom_secinfo_provider入参密钥提供回调。
validatorubs_hcom_secinfo_validator入参密钥校验回调。
magicuint16_t入参魔数。
versionuint8_t入参安全加密版本。

返回值

无

ubs_hcom_service_set_tcp_usr_timeout ​

函数定义

设置负载均衡策略。

实现方法

void ubs_hcom_service_set_tcp_usr_timeout(ubs_hcom_service service, uint16_t timeOutSec);

参数说明

表 1 参数说明

参数名数据类型参数类型描述
serviceubs_hcom_service入参之前创建的ubs_hcom_service对象。
timeOutSecuint16_t入参TCP超时时间

返回值

无

ubs_hcom_service_set_tcp_send_zcopy ​

函数定义

设置负载均衡策略。

实现方法

void ubs_hcom_service_set_tcp_send_zcopy(ubs_hcom_service service, bool tcpSendZCopy);

参数说明

表 1 参数说明

参数名数据类型参数类型描述
serviceubs_hcom_service入参之前创建的ubs_hcom_service对象。
tcpSendZCopybool入参TCP是否开启ZCopy。

返回值

无

ubs_hcom_service_set_ipmask ​

函数定义

设置要监听的IP。

实现方法

void ubs_hcom_service_set_ipmask(ubs_hcom_service service, const char *ipMask);

参数说明

表 1 参数说明

参数名数据类型参数类型描述
serviceubs_hcom_service入参之前创建的ubs_hcom_service对象。
ipMaskconst char *入参要监听的IP。用于rdma/ub,根据ipMask获取该网段的GID和UBEId。

返回值

无

ubs_hcom_service_set_ipgroup ​

函数定义

设置要监听的IP。

实现方法

void ubs_hcom_service_set_ipgroup(ubs_hcom_service service, const char *ipGroup);

参数说明

表 1 参数说明

参数名数据类型参数类型描述
serviceubs_hcom_service入参之前创建的ubs_hcom_service对象。
ipGroupconst char *入参要监听的IP,如果明确指定了ipGroup,则直接使用对应的设备。

返回值

无

ubs_hcom_service_set_cq_depth ​

函数定义

设置cq队列的深度。

实现方法

void ubs_hcom_service_set_cq_depth(ubs_hcom_service service, uint16_t depth);

参数说明

表 1 参数说明

参数名数据类型参数类型描述
serviceubs_hcom_service入参之前创建的ubs_hcom_service对象。
depthuint16_t入参cq队列的深度。

返回值

无

ubs_hcom_service_set_sq_size ​

函数定义

设置SQ队列的大小,默认256。

实现方法

void ubs_hcom_service_set_sq_size(ubs_hcom_service service, uint32_t sqSize);

参数说明

表 1 参数说明

参数名数据类型参数类型描述
serviceubs_hcom_service入参之前创建的ubs_hcom_service对象。
sqSizeuint32_t入参SQ队列的大小,默认256。

返回值

无

ubs_hcom_service_set_rq_size ​

函数定义

设置RQ队列的大小,默认256。

实现方法

void ubs_hcom_service_set_rq_size(ubs_hcom_service service, uint32_t rqSize);

参数说明

表 1 参数说明

参数名数据类型参数类型描述
serviceubs_hcom_service入参之前创建的ubs_hcom_service对象。
rqSizeuint32_t入参RQ队列的大小,默认256。

返回值

无

ubs_hcom_service_set_polling_batchsize ​

函数定义

设置传输层worker单次poll的个数。

实现方法

void ubs_hcom_service_set_polling_batchsize(ubs_hcom_service service, uint16_t pollSize);

参数说明

表 1 参数说明

参数名数据类型参数类型描述
serviceubs_hcom_service入参之前创建的ubs_hcom_service对象。
pollSizeuint16_t入参单次poll的个数。

返回值

无

ubs_hcom_service_set_polling_timeoutus ​

函数定义

设置event polling的超时时间。

实现说明

void ubs_hcom_service_set_polling_timeoutus(ubs_hcom_service service, uint16_t pollTimeout);

参数说明

表 1 参数说明

参数名数据类型参数类型描述
serviceubs_hcom_service入参创建的ubs_hcom_service对象。
pollTimeoutuint16_t入参event polling超时时间。

返回值

无

ubs_hcom_service_set_timeout_threadnum ​

函数定义

设置周期任务处理线程数。

实现说明

void ubs_hcom_service_set_timeout_threadnum(ubs_hcom_service service, uint32_t threadNum);

参数说明

表 1 参数说明

参数名数据类型参数类型描述
serviceubs_hcom_service入参创建的ubs_hcom_service对象。
threadNumuint32_t入参周期任务处理线程数。

返回值

无

ubs_hcom_service_set_max_connection_cnt ​

函数定义

设置最大链接数。

实现说明

void ubs_hcom_service_set_max_connection_cnt(ubs_hcom_service service, uint32_t maxConnCount);

参数说明

表 1 参数说明

参数名数据类型参数类型描述
serviceubs_hcom_service入参创建的ubs_hcom_service对象。
maxConnCountuint32_t入参最大链接数。

返回值

无

ubs_hcom_service_set_heartbeat_opt ​

函数定义

设置心跳参数配置项。

实现说明

void ubs_hcom_service_set_heartbeat_opt(ubs_hcom_service service, uint16_t idleSec, uint16_t probeTimes, uint16_t intervalSec);

参数说明

表 1 参数说明

参数名数据类型参数类型描述
serviceubs_hcom_service入参创建的ubs_hcom_service对象。
idleSecuint16_t入参发送心跳保活消息间隔时间。
probeTimesuint16_t入参发送心跳探测失败/没收到回复重试次数,超过认为连接已经断开。
intervalSecuint16_t入参发送心跳后再次发送时间。

返回值

无

ubs_hcom_service_set_multirail_opt ​

函数定义

设置多路径参数配置项。

实现说明

void ubs_hcom_service_set_multirail_opt(ubs_hcom_service service, bool enable, uint32_t threshold);

参数说明

表 1 参数说明

参数名数据类型参数类型描述
serviceubs_hcom_service入参创建的ubs_hcom_service对象。
thresholduint32_t入参MultiRail阈值。
enablebool入参MultiRail开关。true:开启false:关闭

返回值

无

ubs_hcom_set_log_handler ​

函数定义

设置外部日志模板。

实现方法

void ubs_hcom_set_log_handler(ubs_hcom_log_handler h)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
hubs_hcom_log_handler入参外部日志回调函数。

返回值

无

说明

数据类型解释如下: typedef void (*ubs_hcom_log_handler)(int level, const char *msg).

传输层 ​

ubs_hcom_driver_register_tls_cb ​
接口使用方法 ​

函数定义

注册建链双向认证的回调函数,分别用于获取CA证书、获取公钥证书和私钥证书。

实现方法

uintptr_t ubs_hcom_driver_register_tls_cb(ubs_hcom_driver driver, ubs_hcom_tls_get_cert_cb certCb, ubs_hcom_tls_get_pk_cb priKeyCb, ubs_hcom_tls_get_ca_cb caCb)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
driverubs_hcom_driver入参创建的ubs_hcom_driver对象。
certCbHcom_TlsGetCb入参回调函数句柄。
priKeyCbubs_hcom_tls_get_pk_cb入参回调函数句柄。
caCbubs_hcom_tls_get_ca_cb入参回调函数句柄。

返回值

uintptr_t,返回内部句柄地址。

ubs_hcom_tls_get_ca_cb函数类型 ​

函数定义

typedef int (*ubs_hcom_tls_get_ca_cb)(const char *name, char **caPath, char **crlPath, ubs_hcom_peer_cert_verify_type *verifyType, ubs_hcom_tls_cert_verify *verify)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
namechar *出参句柄名字。
*caPathchar *出参提供的CA证书路径。
*crlPathchar *出参提供的吊销列表路径。
verifyTypeubs_hcom_peer_cert_verify_type *出参证书校验方式:C_VERIFY_BY_NONE:不验证对方证书。C_VERIFY_BY_DEFAULT:用UBS Comm默认的方式校验证书。C_VERIFY_BY_CUSTOM_FUNC:用自定义的函数校验证书。
verifyubs_hcom_tls_cert_verify出参证书校验函数,当verifyType值为C_VERIFY_BY_CUSTOM_FUNC的时候设置。

返回值

返回值为0则表示回调函数执行成功。

ubs_hcom_peer_cert_verify_type函数类型 ​

函数定义

typedef int (*ubs_hcom_tls_cert_verify)(void *x509, const char *crlPath)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
x509void*入参加载之后的x509证书。
crlPathchar *入参提供的吊销列表路径。

返回值

表示函数执行结果,返回值为0则表示证书验证成功。

Hcom_TlsGetCb ​

函数定义

typedef int (*ubs_hcom_tls_get_cert_cb)(const char *name, char **certPath)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
namechar *出参句柄名字。
*certPathchar *出参提供的公钥证书路径。

返回值

Bool类型,表示回调函数是否执行成功

  • 返回值为true:表示成功。
  • 返回值为false:表示失败。
ubs_hcom_tls_get_pk_cb ​

函数定义

typedef int (*ubs_hcom_tls_get_pk_cb)(const char *name, char **priKeyPath, char **keyPass, ubs_hcom_tls_keypass_erase *erase)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
namechar *出参句柄名字。
*priKeyPathchar *出参提供的私钥证书路径。
*keyPassvoid*出参私钥加载的明文密码。
eraseubs_hcom_tls_keypass_erase *出参擦除私钥密码的回调函数,当加载完私钥的时候调用。

返回值

返回值为0则表示回调函数执行成功。

ubs_hcom_tls_keypass_erase ​

函数定义

typedef void (*ubs_hcom_tls_keypass_erase)(char *keyPass, int len)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
keyPasschar *入参私钥加载的明文密码。
lenint入参私钥加载的密码长度。

返回值

无

ubs_hcom_ep_post_send_raw ​

函数定义

向对端发送一个带有op信息的请求。

实现方法

int ubs_hcom_ep_post_send_raw(ubs_hcom_endpoint ep, ubs_hcom_send_request *req, uint32_t seqNo)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
epubs_hcom_endpoint入参建链创建好的EP对象。
*requbs_hcom_send_request入参发送请求信息,使用本地内存来存储数据,数据会被复制,调用后可释放本地内存。
seqNouint32_t入参对端用于回复的序列号。
ubs_hcom_ep_post_send_raw_sgl ​

函数定义

向对端发送请求。

实现方法

int ubs_hcom_ep_post_send_raw_sgl(ubs_hcom_endpoint ep, ubs_hcom_readwrite_request_sgl *req, uint32_t seqNo)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
epubs_hcom_endpoint入参建链创建好的EP对象。
*requbs_hcom_readwrite_request_sgl入参请求信息。
seqNouint32_t入参对方要回复的seqNo必须大于0,对方可以从context.Header().seqNo中获取它;如果seqNo为0,则生成自动递增的数字。在同步发送消息的情况下,请求和响应的seqNo相等。

表 2 ubs_hcom_readwrite_request_sgl结构体

配置项类型默认值说明
*iovubs_hcom_readwrite_sgeStruct ubs_hcom_readwrite_sge{uintptr_t lAddress = 0;uintptr_t rAddress = 0;uint32_t lKey = 0;uint32_t rKey = 0;uint32_t size = 0;}Nullptr数组。
iovCountuint16_t0小于max count(NET_SGE_MAX_IOV)。
upCtxSizeuint16_t0上下文大小。
upCtxData[16]char-上下文数据。

返回值

返回值为0则表示发送请求成功。

ubs_hcom_ep_post_read_sgl ​

函数定义

向对端发送一个读请求。

实现方法

int ubs_hcom_ep_post_read_sgl(ubs_hcom_endpoint ep, ubs_hcom_readwrite_request_sgl *req)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
epubs_hcom_endpoint入参建链创建好的EP对象。
*requbs_hcom_readwrite_request_sgl入参读请求信息。

返回值

返回值为0则表示读成功。

ubs_hcom_ep_post_write_sgl ​

函数定义

向对端发送一个写请求。

实现方法

int ubs_hcom_ep_post_write_sgl(ubs_hcom_endpoint ep, ubs_hcom_readwrite_request_sgl *req)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
epubs_hcom_endpoint入参建链创建好的EP对象。
*requbs_hcom_readwrite_request_sgl入参写请求信息。

返回值

返回值为0则表示写成功。

ubs_hcom_ep_receive_raw ​

函数定义

接收消息,仅对NET_C_EP_SELF_POLLING设置时使用。

实现方法

int ubs_hcom_ep_receive_raw(ubs_hcom_endpoint ep, int32_t timeout, ubs_hcom_response_context **ctx)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
epubs_hcom_endpoint入参建链创建好的EP对象。
timeoutint32_t入参超时时间,单位s。timeout = 0:表示立即返回。timeout < 0:表示永不超时,通常设置为-1。timeout > 0:表示秒精度超时最大值为2000s。
*ctxubs_hcom_response_context *出参响应的上下文。

返回值

返回值为0则表示接收消息成功。

ubs_hcom_ep_receive_raw_sgl ​

函数定义

接收对端发送过来的SGL消息。

实现方法

int ubs_hcom_ep_receive_raw_sgl(ubs_hcom_endpoint ep, int32_t timeout, ubs_hcom_response_context **ctx)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
epubs_hcom_endpoint入参EndPoint。
timeoutint32_t入参超时时间,单位是秒。0为立刻超时,负数为永不超时。
ctxubs_hcom_response_context出参接收到的消息。

返回值

返回值为0则表示成功。

ubs_hcom_estimate_encrypt_len ​

函数定义

输入原始数据大小的估计加密长度。

实现方法

uint64_t ubs_hcom_estimate_encrypt_len(ubs_hcom_endpoint ep, uint64_t rawLen)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
epubs_hcom_endpoint入参建链创建好的EP对象。
rawLenuint64_t入参原始数据长度。范围是(0, 18446744073709551571]。

返回值

返回uint64_t类型,表示数据加密长度。

ubs_hcom_encrypt ​

函数定义

加密数据。

实现方法

int ubs_hcom_encrypt(ubs_hcom_endpoint ep, const void *rawData, uint64_t rawLen, void *cipher, uint64_t *cipherLen)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
epubs_hcom_endpoint入参建链创建好的EP对象。
rawDatavoid *入参原始数据地址。
rawLenuint64_t入参原始数据长度。
ciphervoid *出参加密后数据地址。
cipherLenuint64_t出参加密后数据长度。

返回值

返回值为0则表示加密成功。

ubs_hcom_estimate_decrypt_len ​

函数定义

输出原始数据大小。

实现方法

uint64_t ubs_hcom_estimate_decrypt_len(ubs_hcom_endpoint ep, uint64_t cipherLen)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
epubs_hcom_endpoint入参建链创建好的EP对象。
cipherLenuint64_t入参加密后的数据长度。

返回值

返回uint64_t类型,表示解密后的原始数据长度。

ubs_hcom_decrypt ​

函数定义

解密数据。

实现方法

int ubs_hcom_decrypt(ubs_hcom_endpoint ep, const void *cipher, uint64_t cipherLen, void *rawData, uint64_t *rawLen)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
epubs_hcom_endpoint入参建链创建好的EP对象。
ciphervoid *入参待解密的数据地址。
cipherLenuint64_t入参待解密的数据长度。
rawDatavoid *出参解密后,原始数据地址。
rawLenuint64_t出参解密后,原始数据长度。

返回值

返回值为0则表示解密成功。

ubs_hcom_send_fds ​

函数定义

发送共享文件的句柄,该接口只支持在SHM协议下使用。

实现方法

int ubs_hcom_send_fds(ubs_hcom_endpoint ep, int fds[], uint32_t len)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
epubs_hcom_endpoint入参建链创建好的EP对象。
fdsint[]入参需要发送的句柄数组。
lenuint32_t入参发送的句柄数量。范围是[1, 4]。

返回值

返回值为0则表示句柄发送成功。

ubs_hcom_receive_fds ​

函数定义

接收共享文件的句柄,该接口只支持在SHM协议下使用。

实现方法

int ubs_hcom_receive_fds(ubs_hcom_endpoint ep, int fds[], uint32_t len, int timeoutSec)

参数说明

表 1 参数说明

参数名数据类型参数类型描述
epubs_hcom_endpoint入参建链创建好的EP对象。
fdsint[]出参需要接收的句柄数组。
lenuint32_t入参接收的句柄数量。范围是[1, 4]。
timeoutSecint入参设置接收超时时间,-1表示不设超时。

返回值

返回值为0则表示句柄发送成功。

结构体参考 ​

C++结构体 ​

服务层结构体 ​

UBSHcomServiceOptions ​

表 1 参数说明

参数名数据类型默认值描述
maxSendRecvDataSizeuint32_t1024双边发送消息时,采用bcopy模式,发送端和接收端预留的内存大小。范围为(0, 524288000],单位byte。
workerGroupIduint16_t0worker线程池编号。UBS Comm支持使用多个线程池,根据ID号进行区分。
workerGroupThreadCountuint16_t1worker线程池线程数。
workerGroupModeUBSHcomNetDriverWorkingModeNET_BUSY_POLLINGworker工作模式。NET_BUSY_POLLING:Worker保持空转,CPU占用高,性能高。NET_EVENT_POLLING:Worker采用事件驱动,CPU占用低,性能相比略低。
workerThreadPriorityint8_t0worker线程优先级,同线程nice值,取值范围[-20, 19],值越大优先级越低。
workerGroupCpuIdsRangestd::pair<uint32_t, uint32_t>{UINT32_MAX, UINT32_MAX}worker线程绑核范围,比如{0,10}表示绑定在CPU 0到CPU 10上,{UINT32_MAX, UINT32_MAX}表示不绑核。

说明

双边操作允许发送最大消息的长度,可结合使用场景通过maxSendRecvDataSize来配置。

UBSHcomConnectOptions ​

表 1 参数说明

参数名数据类型默认值描述
clientGroupIduint16_t0客户端worker线程池ID。
serverGroupIduint16_t0服务端worker线程池ID。
linkCountuint8_t1链接数。
modeUBSHcomClientPollingModeWORKER_POLL客户端调用通信接口时poll的模式。
cbTypeUBSHcomChannelCallBackTypeCHANNEL_FUNC_CB回调类型。
payloadstd::string空建链发送给服务端的payload。
UBSHcomRequest ​

表 1 参数说明

配置项数据类型默认值说明
addressvoid*nullptr数据指针。该字段在内部有空指针校验。
sizeuint32_t0数据大小。范围是(0,UINT32_MAX]。
keyuint64_t0数据地址key值。
opcodeuint16_t0操作类型。
UBSHcomResponse ​

表 1 参数说明

配置项类型默认值说明
addressvoid*nullptr数据指针。
sizeuint32_t0数据大小。
errorCodeint16_t0回复错误码。
UBSHcomReplyContext ​

表 1 参数说明

参数名数据类型描述
rspCtxuintptr_t回复上下文,可从回调context中获取。
errorCodeint16_t回复的错误码。
UBSHcomOneSideRequest ​

表 1 参数说明

参数名数据类型描述
lAddressuintptr_t单边通信本端内存地址。
rAddressuintptr_t单边通信,对端内存地址。
lKeyUBSHcomMemoryKey单边通信,本端UBSHcomMemoryKey。
rKeyUBSHcomMemoryKey单边通信,对端UBSHcomMemoryKey。
sizeuint32_t单边通信,数据大小。范围是(0, UINT32_MAX]。

表 2 UBSHcomMemoryKey

参数名数据类型描述
keysuint64_t [4]内存注册后的内存区域key,MultiRail场景下多个设备有多个key(最多4个),非MultiRail场景下只需要1个。
tokensuint64_tUBC场景下注册内存区域的token value,MultiRail场景下多个设备有多个token value(最多4个),非MultiRail场景下只需要1个。
UBSHcomFlowCtrlOptions ​

表 1 参数说明

参数名数据类型描述
intervalTimeMsuint64_t等待时间,单位是微秒。有效范围[1, 1000]。
thresholdByteuint64_t阈值数据量,单位为byte。范围是(0, UINT64_MAX]。
flowCtrlLevelUBSHcomFlowCtrlLevel流控等级。0为死循环等待。1为休眠等待。默认为1。
UBSHcomTlsOptions ​
参数说明 ​

表 1 参数说明

参数名数据类型默认值描述
caCbUBSHcomTLSCaCallbacknullptr建链双向认证的回调函数,用于获取CA证书。
cfCbUBSHcomTLSCertificationCallbacknullptr建链双向认证的回调函数,用于获取公钥证书。
pkCbUBSHcomTLSPrivateKeyCallbacknullptr建链双向认证的回调函数,用于获取私钥证书。
tlsVersionUBSHcomTlsVersionTlsVersion::TLS_1_3TLS版本,支持TLS1.3,不再支持TLS1.2。
netCipherSuiteUBSHcomCipherSuiteUBSHcomCipherSuite::AES_GCM_128加密算法,取值范围见UBSHcomNetCipherSuite。
enableTlsbooltrue是否开启TLS认证。
UBSHcomTLSCaCallback函数类型 ​

函数定义

using UBSHcomTLSCaCallback = std::function<bool(const std::string &name, std::string &capath, std::string &crlPath, UBSHcomPeerCertVerifyType &verifyPeerCert, UBSHcomTLSCertVerifyCallback &cb)>;

参数说明

表 1 参数说明

参数名数据类型参数类型描述
nameString入参句柄名字。
capathString出参提供的CA证书路径。
crlPathString出参提供的吊销列表路径。
verifyPeerCertUBSHcomPeerCertVerifyType出参证书校验方式:VERIFY_BY_NONE:不验证对方证书。VERIFY_BY_DEFAULT:用UBS Comm默认的方式校验证书。VERIFY_BY_CUSTOM_FUNC:用自定义的函数校验证书。
cbUBSHcomTLSCertVerifyCallback出参证书校验函数,当verifyPeerCert值为VERIFY_BY_CUSTOM_FUNC的时候设置。

返回值

Bool类型,表示回调函数是否执行成功。

  • 返回值为true:表示成功。
  • 返回值为false:表示失败。

代码样例

xml
int Verify(void *x509, const char *path)
{
    return 0;
}
bool CACallback(const std::string &name, std::string &caPath, std::string &crlPath,
    UBSHcomPeerCertVerifyType &peerCertVerifyType, UBSHcomTLSCertVerifyCallback &cb)
{
    caPath = certPath + "/CA/cacert.pem";
    cb = std::bind(&Verify, std::placeholders::_1, std::placeholders::_2);
    return true;
}
UBSHcomTLSCertVerifyCallback函数类型 ​

函数定义

using UBSHcomTLSCertificationCallback = std::function<bool(const std::string &name, std::string &path)>;

参数说明

表 1 参数说明

参数名数据类型参数类型描述
nameString入参句柄名字。
pathString出参提供的公钥证书路径。

返回值

Bool类型,表示回调函数是否执行成功。

  • 返回值为true:表示成功。
  • 返回值为false:表示失败。

代码样例

xml
bool CertCallback(const std::string &name, std::string &value)
{
    value = certPath + "/client/cert.pem";
    return true;
}
UBSHcomTLSPrivateKeyCallback函数类型 ​

函数定义

using UBSHcomTLSPrivateKeyCallback = std::function<bool(const std::string &name, std::string &path, void *&password, int &length, UBSHcomTLSEraseKeypass &erase)>;

参数说明

表 1 参数说明

参数名数据类型参数类型描述
nameString入参句柄名字。
pathString出参提供的私钥证书路径。
passwordvoid*出参私钥加载的明文密码。
lengthint出参私钥加载的密码长度。
eraseUBSHcomTLSEraseKeypass函数类型出参擦除私钥密码的回调函数,当加载完私钥的时候调用。

返回值

Bool类型,表示回调函数是否执行成功。

  • 返回值为true:表示成功。
  • 返回值为false:表示失败。

代码样例

xml
void Erase(void *pass, int len) {}

bool PrivateKeyCallback(const std::string &name, std::string &value, void *&keyPass, int &len, UBSHcomTLSEraseKeypass &erase)
{
    static char content[] = "xxxx";
    keyPass = reinterpret_cast<void *>(content);
    len = sizeof(content);
    value = certPath + "/client/key.pem";
    erase = std::bind(&Erase, std::placeholders::_1, std::placeholders::_2);
    return true;
}
UBSHcomConnSecureOptions ​

表 1 参数说明

参数名数据类型描述默认值
providerUBSHcomDriverSecInfoProvider安全信息提供函数。nullptr
validatorUBSHcomDriverSecInfoValidator安全信息校验函数。nullptr
magicuint16_t建链时校验的魔术字,双方配置不同时,建链失败。可用于版本管理。256
versionuint8_t版本校验,建链回调时,可以通过NetChannel对象获取。0
secTypeUBSHcomNetDriverSecType安全信息类型。NetDriverSecType::NET_SEC_DISABLED

说明

数据类型解释如下: using UBSHcomDriverSecInfoProvider= std::function<int(uint64_t ctx, int64_t &flag, UBSHcomNetDriverSecType &type, char *&output, uint32_t &outLen, bool &needAutoFree)>; 其中,outLen的有效范围为(0, 2147483646]。 using UBSHcomNetDriverEndpointSecInfoValidator = std::function<int(uint64_t ctx, int64_t flag, const char *input, uint32_t inputLen)>;

UBSHcomHeartBeatOptions ​

表 1 参数说明

参数名数据类型描述默认值
heartBeatIdleSecuint16_t发送心跳保活消息间隔时间。60
heartBeatProbeTimesuint16_t发送心跳探测失败/没收到回复重试次数,超过认为连接已经断开。7
heartBeatProbeIntervalSecuint16_t发送心跳后再次发送时间。2
UBSHcomMultiRailOptions ​

表 1 参数说明

参数名数据类型描述默认值
thresholduint32_tMultiRail阈值。8192
enableboolMultiRail开关。true:开启false:关闭true
UBSHcomIov ​

表 1 参数说明

参数名数据类型描述默认值
addressvoid *地址值。nullptr
sizeuint32_t数据大小。0
UBSHcomOneSideSglRequest ​

表 1 参数说明

参数名数据类型描述默认值
iovUBSHcomOneSideRequest单边iov数组。nullptr
iovCountuint16_tiov数量。0
UBSHcomMemoryKey ​

表 1 参数说明

参数名数据类型默认值描述
keys[4]uint64_t-key数组。
tokens[4]uint64_t-UBC场景下的token value数组
UBSHcomSglRequest ​

表 1 参数说明

参数名数据类型默认值描述
iovUBSHcomRequestnullptr双边iov数组。
iovCountuint16_t0iov数量。
UBSHcomTwoSideThreshold ​

表 1 参数说明

参数名数据类型描述默认值
splitThresholduint32_tUBC专用。此值表示拆包发送的阈值,也可以当做拆包发送时每个小包的最大长度(含额外头部),一般将其配置成小于等于SegSize的值。可配置范围为[128, maxSendRecvDataSize],特别的配置成UINT32_MAX会禁用拆包功能。UINT32_MAX
rndvThresholduint32_trndv阈值,请求长度大于等于该值,则启用RNDV。UINT32_MAX

传输层结构体 ​

UBSHcomNetDriverDeviceInfo ​

表 1 参数说明

参数名数据类型描述
maxSgeint最大SGL数组元素个数,默认为4。
UBSHcomNetDriverOptions ​

表 1 参数说明

配置项类型默认值说明
netDeviceIpMask/netDeviceEidunion {char[256]uint8_t[16]} attribute((packed))-填写ipMask时,为 IP掩码。非UBC多路径场景通过此掩码可查找得到实际设备的IP。监听的本机网卡配置的IP掩码,校验掩码下的网卡是否存在。长度范围为0~256,不包含0。填写eid时,为UB EID (128b)。多路径聚合设备为非IP设备,需用户显式指定。长度为16。
netDeviceIpGroupchar[1024]-监听的本机网卡配置的IP组,校验IP组下的网卡是否存在。长度范围为0~1024,不包含0。
enableTlsbooltrue加密特性开关。
secTypeUBSHcomNetDriverSecTypeNET_SEC_DISABLED安全类型。
tlsVersionUBSHcomTlsversionTLS_1_3TLS的版本。
cipherSuiteUBSHcomNetCipherSuiteAES_GCM_128加密算法。
worker setting
dontStartWorkersboolfalse启动Worker开关。false:通用场景,Server端对象,或者有建立event poll链路。true:典型场景,Client端并且只建立self poll链路。
modeUBSHcomNetDriverWorkingModeNET_BUSY_POLLINGWorker工作模式:NET_BUSY_POLLING = 0NET_EVENT_POLLING = 1
workerGroupschar[64]-设置Worker组,例如:"1,2,3" ,当前有3个Worker组,worker[0]有1个worker,worker[1]有2个worker,worker[2]有3个worker。长度范围为0~64,不包含0。
workerGroupsCpuSeNetDriverOobTypechar[128]-设置Worker线程绑核,例如:"1-1,2-3,4-6"的绑核,对应上方举例"1,2,3"3个Worker组的配置,worker[0]有1个Worker线程绑在cpuId 1,worker[1]有2个Worker线程,绑在cpuId 2和3,worker[2]有3个Worker线程,绑在cpuId 4、5、6上。长度范围为0~128,不包含0。
workerGroupsThreadPrioritychar[64]--worker groups thread priority, for example -10,na,9worker thread priority [-20, 19], 19 is the lowest, -20 is the highest, 0 (default) means do not set priority
workerThreadPriorityint0worker线程优先级设置,[-20, 20],20为优先级最低,-20为优先级最高,0为不设置优先级。
connection attribute
oobTypeNetDriverOobTypeNET_OOB_TCP设置监听线程的类型,节点间只能配置成NET_OOB_TCP,节点内可以配置成NET_OOB_TCP或NET_OOB_UDS。NET_OOB_TCP=0NET_OOB_UDS=1
lbPolicyUBSHcomNetDriverLBPolicyNET_ROUND_ROBIN设置建链时,选择Worker的负载均衡模式。NET_ROUND_ROBIN = 0NET_HASH_IP_PORT = 1
magicuint16_t256建链时校验的魔术字,双方配置不同时,建链失败。可使用于版本管理。
versionuint8_t0版本校验。
maxConnectionNumuint32_t250最大连接数。范围为0~UINT32_MAX,不包含0。
heartbeat attribute
heartBeatIdleTimeuint16_t60正常发送心跳的周期。范围为0~1024,不包含0,单位s。
heartBeatProbeTimesuint16_t7最大允许发送保活探测包的次数(RDMA不生效)。范围为0~1024,不包含0。
heartBeatProbeIntervaluint16_t2没有接收到对方确认,继续发送保活探测包的发送频率。范围为0~1024,不包含0。
options for protocol
tcpUserTimeoutint16_t-1TCP协议下,在IO时的超时时间,单位为秒,-1为不设置,0为永不超时,范围为[-1, 1024]。
tcpEnableNoDelaybooltrueTCP协议下,是否设置TCP_NODELAY参数。
tcpSendZCopyboolfalseTCP协议下,是否在双边消息时在UBS Comm内部是否会拷贝用户消息到内部内存。如果不拷贝,则需要保证消息的生命周期长于消息发送完成回调函数调用时。
tcpSendBufSizeuint16_t0TCP发送缓冲区大小。范围为0~4096,不包含0,单位KB。
tcpReceiveBufSizeuint16_t0TCP接收缓冲区大小。范围为0~4096,不包含0,单位KB。
mrSendReceiveSegCountuint32_t8192双边发送消息时,采用bcopy模式,发送端预留的内存块数量。范围为0~65535,不包含0。
mrSendReceiveSegSizeuint32_t1024双边发送消息时,采用bcopy模式,发送端和接收端预留的内存大小。范围为0~524288000,不包含0,单位byte。shm:shmChannel mSendDcBuckSize
dmSegSizeuint32_t290RDMA:使用Device Memory特性时,申请的DM内存大小。
dmSegCountuint32_t400RDMA:使用Device Memory特性时,申请的DM内存数量。
completionQueueDepthuint16_t2048RDMA:CQ队列深度。SHM:eventqueue size。范围为0~8192,不包含0。
maxPostSendCountPerQPuint16_t64RDMA:配置单个链路的最大双边发送个数,该值小于或等于prePostReceiveSizePerQP。范围为0~1024,不包含0。
prePostReceiveSizePerQPuint16_t64RDMA:配置单个链路的最大双边接收个数。范围为0~1024,不包含0。
pollingBatchSizeuint16_t4RDMA:配置批量poll cq的个数,默认值适合busy poll,event poll模式在大并发下可以加大。取值范围[1, 1024]。
eventPollingTimeoutuint16_t500配置event poll模式的timeout时间,如果没有IO,idle函数将以timeout的频率被调用。范围为0~2000000,不包含0。
qpSendQueueSizeuint32_t256RDMA:配置发送队列大小(单边+双边),单边的发送队列深度。范围为[16, 65535]。
qpReceiveQueueSizeuint32_t256RDMA:配置接收队列大小(单边+双边)。范围为[16, 65535]。
oobConnHandleThreadCountuint16_t2服务端监听线程数,可使用默认值。取值范围[1, 256]。
oobConnHandleQueueCapuint32_t4096服务端监听队列容量,可使用默认值。
enableMultiRailboolfalseMultiRail开关。
oobPortRangechar[16]-当启用了端口自动选取功能后,端口范围。长度范围为0~16,不包含0。port范围[1024, 65535]。
slaveuint8_t1当前已废弃
ubcModeUBSHcomUbcModeUBSHcomUbcMode::LowLatencyUB-C 专用: UB-C 具有多路径能力,发送时使用多条路径可以增大带宽,对于带宽要求不高、时延敏感型业务又提供单路径直连模式。

[!NOTICE]说明

  • UBS Comm默认开启TLS认证,关闭认证可能存在安全风险,用户可通过enableTls = false进行关闭。
  • 双边操作允许发送最大消息的长度,可结合使用场景通过mrSendReceiveSegSize来配置。
UBSHcomNetOobListenerOptions ​

表 1 参数说明

参数名数据类型描述默认值
ipchar[16]监听的IP。-
portuint16_t监听的端口号,默认是9980。范围是[1024, 65535]。9980
targetWorkerCountuint16_t可用worker数量,0代表全部,默认是全部。UINT16_MAX
UBSHcomNetOobUDSListenerOptions ​

表 1 参数说明

参数名数据类型描述默认值
namechar[96]监听的UDS name。长度范围是(0, 96)。-
permuint16_t0代表不使用文件,其他情况则使用文件,此参数为其权限,最高为0600。0600
targetWorkerCountuint16_t可用worker数量,0代表全部,默认是全部。UINT16_MAX
isCheckbool是否校验权限,默认值为true。true
UBSHcomEpOptions ​

表 1 参数说明

参数名数据类型描述
tcpBlockingIobool是否为阻塞通信模式,默认为false。
cbByWorkerInBlockingbool在阻塞模式下,是否由worker线程来调用回调函数,默认为false。
sendTimeoutint32_t发送超时时间,单位为秒,默认永不超时。timeout = 0:表示立即返回。timeout < 0:表示永不超时,通常设置为-1。timeout > 0:表示秒精度超时最大值为2000s。
UBSHcomNetTransRequest ​

表 1 参数说明

配置项类型默认值说明
lAddressuintptr_t0本地缓存地址。
rAddressuintptr_t0远程缓存地址。
lKeyuint64_t0本地内存区域key。
rKeyuint64_t0远程内存区域key。
sizeuint32_t0缓存大小。有效范围为(0, UINT32_MAX]。
upCtxSizeuint16_t0上下文大小。
upCtxDatachar[64]-上下文数据。
srcSegvoid *nullptr仅UB场景使用,填写发送端的urma_target_seg_t *指针。
dstSegvoid *nullptr仅UB场景使用,填写目的端的urma_target_seg_t *指针。
UBSHcomNetTransOpInfo ​

表 1 参数说明

配置项类型默认值说明
seqNouint32_t0序列号。范围是[0, 1023]。
timeoutuint16_t0超时时间,单位为秒,默认永不超时。timeout = 0:表示立即返回。timeout < 0:表示永不超时,通常设置为-1。timeout > 0:表示秒精度超时最大值为1200s。
errorCodeint16_t0用于存放错误码,不需要主动设置。
flagsuint8_t0标志位。
UBSHcomNetUdsIdInfo ​

表 1 参数说明

参数名数据类型描述默认值
piduint32_t进程ID。0
uiduint32_t用户ID。0
giduint32_t组ID。0
UBSHcomNetMemoryAllocatorOptions ​

表 1 参数说明

参数名数据类型描述默认值
addressuintptr_t内存地址。0
sizeuint64_t内存大小。0
minBlockSizeuint32_t分配时最小单位大小(2的倍数)。范围是[4096, 1073741824],单位是byte。0
bucketCountuint32_t对齐的前提下,HashMap的桶数。8192
alignedAddressbool是否对齐。false
cacheTierCountuint16_t缓存器的层数。8
cacheBlockCountPerTieruint16_t每层有多少个内存块。16
cacheTierPolicyUBSHcomNetMemoryAllocatorCacheTierPolicy分层策略,0为times,1为power。TIER_TIMES
UBSHcomNetTransSglRequest ​

表 1 参数说明

配置项类型默认值说明
*iovUBSHcomNetTransSgeIovNullptr消息数组。该字段在内部有空指针校验。
iovCountuint16_t0数组长度。最大为4。
upCtxSizeuint16_t0上下文大小。
upCtxData[16]char-上下文数据。
UBSHcomNetTransSgeIov ​

表 1 参数说明

配置项类型默认值说明
lAddressuintptr_t0本端内存地址。
rAddressuintptr_t0对端内存地址。
lKeyuint64_t0本端key。
rKeyuint64_t0对端key。
sizeuint32_t0内存大小。
memidunsigned long0显示Urmah在rndv中使用的obmm内存。
srcSegvoid *nullptr仅UB场景使用,填写发送端的urma_target_seg_t *指针。
dstSegvoid *nullptr仅UB场景使用,填写目的端的urma_target_seg_t *指针。
UBSHcomWorkerGroupInfo ​

表 1 参数说明

配置项类型默认值说明
threadPriorityint8_t0线程优先级。范围:[-20, 19]
threadCountuint16_t1线程总数。
groupIduint16_t0worker线程中的组ID。
cpuIdsRangestd:pair<uint32_t,uint32_t>-指定worker线程CPU ID。
UBSHcomNetUdsIdInfo ​

表 1 参数说明

配置项类型默认值说明
piduint32_t0进程ID。
uiduint32_t0用户ID。
giduint32_t0组ID。
UBSHcomNetTransHeader ​

表 1 参数说明

参数名数据类型描述
headerCrcuint32_tcrc值。
opCodeint16_t用户定义的操作码。传输层范围[0, 1023],service层范围[0, 999]。
flagsuint16_t保留位。
seqNouint32_t序列号。
timeoutint16_t超时时间。
errorCodeint16_t错误码。
dataLengthuint32_t数据长度。
immDatauint32_t立即数。
extHeaderTypeUBSHcomExtHeaderType传输层payload中是否存在服务层的头部,用户不使用。

结构体函数定义

重置opcode、seqNo、errorCode和dataLenagth。

实现说明

void Invalid();

参数说明

无

返回值

无

组播结构体 ​

MulticastServiceOptions ​

表 1 参数说明

参数名数据类型描述
maxSendRecvDataSizeuint32_t发送数据块最大值。默认值为1024。
maxSendRecvDataCountuint32_t同时最大发送的数据个数。
workerGroupIduint16_tworker组的id ,需要从0开始,并且保持唯一。
workerGroupThreadCountuint16_tworker线程数,如果设置为0的话,不启动worker线程。
workerGroupModeWorkerModeworker线程工作模式,默认busy_polling。
workerThreadPriorityint8_t线程优先级[-20,19],19优先级最低,-20优先级最高,同nice值。
workerGroupCpuIdsRangestd::pair<uint32_t, uint32_t>worker绑定的CPU核,默认不绑定。
protocolUBSHcomNetDriverProtocol组播driver协议类型,默认是RDMA,当前支持RDMA/TCP
qpSendQueueSizeuint32_tqp发送队列大小。
qpRecvQueueSizeuint32_tqp接收队列大小。
qpPrePostSizeuint32_tqp队列预申请大小。
qpBatchRePostSizeuint32_tqp批量还wr的大小。
completionQueueDepthuint16_tcq队列大小。
maxSubscriberNumuint32_t一个发布者最大的订阅者数量。
publisherWrkGroupNouint8_tsubscriber订阅时对应publisher的groupNum。
periodicCpuIdint发布者超时定时器线程绑定的cpuId
MulticastHeartBeatOptions ​

表 1 参数说明

参数名数据类型描述
heartBeatIdleSecuint16_t发送心跳保活消息间隔时间。
heartBeatProbeTimesuint16_t发送心跳探测失败/没收到回复重试次数,超了认为连接已经断开。
heartBeatProbeIntervalSecuint16_t发送心跳后再次发送时间。
MultiRequest ​

表 1 参数说明

参数名数据类型描述
datavoid *数据地址。
sizeuint32_t数据大小。
lkeyuint64_t已注册内存的lkey。
MultiResponse ​

表 1 参数说明

参数名数据类型描述
datavoid *数据地址。
sizeuint32_t数据大小。

C结构体 ​

服务层结构体 ​

ubs_hcom_mr_info ​

表 1 参数说明

参数名数据类型描述
lAddressuintptr_tmr内存地址。
lKeyubs_hcom_oneside_keymr key。
sizeuint32_tmr内存大小。
ubs_hcom_channel_reply_context ​

表 1 参数说明

参数名数据类型描述
rspCtxvoid *用于回复的RSP上下文。
errorCodeint16_t失败场景下回复的错误码。
ubs_hcom_oneside_request ​

表 1 参数说明

参数名称数据类型描述
lAddressuintptr_t本地的地址。
rAddressuintptr_t远端的地址。
lKeyubs_hcom_oneside_key本地MR的key。
rKeyubs_hcom_oneside_key远端MR的key。
sizeuint32_t数据大小。有效范围为(0, UINT32_MAX]。
ubs_hcom_channel_callback ​

表 1 参数说明

参数名数据类型描述
cbubs_hcom_channel_cb_func回调函数。
argvoid *回调函数的参数指针。
ubs_hcom_flowctl_opts ​

表 1 参数说明

参数名数据类型描述
flowCtrlLevelubs_hcom_channel_flowctl_level流控等级,默认为1。0为死循环等待。1为休眠等待。
intervalTimeMsuint16_t等待时间,单位是微秒。有效范围[1,1000]。
thresholdByteuint64_t阈值数据量,单位为byte。范围是(0,UINT64_MAX]。
ubs_hcom_service_options ​

表 1 参数说明

配置项数据类型默认值说明
mrSendReceiveSegSizeuint32_t-双边发送消息时,采用bcopy模式,发送端和接收端预留的内存大小。范围为(0, 524288000],单位byte。
workerGroupIduint16_t-worker group编号。
workerGroupThreadCountuint16_t-worker group内worker线程数量。
workerGroupModeubs_hcom_service_worker_mode-busy poll/event poll模式。
workerThreadPriorityint8_t-worker线程优先级设置,[-20, 20],20为优先级最低,-20为优先级最高,0为不设置优先级。
workerGroupCpuRangechar[64]-worker group内worker线程cpu绑核id,例:'0-0',为绑在cpu id 0上。ID为UINT32_MAX即为不绑。

说明

UBS Comm默认开启TLS认证,关闭认证可能存在安全风险,用户可通过Service_SetUBSHcomTlsOptions函数进行关闭。

ubs_hcom_service_connect_options ​

表 1 参数说明

参数名类型默认值说明
clientGroupIduint16_t-client端worker group索引。
serverGroupIduint16_t-server端worker group索引。
linkCountuint8_t-channel内单个路径的ep数量。多路径场景下实际ep数量为linkCount * 路径数。
modeubs_hcom_service_polling_mode-channel内ep poll模式。
cbTypeubs_hcom_channel_cb_type-cb方式,每次传入或全局同一个cb。
payLoadchar[512]-用户可携带的自定义信息。
ubs_hcom_channel_request ​

表 1 参数说明

参数名类型默认值说明
addressvoid *-消息内存首地址。
sizeuint32_t-消息大小。
opcodeuint16_t-用户自定义的opcode。
ubs_hcom_channel_response ​

表 1 参数说明

参数名类型默认值说明
addressvoid *-消息内存首地址。
sizeuint32_t-消息大小。
errorCodeuint16_t-用户自定义的errorCode,对端回复时用户可填写。
ubs_hcom_twoside_threshold ​

表 1 参数说明

参数名类型默认值说明
splitThresholduint32_tUINT32_MAX拆包阈值。UBC专用。此值表示拆包发送的阈值,也可以当做拆包发送时每个小包的最大长度(含额外头部),一般将其配置成小于等于SegSize的值。可配置范围为 [128, maxSendRecvDataSize],特别的配置成UINT32_MAX会禁用拆包功能。
rndvThresholduint32_tUINT32_MAXrndv阈值。
ubs_hcom_oneside_key ​

表 1 参数说明

参数名类型默认值说明
keysuint64_t[4]-已注册内存的key。多路径场景每个路径有一个key,单路径场景只使用key[0]。

传输层结构体 ​

ubs_hcom_send_request ​

表 1 参数说明

参数名类型默认值说明
datauintptr_t0准备发送给对方的数据地址。
sizeuint32_t0数据大小。
upCtxSizeuint16_t0用户上下文大小。
upCtxDatachar[16]-用户上下文。
ubs_hcom_opinfo ​

表 1 参数说明

参数名参数说明数据类型描述
seqNouint32_t序列号。范围是[0, 1023]。
timeoutuint16_t超时时间,单位为秒。0为立刻超时,负数为永不超时。范围[-1, 1200]。
errorCodeint16_t错误码。
flagsuint8_t标志位。
ubs_hcom_device_info ​

表 1 参数说明

参数名数据类型描述
maxSgeintRDMA设备信息,最大的SGL的iov count。
ubs_hcom_readwrite_request ​

表 1 参数说明

参数名数据类型描述
lMRAuintptr_t本端MR的地址。
rMRAuintptr_t远端MR的地址。
lKeyuint64_t本端MR的密钥。
rKeyuint64_t远端MR的密钥。
sizeuint32_t数据大小。
upCtxSizeuint16_t用户上下文的大小。
upCtxDatachar[16]用户上下文。
ubs_hcom_readwrite_sge ​

表 1 参数说明

参数名数据类型描述
lAddressuintptr_t本端MR的地址。
rAddressuintptr_t远端MR的地址。
lKeyuint64_t本端MR的密钥。
rKeyuint64_t远端MR的密钥。
sizeuint32_t数据大小。
ubs_hcom_readwrite_request_sgl ​

表 1 参数说明

配置项类型默认值说明
*iovubs_hcom_readwrite_sge-消息数组。
iovCountuint16_t-小于max count(NET_SGE_MAX_IOV)。
upCtxSizeuint16_t-上下文大小。
upCtxData[16]char-上下文数据。
ubs_hcom_memory_region_info ​

表 1 参数说明

参数名数据类型描述
lAddressuintptr_tMR的地址。
lKeyuint64_tMR的key。
sizeuint32_tMR的大小。
ubs_hcom_request_context ​

表 1 参数说明

参数名数据类型描述
typeubs_hcom_request_type请求的操作类型[0, 8]。
opCodeuint16_t操作码,取值范围[0, 1023]。
flagsuint16_theader中的标志位。
timeoutint16_t超时时间。
errorCodeint16_t错误码。
resultint结果值0代表成功。
msgDatavoid *数据指针。用于接收操作。
msgSizeuint32_t数据大小。用于接收操作。
seqNouint32_t序列号。用于post send raw。
epubs_hcom_endpoint建链创建好的EP对象。
originalSendubs_hcom_send_request用于C_OP_REQUEST_POSTED复制的结构体信息。
originalRequbs_hcom_readwrite_request用于C_OP_READWRITE_DONE复制的结构体信息。
originalSglRequbs_hcom_readwrite_request_sgl用于C_OP_READWRITE_DONE复制的结构体信息。
ubs_hcom_response_context ​

表 1 参数说明

参数名数据类型描述
opCodeuint16_t操作编号。
seqNouint32_t序列号。
msgDatavoid *接收到的消息。
msgSizeuint32_t消息长度。
ubs_hcom_uds_id_info ​

表 1 参数说明

参数名数据类型描述
piduint32_t进程ID。
uiduint32_t用户ID。
giduint32_t组ID。
ubs_hcom_driver_opts ​

表 1 参数说明

参数名类型默认值说明
modeubs_hcom_driver_working_mode-Worker工作模式:C_BUSY_POLLING = 0C_EVENT_POLLING = 1
mrSendReceiveSegCountuint32_t-双边发送消息时,采用bcopy模式,发送端预留的内存块数量。范围为(0, 65535]。
mrSendReceiveSegSizeuint32_t-双边发送消息时,采用bcopy模式,发送端和接收端预留的内存大小。范围为(0, 524288000],单位byte。shm:shmChannel mSendDcBuckSize
netDeviceIpMaskchar[256]-监听的本机网卡配置的IP掩码,校验掩码下的网卡是否存在。长度范围为(0, 256]。
netDeviceIpGroupchar[1024]-RDMA协议下,用于精准筛选IP地址所对应的网卡。长度范围为(0, 1024]。
completionQueueDepthuint16_t-RDMA :CQ队列深度。SHM:eventqueue size。范围为(0, 8192]。
maxPostSendCountPerQPuint16_t-RDMA:配置单个链路的最大双边发送个数,该值小于或等于 prePostReceiveSizePerQP。范围为(0, 1024]。
prePostReceiveSizePerQPuint16_t-RDMA:配置单个链路的最大双边接收个数。范围为(0, 1024]。
pollingBatchSizeuint16_t-RDMA:配置批量poll cq的个数,默认值适合busy poll,event poll模式在大并发下可以加大。取值范围[1, 1024]。
qpSendQueueSizeuint32_t-RDMA:配置发送队列大小(单边+双边),单边的发送队列深度。取值范围[16, 65536]。
qpReceiveQueueSizeuint32_t-RDMA:配置接收队列大小(单边+双边)。取值范围[16, 65536]。
dontStartWorkersuint16_t-启动Worker开关。false:通用场景,Server端对象,或者有建立event poll链路。true:典型场景,Client端并且只建立self poll链路。
workerGroupschar[64]-设置Worker组,例如:"1,2,3" ,当前有3个Worker组,worker[0]有1个worker,worker[1]有2个worker,worker[2]有3个worker。长度范围为(0, 64]。
workerGroupsCpuSetchar[128]-设置Worker线程绑核,例如:"1-1,2-3,4-6"的绑核,对应上方举例"1,2,3"3个Worker组的配置,worker[0]有1个Worker线程绑在cpuId 1,worker[1]有2个Worker线程,绑在cpuId 2和3,worker[2]有3个Worker线程,绑在cpuId 4、5、6上。长度范围为(0, 128]。
workerThreadPriorityint-Worker线程优先级,取值范围[-20, 20],20优先级最低,-20优先级最高,0不进行优先级设置。
heartBeatIdleTimeuint16_t-正常发送心跳的周期。取值范围[1, 1024],单位s。
heartBeatProbeTimesuint16_t-最大允许发送保活探测包的次数(RDMA不生效)。取值范围[1, 1024],单位s。
heartBeatProbeIntervaluint16_t-没有接收到对方确认,继续发送保活探测包的发送频率。取值范围[1, 1024],单位s。
tcpUserTimeoutint16_t-IO时的超时时间,-1表示直接返回,0表示永久阻塞。取值范围[1, 1024],单位s。
tcpEnableNoDelaybool-TCP的TCP_NODELAY选项设置。
tcpSendZCopybool-TCP协议下,是否在双边消息时在UBS Comm内部是否会拷贝用户消息到内部内存。如果不拷贝,则需要保证消息的生命周期长于消息发送完成回调函数调用时。
tcpSendBufSizeuint16_t-TCP发送缓冲区大小。范围为(0, 4096],单位KB。
tcpReceiveBufSizeuint16_t-TCP接收缓冲区大小。范围为(0, 4096],单位KB。
enableTlsuint16_t-加密特性开关,取值仅为0/1
secTypeubs_hcom_driver_sec_type-建链校验方式。
tlsVersionubs_hcom_driver_tls_version-TLS的版本。
cipherSuiteubs_hcom_driver_cipher_suite-加密算法。
oobTypeubs_hcom_driver_oob_type-设置监听线程的类型,节点间只能配置成C_NET_OOB_TCP,节点内可以配置成C_NET_OOB_TCP或C_NET_OOB_UDS。C_NET_OOB_TCP=0C_NET_OOB_UDS=1
versionuint8_t-版本校验。
maxConnectionNumuint32_t-最大连接数。范围为(0, UINT32_MAX]。
oobPortRangechar[16]-当启用了端口自动选取功能后,端口范围。长度范围为(0, 16]。port范围[1024, 65535]。

说明

UBS Comm默认开启TLS认证,关闭认证可能存在安全风险,用户可通过enableTls = false进行关闭。

ubs_hcom_driver_listen_opts ​

表 1 参数说明

参数名数据类型描述
namechar[16]监听的IP地址。长度范围是(0, 16]。
portuint16_t监听的端口号。范围是[1024, 65535]。
targetWorkerCountuint16_t可用worker数量,0代表全部,默认可使用worker数量为全部。
ubs_hcom_driver_uds_listen_opts ​

表 1 参数说明

参数名数据类型描述
namechar[96]监听的UDS name。长度范围(0, 96)。
permuint16_t0代表不使用文件,其他情况则使用文件,此参数为其权限,最高为0600。
targetWorkerCountuint16_t可用worker数量,0代表全部,默认是全部。
ubs_hcom_memory_allocator_options ​

表 1 参数说明

参数名数据类型描述
addressuintptr_t内存地址。
sizeuint64_t内存大小。
minBlockSizeuint32_t分配时最小单位大小(2的倍数)。范围是[4096, 1073741824],单位是byte。
bucketCountuint32_t对齐的前提下,HashMap的桶数。
alignedAddressuint16_t是否对齐。0:不对齐。1:对齐。
cacheTierCountuint16_t缓存器的层数。
cacheBlockCountPerTieruint16_t每层有多少个内存块。
cacheTierPolicyubs_hcom_memory_allocator_cache_tier_policy分层策略。0:times1:power

枚举值参考 ​

C++枚举值 ​

服务层枚举值 ​

UBSHcomChannelBrokenPolicy ​

枚举说明

断链策略,如表 1 RDMA协议错误码所示。

表 1 枚举说明

枚举名数值描述
BROKEN_ALL0当一个EP断开则断开channel。
RECONNECT1当一个EP断开尝试重连,若失败则断开channel。
KEEP_ALIVE2当一个EP断开,保持其他EP正常功能,直至所有EP断开。
Operation ​

枚举说明

此UBSHcomServiceContext所包含的操作类别,如表 1 RDMA协议错误码所示。

表 1 枚举说明

枚举名数值描述
SER_RECEIVED0接收到新消息。
SER_RECEIVED_RAW1接收到新raw消息。
SER_SENT2消息发送完成。
SER_SENT_RAW3raw消息发送完成。
SER_ONE_SIDE4单边操作完成。
SER_INVALID_OP_TYPE255非法操作。
UBSHcomClientPollingMode ​

枚举说明

客户端poll模式

表 1 枚举说明

枚举名数值描述
WORKER_POLL0使用worker线程poll。
SELF_POLL1使用调用通信接口的线程poll。
UNKNOWN255未知。
UBSHcomChannelCallBackType ​

枚举说明

Channel的回调函数类型,如表 1 RDMA协议错误码所示。

表 1 枚举说明

枚举名数值描述
CHANNEL_FUNC_CB0会使用用户传入到异步通信方法中的回调函数。
CHANNEL_GLOBAL_CB1会使用注册给NetService的回调函数。
UBSHcomFlowCtrlLevel ​

枚举说明

Channel的流控等待策略,如表 1 RDMA协议错误码所示。

表 1 枚举说明

枚举名数值描述
HIGH_LEVEL_BLOCK0忙循环等待。
LOW_LEVEL_BLOCK1睡眠指定时长等待。
UBSHcomChannelState ​

枚举说明

Channel状态,如表 1 RDMA协议错误码所示。

表 1 枚举说明

枚举名数值描述
CH_NEW0新建状态。
CH_ESTABLISHED1就绪状态。
CH_CLOSE2关闭状态。
CH_DESTROY3销毁状态。
UBSHcomOobType ​

枚举说明

建链类型,如表 1 RDMA协议错误码所示。

表 1 枚举说明

枚举名数值描述
TCP0TCP建链方式。
UDS1UDS建链方式。
UBSHcomSecType ​

枚举说明

建链安全校验,如表 1 RDMA协议错误码所示。

表 1 枚举说明

枚举名数值描述
NET_SEC_DISABLED0不校验。
NET_SEC_VALID_ONE_WAY1单边校验。
NET_SEC_VALID_TWO_WAY2双边校验。

传输层枚举值 ​

UBSHcomNetEndPointState ​

枚举说明

描述EP此时所处的状态,如表 1 RDMA协议错误码所示。

表 1 枚举说明

枚举名数值描述
NEP_NEW0新建状态。
NEP_ESTABLISHED1就绪状态。
NEP_BROKEN2断开状态。
NEP_BUFF3-
UBSHcomNetCipherSuite ​

枚举说明

加密算法,如表 1 RDMA协议错误码所示。

表 1 枚举说明

枚举名数值描述
AES_GCM_1280AES_GCM_128。
AES_GCM_2561AES_GCM_256。
AES_CCM_1282AES_CCM_128。
CHACHA20_POLY13053CHACHA20_POLY1305。
UBSHcomTlsVersion ​

枚举说明

TLS的版本信息,如表 1 RDMA协议错误码所示。

表 1 枚举说明

枚举名数值描述
TLS_1_27711.2版本。
TLS_1_37721.3版本。
NN_OpType ​

枚举说明

此UBSHcomNetRequestContext所包含的操作类别,如表 1 RDMA协议错误码所示。

表 1 枚举说明

枚举名数值描述
NN_SENT0消息发送完成。
NN_SENT_RAW1raw消息发送完成。
NN_SENT_RAW_SGL2SGL消息发送完成。
NN_RECEIVED3接收到新消息。
NN_RECEIVED_RAW4接收到新raw消息。
NN_WRITTEN5写操作完成。
NN_READ6读操作完成。
NN_SGL_WRITTEN7SGL写操作完成。
NN_SGL_READ8SGL读操作完成。
NN_INVALID_OP_TYPE255非法操作。
UBSHcomNetMemoryAllocatorType ​

枚举说明

内存分配器类型,如表 1 RDMA协议错误码所示。

表 1 枚举说明

枚举名数值描述
DYNAMIC_SIZE0动态大小。
DYNAMIC_SIZE_WITH_CACHE1动态大小,配有缓存器。
UBSHcomNetMemoryAllocatorCacheTierPolicy ​

枚举说明

内存分配器的缓存器分级策略,如表 1 RDMA协议错误码所示。

表 1 枚举说明

枚举名数值描述
TIER_TIMES0基准值的倍数策略。
TIER_POWER1基准值乘以2的幂数策略。
UBSHcomPeerCertVerifyType ​

枚举说明

对端校验类型,如表 1 RDMA协议错误码所示。

表 1 枚举说明

枚举名数值描述
VERIFY_BY_NONE0对端不需要校验。
VERIFY_BY_DEFAULT1对端使用UBS Comm内部校验方式。
VERIFY_BY_CUSTOM_FUNC2对端使用用户定义的校验方式。
UBSHcomNetDriverSecType ​

枚举说明

UBSHcomNetDriver校验类型,如表 1 RDMA协议错误码所示。

表 1 枚举说明

枚举名数值描述
NET_SEC_DISABLED0不需要校验。
NET_SEC_VALID_ONE_WAY1单边校验,仅服务端校验客户端。
NET_SEC_VALID_TWO_WAY2双边校验。
NetDriverOobType ​

枚举说明

OOB建链时协议,如表 1 RDMA协议错误码所示。

表 1 枚举说明

枚举名数值描述
NET_OOB_TCP0TCP协议。
NET_OOB_UDS1UDS协议。
NET_OOB_UB2UBC自举建链,仅支持UBC协议配置。
UBSHcomNetDriverWorkingMode ​

枚举说明

worker线程工作模式,如表 1 RDMA协议错误码所示。

表 1 枚举说明

枚举名数值描述
NET_BUSY_POLLING0busy polling。
NET_EVENT_POLLING1event polling。
UBSHcomNetDriverLBPolicy ​

枚举说明

worker线程分配策略,如表 1 RDMA协议错误码所示。

表 1 枚举说明

枚举名数值描述
NET_ROUND_ROBIN0轮询策略。
NET_HASH_IP_PORT1根据IP和Port进行取哈希值分配策略。
UBSHcomNetDriverProtocol ​

枚举说明

UBSHcomNetDriver通信协议。

枚举名数值描述
RDMA0RDMA。
TCP1TCP。
UDS2UDS。
SHM3SHM。
RDMA_MLX5_RC4需求MLX5网卡的RDMA。
UBC7UBC。
HSHMEM8HSHMEM。
UNKNOWN255不支持协议。
UBSHcomUbcMode ​

枚举说明

UBC协议专用能力。UB-C 具有多路径能力,发送时使用多条路径可以增大带宽,对于带宽要求不高、时延敏感型业务又提供单路径直连模式。

枚举名数值描述
Disabled-1禁用多路径能力(默认)。
LowLatency0低时延模式,使用单路径发送。
HighBandwidth1高带宽模式,使用多条路径发送。

组播枚举值 ​

PublisherState ​

枚举说明

发布者状态。

枚举名数值描述
PUB_NEW0新建状态。
PUB_ESTABLISHED1就绪状态。
PUB_CLOSE2关闭状态。
PUB_DESTROY3销毁状态。
SubscriberRspStatus ​

枚举说明

订阅者回复状态。

枚举名数值描述
SUCCESS0已回复(成功)。
INIT1初始还未发送。
SEND_ERROR2发送错误。
TIMEOUT3超时未回复。
BROKEN4订阅者离线。
UNKNOWN_ERROR5其他未知错误。

C枚举值 ​

服务层枚举值 ​

ubs_hcom_channel_cb_type ​

枚举说明

Channel的回调函数类型,如表 1 RDMA协议错误码所示。

表 1 枚举说明

枚举名数值描述
C_CHANNEL_FUNC_CB0会使用用户传入到异步通信方法中的回调函数。
C_CHANNEL_GLOBAL_CB1会使用注册给NetService的回调函数。
ubs_hcom_service_context_type ​

枚举说明

此ubs_hcom_service_context所包含的操作类别,如表 1 RDMA协议错误码所示。

表 1 枚举说明

枚举名数值描述
SER_RECEIVED0接收到新消息。
SER_RECEIVED_RAW1接收到新raw消息。
SER_SENT2消息发送完成。
SER_SENT_RAW3raw消息发送完成。
SER_ONE_SIDE4单边操作完成。
SERVICE_RNDV5rndv请求。
SER_INVALID_OP_TYPE255非法操作。
ubs_hcom_channel_flowctl_level ​

枚举说明

Channel的流控等待策略,如表 1 RDMA协议错误码所示。

表 1 枚举说明

枚举名数值描述
HIGH_LEVEL_BLOCK0忙循环等待。
LOW_LEVEL_BLOCK1睡眠指定时长等待。
ubs_hcom_service_worker_mode ​

枚举说明

worker线程工作模式,如表 1 RDMA协议错误码所示。

表 1 枚举说明

枚举名数值描述
C_SERVICE_BUSY_POLLING0busy polling。
C_SERVICE_EVENT_POLLING1event polling。
ubs_hcom_service_lb_policy ​

枚举说明

worker线程分配策略,如表 1 RDMA协议错误码所示。

表 1 枚举说明

枚举名数值描述
SERVICE_ROUND_ROBIN0轮询策略。
SERVICE_HASH_IP_PORT1根据IP和Port进行取哈希值分配策略。
ubs_hcom_service_cipher_suite ​

枚举说明

加密算法,如表 1 RDMA协议错误码所示。

表 1 枚举说明

枚举名数值描述
C_SERVICE_AES_GCM_1280AES_GCM_128。
C_SERVICE_AES_GCM_2561AES_GCM_256。
C_SERVICE_AES_CCM_1282AES_CCM_128。
C_SERVICE_CHACHA20_POLY13053CHACHA20_POLY1305。
ubs_hcom_service_tls_version ​

枚举说明

TLS的版本信息,如表 1 RDMA协议错误码所示。

表 1 枚举说明

枚举名数值描述
C_SERVICE_TLS_1_27711.2版本。
C_SERVICE_TLS_1_37721.3版本。
ubs_hcom_service_secure_type ​

枚举说明

NetService校验类型,如表 1 RDMA协议错误码所示。

表 1 枚举说明

枚举名数值描述
C_SERVICE_NET_SEC_DISABLED0不需要校验。
C_SERVICE_NET_SEC_VALID_ONE_WAY1单边校验,仅服务端校验客户端。
C_SERVICE_NET_SEC_VALID_TWO_WAY2双边校验。
ubs_hcom_service_channel_policy ​

枚举说明

Channel断链策略,如表 1 RDMA协议错误码所示。

表 1 枚举说明

枚举名数值描述
C_CHANNEL_BROKEN_ALL0当一个EP断开则断开channel。
C_CHANNEL_RECONNECT1当一个EP断开尝试重连,若失败则断开channel。
C_CHANNEL_KEEP_ALIVE2当一个EP断开,保持其他EP正常功能,直至所有EP断开。
ubs_hcom_service_channel_handler_type ​

枚举说明

链路相关的回调函数类型,如表 1 RDMA协议错误码所示。

表 1 枚举说明

枚举名数值描述
C_CHANNEL_NEW0新建链的回调函数。
C_CHANNEL_BROKEN1断链的回调函数。
ubs_hcom_service_handler_type ​

枚举说明

通信相关的回调函数类型,如表 1 RDMA协议错误码所示。

表 1 枚举说明

枚举名数值描述
C_SERVICE_REQUEST_RECEIVED0接收新消息的回调函数。
C_SERVICE_REQUEST_POSTED1消息发送完成的回调函数。
C_SERVICE_READWRITE_DONE2读写完成的回调函数。
ubs_hcom_service_type ​

枚举说明

NetService通信协议,如表 1 RDMA协议错误码所示。

表 1 枚举说明

枚举名数值描述
C_SERVICE_RDMA0RDMA。
C_SERVICE_TCP1TCP。
C_SERVICE_UDS2UDS。
C_SERVICE_SHM3SHM。
C_SERVICE_UBC6UBC。
C_SERVICE_HSHMEM7HSHMEM(北冥版本暂不支持)。
ubs_hcom_service_polling_mode ​

传输层枚举值 ​

ubs_hcom_request_type ​

枚举说明

此ubs_hcom_request_context所包含的操作类别,如表 1 RDMA协议错误码所示。

表 1 枚举说明

枚举名数值描述
C_SENT0消息发送完成。
C_SENT_RAW1raw消息发送完成。
C_SENT_RAW_SGL2SGL消息发送完成。
C_RECEIVED3接收到新消息。
C_RECEIVED_RAW4接收到新raw消息。
C_WRITTEN5写操作完成。
C_READ6读操作完成。
C_SGL_WRITTEN7SGL写操作完成。
C_SGL_READ8SGL读操作完成。
ubs_hcom_driver_working_mode ​

枚举说明

worker线程工作模式,如表 1 RDMA协议错误码所示。

表 1 枚举说明

枚举名数值描述
C_BUSY_POLLING0busy polling。
C_EVENT_POLLING1event polling。
ubs_hcom_driver_type ​

枚举说明

UBSHcomNetDriver通信协议,如表 1 RDMA协议错误码所示。

表 1 枚举说明

枚举名数值描述
C_DRIVER_RDMA0RDMA。
C_DRIVER_TCP1TCP。
C_DRIVER_UDS2UDS。
C_DRIVER_SHM3SHM。
C_DRIVER_UBC6UBC。
ubs_hcom_driver_oob_type ​

枚举说明

OOB建链时协议,如表 1 RDMA协议错误码所示。

表 1 枚举说明

枚举名数值描述
C_NET_OOB_TCP0TCP协议。
C_NET_OOB_UDS1UDS协议。
ubs_hcom_driver_sec_type ​

枚举说明

ubs_hcom_driver校验类型,如表 1 RDMA协议错误码所示。

表 1 枚举说明

枚举名数值描述
C_NET_SEC_DISABLED0不需要校验。
C_NET_SEC_VALID_ONE_WAY1单边校验,仅服务端校验客户端。
C_NET_SEC_VALID_TWO_WAY2双边校验。
ubs_hcom_driver_tls_version ​

枚举说明

TLS的版本信息,如表 1 RDMA协议错误码所示。

表 1 枚举说明

枚举名数值描述
C_TLS_1_27711.2版本。
C_TLS_1_37721.3版本。
ubs_hcom_driver_cipher_suite ​

枚举说明

加密算法,如表 1 RDMA协议错误码所示。

表 1 枚举说明

枚举名数值描述
C_AES_GCM_1280AES_GCM_128。
C_AES_GCM_2561AES_GCM_256。
C_AES_CCM_1282AES_CCM_128。
C_CHACHA20_POLY13053CHACHA20_POLY1305。
ubs_hcom_peer_cert_verify_type ​

枚举说明

对端校验类型,如表 1 RDMA协议错误码所示。

表 1 枚举说明

枚举名数值描述
C_VERIFY_BY_NONE0对端不需要校验。
C_VERIFY_BY_DEFAULT1对端使用UBS Comm内部校验方式。
C_VERIFY_BY_CUSTOM_FUNC2对端使用用户定义的校验方式。
ubs_hcom_memory_allocator_cache_tier_policy ​

枚举说明

内存分配器的缓存器分级策略,如表 1 RDMA协议错误码所示。

表 1 枚举说明

枚举名数值描述
C_TIER_TIMES0基准值的倍数策略。
C_TIER_POWER1基准值乘以2的幂数策略。
ubs_hcom_memory_allocator_type ​

枚举说明

内存分配器类型,如表 1 RDMA协议错误码所示。

表 1 枚举说明

枚举名数值描述
C_DYNAMIC_SIZE0动态大小。
C_DYNAMIC_SIZE_WITH_CACHE1动态大小,配有缓存器。
ubs_hcom_ep_handler_type ​

枚举说明

链路相关的回调函数类型,如表 1 RDMA协议错误码所示。

表 1 枚举说明

枚举名数值描述
C_EP_NEW0新建链的回调函数。
C_EP_BROKEN1断链的回调函数。
ubs_hcom_op_handler_type ​

枚举说明

通信相关的回调函数类型,如表 1 RDMA协议错误码所示。

表 1 枚举说明

枚举名数值描述
C_OP_REQUEST_RECEIVED0接收新消息的回调函数。
C_OP_REQUEST_POSTED1消息发送完成的回调函数。
C_OP_READWRITE_DONE2读写完成的回调函数。
ubs_hcom_polling_mode ​

表 1 枚举说明

枚举名数值描述
NET_C_EP_SELF_POLLING0self ep模式。
NET_C_EP_EVENT_POLLING1非self ep模式。
ubs_hcom_service_polling_mode ​

枚举说明

client poll信息模式,如下表所示。

表 1 枚举说明

枚举名数值描述
C_CLIENT_WORKER_POLL0非self poll 模式。
C_CLIENT_SELF_POLL1self poll模式。

环境变量参考 ​

表 1 环境变量参数

参数名称参数类型参数说明取值范围缺省值
HCOM_FILE_PATH_PREFIXStringUBS Comm生成的文件路径的前缀,通过前缀保证文件只会在当前路径下(需要已存在相应路径)创建删除。--
HCOM_OPENSSL_PATHString表示UBS Comm依赖的OpenSSL或HITLS库的路径。OpenSSL的路径为libssl.so和libcrypt.so的目录路径。HiTLS的路径为libhitls_cca.so、libhitls_tls.so、libhitls_pse.so、libhitls_crypto.so、libhitls_bsl.so、libsecurec.so的目录路径(可根据版本说明书中的CCA版本号获取hitls相关库)。--
HCOM_TRACE_LEVELintUBS Comm的打点日志等级。0:未开启打点。1:打开高优先级打点。2:打开中优先级打点。3:打开低优先级打点。0 ~ 30
HCOM_QP_TRAFFIC_CLASSintUBS Comm中的RDMA协议的traffic_class字段设置优先级。0 ~ 255106
HCOM_SHM_EXCHANGE_FD_QUEUE_SIZEintUBS Comm发送fds内部队列的大小。10 ~ 25610
HCOM_CONNECTION_RETRY_TIMESintUBS Comm建链重试的次数。1 ~ 105
HCOM_CONNECTION_RETRY_INTERVAL_SECintUBS Comm建链重试的间隔时间。单位:s。1 ~ 6020
HCOM_SET_LOG_LEVELintUBS Comm打印日志级别。0:打印debug、info、warn和error日志。1:打印info、warn和error日志。2:打印warn和error日志。3:打印error日志。0 ~ 31
HCOM_CONNECTION_RECV_TIMEOUT_SECint建链时recv接收超时时间设置。单位:s。1 ~ 7200300
HCOM_CONNECTION_SEND_TIMEOUT_SECint建链时send发送超时时间设置。单位:s。1 ~ 7200300
HCOM_ENABLE_TRACEintUBS Comm trace打点开关。0:打印level 0打点1:打印level 1打点-
HCOM_INLINE_THRESHOLDint双边inline阈值。0 ~ UINT32_MAX(实际上限与网卡相关)0
HCOM_ENABLE_SPLIT_SENDint设置是否拆包发送。0:不拆包1:拆包0
HCOM_SHM_MAX_ENQUEUE_STUCK_TIMEintSHM协议事件处理超时时间。单位:s。1 ~ 720010
HCOM_SHM_ENQUEUE_TIMEOUTintSHM协议写队列时间超时时间。单位:s。1 ~ 720020
HCOM_UB_CONNECTION_POLL_TIMEOUTlong公知Jetty接收消息超时时间。单位:s。1 ~ 18060
HCOM_SLAVE_NUM-硬分区环境使用,已废弃。--

环境变量设置示例如下:

xml
export HCOM_FILE_PATH_PREFIX="/home/uds/socket/file"
export HCOM_OPENSSL_PATH="/home/openssl"
export HCOM_TRACE_LEVEL=0
export HCOM_QP_TRAFFIC_CLASS=106
export HCOM_SHM_EXCHANGE_FD_QUEUE_SIZE=10
export HCOM_CONNECTION_RETRY_TIMES=5
export HCOM_CONNECTION_RETRY_INTERVAL_SEC=2
export HCOM_SET_LOG_LEVEL=1

错误码 ​

服务层错误码 ​

表 1 服务层错误码

错误码数错误码含义
0SER_OK成功。
500SER_ERROR内部错误。
501SER_INVALID_PARAM无效参数。
502SER_NEW_OBJECT_FAILED对象生成失败。
503SER_CREATE_TIMEOUT_THREAD_FAILED创建超时处理线程失败。
504SER_NEW_MESSAGE_DATA_FAILED生成消息失败。
505SER_NOT_ESTABLISHEDNetChannel未建链。
506SER_STORE_SEQ_DUP序列号重复。
507SER_STORE_SEQ_NO_FOUND序列号不存在。
508SER_RSP_SIZE_TOO_SMALL消息大小不一致。
509SER_TIMEOUT超时。
510SER_TIMER_NOT_WORK超时处理线程开启失败。
511SER_NOT_ENABLE_RNDV开启Rndv失败。
512SER_RNDV_FAILED_BY_PEER对端使用Rndv失败。
513SER_CHANNEL_ID_DUPChannel Id重复。
514SER_EP_NOT_BROKEN_ALLNetChannel中所有EP未发生断链。
515SER_CHANNEL_NOT_EXISTNetChannel不存在。
516SER_CHANNEL_RECONNECT_OVER_WINDOW-
517SER_EP_BROKEN_DURING_CONNECTINGNetChannel中所有EP均断链。
518SER_NOT_SUPPORT_SERVER_RECONNECT不支持重建链。
519SER_STOP服务停止。
520SER_NULL_INSTANCE空指针。
521SER_UNSUPPORTED不支持的操作。
522SER_INVALID_IP非法IP。
523SER_MALLOC_FAILED分配内存失败。
524SER_SPLIT_INVALID_MSG拆包消息无效。

传输层错误码 ​

表 1 传输层错误码

错误码数错误码含义
0NN_OK成功。
100NN_ERROR内部错误。
101NN_INVALID_IP无效IP地址。
102NN_NEW_OBJECT_FAILED创建对象失败。
103NN_INVALID_PARAM参数无效。
104NN_TWO_SIDE_MESSAGE_TOO_LARGE双边消息size过大。
105NN_INVALID_OPCODE无效opCode。
106NN_EP_NOT_ESTABLISHEDEP未建链。
107NN_EP_NOT_INITIALIZEDEP未初始化。
108NN_BLOCK_QUEUE_SEM_INIT_FAILED队列初始化失败。
109NN_TIMEOUT超时。
110NN_INVALID_OPERATION无效操作。
111NN_MALLOC_FAILED获得内存失败。
112NN_SEQ_NO_NOT_MATCHEDseqNo不匹配。
113T_INITIALIZEDUBSHcomNetDriver未初始化。
114NN_GET_BUFF_FAILED获取缓存失败。
115NN_MSG_TIMEOUT超时。
116NN_MSG_CANCELED写操作取消。
117NN_MSG_ERROR消息错误。
118NN_CONNECT_REFUSED连接拒绝。
119NN_CONNECT_PROTOCOL_MISMATCH连接协议不匹配。
120NN_INVALID_LKEY无效内存key。
121NN_EP_BROKENEP断链。
122NN_EP_CLOSEEP关闭。
123NN_PARAM_INVALID参数无效。
124NN_OOB_LISTEN_SOCKET_ERROR带外链路监听开启失败。
125NN_OOB_CONN_SEND_ERROR带外链路发送失败。
126NN_OOB_CONN_RECEIVE_ERROR带外链路接收失败。
127NN_OOB_CONN_CB_NOT_SET带外链路连接回调未设置。
128NN_OOB_CLIENT_SOCKET_ERROR带外链路客户端发起连接失败。
129NN_OOB_SSL_INIT_ERROR加密初始化失败。
130NN_OOB_SSL_WRITE_ERROR加密写失败。
131NN_OOB_SSL_READ_ERROR加密读失败。
132NN_HEARTBEAT_CREATE_EPOLL_FAILED心跳检测创建失败。
133NN_HEARTBEAT_SET_SOCKET_OPT_FAILED心跳检测设置失败。
134NN_HEARTBEAT_IP_ALREADY_EXISTED心跳检测IP地址已存在。
135NN_HEARTBEAT_IP_ADD_FAILED心跳检测IP地址添加失败。
136NN_HEARTBEAT_IP_ADD_EPOLL_FAILED心跳检测IP地址添加失败。
137NN_HEARTBEAT_IP_REMOVE_EPOLL_FAILED心跳检测IP地址移除失败。
138NN_HEARTBEAT_IP_NO_FOUND心跳检测IP地址未匹配。
139NN_ENCRYPT_FAILED加密失败。
140NN_DECRYPT_FAILED解密失败。
141NN_OOB_SEC_PROCESS_ERROR认证失败。
142NN_EXCHANGE_FD_NOT_SUPPORT不支持交换Fd。
143NN_VALIDATE_HEADER_CRC_INVALID校验Header CRC无效。
144NN_UDS_ID_INFO_NOT_SUPPORT不支持获取UDS ID。
145NN_GET_UDS_ID_INFO_FAILED获取UDS ID失败。
146NN_VERSION_CHECK_FAILED版本校验失败。
147NN_URMA_ACCESS_ABRTurma返回了错误消息,远端内存访问失败。
148NN_URMA_ACK_TIMEOUTurma返回了错误消息,本端send ack超时。对端rqe不足,一般是由于发送速率大于接收速率导致,偶现情况下建议等待后重试。路由配置错误,对端收到了消息但没有回复ACK,建议排查路由表。

说明

部分常见错误码详细说明:

  • 114:在RDMA和TCP协议的双边非SGL通信方式时,为了发送消息的持久化和RDMA特性需求,需要把用户发送的消息内容拷贝到UBS Comm内部预申请的内存中。但是在并发很大的情况下,可能将预申请的内存耗尽,在耗尽的时候如果再发送双边非SGL消息时就会产生此错误码。解决方式可以是调大UBSHcomNetDriverOptions中的mrSendReceiveSegCount参数来扩大预申请内存;如果是对端接收压力过大导致本端发送也可以调整对端接收队列的长度prePostReceiveSizePerQP。
  • 128:在进行建链的时候客户端建链失败时会返回此错误。请检查服务端是否启动并且启动监听线程,然后检查客户端发起建链的IP地址和端口是否和服务端监听的一致,推荐先启动服务端,再使用客户端去建链。

RDMA协议错误码 ​

表 1 RDMA协议错误码

错误码数错误码含义
0RR_OK成功。
200RR_PARAM_INVALID参数无效。
201RR_MEMORY_ALLOCATE_FAILED分配内存失败。
202RR_NEW_OBJECT_FAILED创建对象失败。
203RR_OPEN_FILE_FAILED打开文件失败。
204RR_READ_FILE_FAILED读取文件失败。
205RR_DEVICE_FAILED_OPEN得到RDMA设备失败。
206RR_DEVICE_INDEX_OVERFLOWRDMA设备序号异常。
207RR_DEVICE_OPEN_FAILED打开RDMA设备失败。
208RR_DEVICE_FAILED_GET_IF_ADDRESS获得网卡地址失败。
209RR_DEVICE_NO_IF_MATCHED获得符合IP地址的网卡地址失败。
210RR_DEVICE_NO_IF_TO_GID_MATCHED获得符合IP地址的RDMA设备GID。
211RR_DEVICE_INVALID_IP_MASKIP地址掩码异常。
212RR_MR_REG_FAILEDMemory Region(MR)注册失败。
213RR_CQ_NOT_INITIALIZEDCompletion Queue(CQ)初始化失败。
214RR_CQ_POLLING_FAILEDPoll CQ方法异常。
215RR_CQ_POLLING_TIMEOUTPoll CQ超时。
216RR_CQ_POLLING_ERROR_RESULTPoll CQ结果错误。
217RR_CQ_POLLING_UNMATCHED_OPCODEPoll CQ结果opcode不匹配。
218RR_CQ_EVENT_GET_FAILEDPoll事件失败。
219RR_CQ_EVENT_NOTIFY_FAILED通知CQ失败。
220RR_CQ_WC_WRONGpoll CQ后的完成事件的状态异常。
221RR_CQ_EVENT_GET_TIMOUTpoll CQ超时。
222RR_QP_CREATE_FAILED创建Queue Pair(QP)失败。
223RR_QP_NOT_INITIALIZED初始化QP失败。
224RR_QP_CHANGE_STATE_FAILED更新QP状态失败。
225RR_QP_POST_RECEIVE_FAILED发起接收请求失败。
226RR_QP_POST_SEND_FAILED发起发送请求失败。
227RR_QP_POST_READ_FAILED发起读取请求失败。
228RR_QP_POST_WRITE_FAILED发起写请求失败。
229RR_QP_RECEIVE_CONFIG_ERR收发相关参数设定失败。
230RR_QP_POST_SEND_WR_FULL发送队列满。
231RR_QP_ONE_SIDE_WR_FULL单边请求队列满。
232RR_QP_CTX_FULL上下文耗尽。
233RR_QP_CHANGE_ERR更新QP状态至停止失败。
234RR_OOB_LISTEN_SOCKET_ERROR带外链路监听开启失败。
235RR_OOB_CONN_SEND_ERROR带外链路发送失败。
236RR_OOB_CONN_RECEIVE_ERROR带外链路接收失败。
237RR_OOB_CONN_CB_NOT_SET带外链路连接回调未设置。
238RR_OOB_CLIENT_SOCKET_ERROR带外链路客户端发起连接失败。
239RR_OOB_SSL_INIT_ERROR加密初始化失败。
240RR_OOB_SSL_WRITE_ERROR加密写失败。
241RR_OOB_SSL_READ_ERROR加密读失败。
242RR_EP_NOT_INITIALIZEDEP未初始化。
243RR_WORKER_NOT_INITIALIZEDWorker未初始化。
244RR_WORKER_BIND_CPU_FAILEDWorker线程绑定CPU失败。
245RR_WORKER_REQUEST_HANDLER_NOT_SETWorker的新消息回调函数未注册。
246RR_WORKER_SEND_POSTED_HANDLER_NOT_SETWorker的消息发送回调函数未注册。
247RR_WORKER_ONE_SIDE_DONE_HANDLER_NOT_SETWorker的单边消息回调函数未注册。
248RR_WORKER_FAILED_ADD_QPWorker线程添加QP失败。
249RR_HEARTBEAT_CREATE_EPOLL_FAILED心跳检测创建失败。
250RR_HEARTBEAT_SET_SOCKET_OPT_FAILED心跳检测设置失败。
251RR_HEARTBEAT_IP_ALREADY_EXISTED心跳检测IP地址已存在。
252RR_HEARTBEAT_IP_ADD_FAILED心跳检测IP地址添加失败。
253RR_HEARTBEAT_IP_ADD_EPOLL_FAILED心跳检测IP地址添加失败。
254RR_HEARTBEAT_IP_REMOVE_EPOLL_FAILED心跳检测IP地址移除失败。
255RR_HEARTBEAT_IP_NO_FOUND心跳检测IP地址未匹配。

说明

部分常见错误码详细说明: 230:RDMA的双边请求发起时,有限制长度的发送队列来限制并发,如果并发过大时,可能耗尽队列导致出现此错误。解决方式可以通过调大UBSHcomNetDriverOptions中的prePostReceiveSizePerQP和qpSendQueueSize来扩大队列,这个队列的值是取上述两个参数的较小值。