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