OpenHarmony模块二interfaces下头文件解析(7)

distributedschedule_samgr_lite/interfaces/kits/registry/iproxy_server.h

该文件主要提供了服务器代理,此功能是提供跨进程系统功能所必需的。

该宏定义了服务器代理的默认版本号,当Samgr使用服务器代理版本查询已注册的服务器代理时,将注册跨进程系统功能。

#define SERVER_PROXY_VER 0x80
#define SERVER_IMPL_PROXY_VER ((uint16)SERVER_PROXY_VER | (uint16)DEFAULT_VERSION)

该结构体的功能是继承服务器代理,当服务器提供跨进程系统功能时,它使用继承服务器代理来定义服务器代理功能。

#define INHERIT_SERVER_IPROXY \
        INHERIT_IUNKNOWN; \
        int32 (*Invoke)(IServerProxy *iProxy, int funcId, void *origin, IpcIo *req, IpcIo *reply)

typedef struct IServerProxy IServerProxy;

该结构体定义了服务器代理对象的基类,当服务器提供跨进程系统功能时,它使用继承服务器 IPROXY来定义服务器代理。

struct IServerProxy {
	INHERIT_IUNKNOWN;	 //此类继承自<b>IUnknown</b>。
	int32 (*Invoke)(IServerProxy *iProxy, int funcId, void *origin, IpcIo *req, IpcIo *reply);
};

该函数为上一个结构体内的函数,它提供了解组服务器接收的IPC消息的功能,此函数由开发人员实现,并由系统调用。

int32 (*Invoke)(IServerProxy *iProxy, int funcId, void *origin, IpcIo *req, IpcIo *reply);
//Proxy表示指向服务器代理对象的指针。
//funcId表示客户端要调用的服务器函数的ID。
//origin表示原始IPC消息,可从中获取标题信息。
//req ipc表示可从中获取数据的消息正文。
//reply表示用于响应消息的输出参数。
//该值最多可以包含五个对象和200个字节。

注:此函数在服务的消息处理线程中运行。不要阻塞消息处理线程;否则,该功能可能无法执行。
如果解组成功,则返回EC_SUCCESS;如果解组失败,则返回其他错误代码。

该宏定义为继承服务器代理类,当服务器提供跨进程系统功能时,它使用继承 IPROXY条目来定义服务器代理类。

#define INHERIT_IPROXY_ENTRY(T) INHERIT_IUNKNOWNENTRY(T)

该宏定义服务器代理类的默认初始化的开始,此宏用于开发服务器代理类,可以继承此宏以减少代码量并防止类定义不一致。

#define SERVER_IPROXY_BEGIN  IUNKNOWN_ENTRY_BEGIN(SERVER_PROXY_VER)

#define SERVER_IPROXY_IMPL_BEGIN  IUNKNOWN_ENTRY_BEGIN(SERVER_IMPL_PROXY_VER)

该宏定义服务器代理类的默认初始化结束,此宏用于开发服务器代理类,可以继承此宏以减少代码量并防止类定义不一致。

#define IPROXY_END IUNKNOWN_ENTRY_END
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值