Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Docs
提交
8752d16a
D
Docs
项目概览
OpenHarmony
/
Docs
大约 1 年 前同步成功
通知
159
Star
292
Fork
28
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
Docs
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
8752d16a
编写于
7月 02, 2022
作者:
W
wusongqing
提交者:
Gitee
7月 02, 2022
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
【文档体验官】修改表格和步骤中的断行问题
Signed-off-by:
N
wusongqing
<
wusongqing@huawei.com
>
上级
ce85f3d8
变更
1
显示空白变更内容
内联
并排
Showing
1 changed file
with
12 addition
and
7 deletion
+12
-7
zh-cn/application-dev/connectivity/ipc-rpc-development-guideline.md
...ication-dev/connectivity/ipc-rpc-development-guideline.md
+12
-7
未找到文件。
zh-cn/application-dev/connectivity/ipc-rpc-development-guideline.md
浏览文件 @
8752d16a
...
...
@@ -11,9 +11,9 @@ IPC/RPC的主要工作是让运行在不同进程的Proxy和Stub互相通信,
| 类/接口 | 方法 | 功能说明 |
| -------- | -------- | -------- |
| IRemoteBroker | sptr
<
IRemoteObject
>
AsObject() | 返回通信对象。派生类需要实现,Stub端返回RemoteObject对象本身,Proxy端返回代理对象。 |
| IRemoteStub | virtual
int
OnRemoteRequest(uint32_t
code,
MessageParcel
&
data,
MessageParcel
&
reply,
MessageOption
&
option) | 请求处理方法,派生类需要重写,
处理Proxy的请求并返回结果。 |
| IRemoteProxy | | 业务Proxy类派生自IRemoteProxy类。 |
| IRemoteBroker | sptr
<
IRemoteObject
>
AsObject() | 返回通信对象。派生类需要实现,Stub端返回RemoteObject对象本身,Proxy端返回代理对象。 |
| IRemoteStub | virtual
int OnRemoteRequest(uint32_t code, MessageParcel
&
data, MessageParcel
&
reply, MessageOption
&
option) | 请求处理方法,派生类需要重写该方法用来
处理Proxy的请求并返回结果。 |
| IRemoteProxy | | 业务Proxy类
,
派生自IRemoteProxy类。 |
## 开发步骤
...
...
@@ -21,6 +21,7 @@ IPC/RPC的主要工作是让运行在不同进程的Proxy和Stub互相通信,
**Native侧开发步骤**
1.
定义IPC接口ITestAbility
SA接口继承IPC基类接口IRemoteBroker,接口里定义描述符、业务函数和消息码,其中业务函数在Proxy端和Stub端都需要实现。
```
...
...
@@ -34,6 +35,7 @@ IPC/RPC的主要工作是让运行在不同进程的Proxy和Stub互相通信,
```
2.
定义和实现服务端TestAbilityStub
该类是和IPC框架相关的实现,需要继承 IRemoteStub
<
ITestAbility
>
。Stub端作为接收请求的一端,需重写OnRemoteRequest方法用于接收客户端调用。
```
...
...
@@ -72,6 +74,7 @@ IPC/RPC的主要工作是让运行在不同进程的Proxy和Stub互相通信,
```
4.
定义和实现客户端 TestAbilityProxy
该类是Proxy端实现,继承IRemoteProxy
<
ITestAbility
>
,调用SendRequest接口向Stub端发送请求,对外暴露服务端提供的能力。
```
...
...
@@ -98,8 +101,9 @@ IPC/RPC的主要工作是让运行在不同进程的Proxy和Stub互相通信,
}
```
5.
SA 注册与启动
SA 需要将自己的 TestAbilityStub实例通过 AddSystemAbility接口注册到 SystemAbilityManager,设备内与分布式的注册参数不同。
5.
SA注册与启动
SA需要将自己的TestAbilityStub实例通过AddSystemAbility接口注册到SystemAbilityManager,设备内与分布式的注册参数不同。
```
// 注册到本设备内
...
...
@@ -113,7 +117,8 @@ IPC/RPC的主要工作是让运行在不同进程的Proxy和Stub互相通信,
int result = samgr->AddSystemAbility(saId, new TestAbility(), saExtra);
```
6.
SA 获取与调用
6.
SA获取与调用
通过SystemAbilityManager的GetSystemAbility方法可获取到对应SA的代理IRemoteObject,然后构造TestAbilityProxy即可。
```
...
...
@@ -122,7 +127,7 @@ IPC/RPC的主要工作是让运行在不同进程的Proxy和Stub互相通信,
sptr<IRemoteObject> remoteObject = samgr->GetSystemAbility(saId);
sptr<ITestAbility> testAbility = iface_cast<ITestAbility>(remoteObject); // 使用iface_cast宏转换成具体类型
// 获取其他设备注册的SA的
P
roxy
// 获取其他设备注册的SA的
p
roxy
sptr<ISystemAbilityManager> samgr = SystemAbilityManagerClient::GetInstance().GetSystemAbilityManager();
sptr<IRemoteObject> remoteObject = samgr->GetSystemAbility(saId, deviceId); // deviceId是指定设备的标识符
sptr<TestAbilityProxy> proxy(new TestAbilityProxy(remoteObject)); // 直接构造具体Proxy
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录