软总线源码分析1:IPC与RPC

本文深入剖析HarmonyOS软总线的IPC与RPC机制,涉及基础接口IRemoteBroker、IRemoteStub、IRemoteProxy,以及关键类BrokerCreator、BrokerDelegator、BrokerRegistration。通过iface_cast的源码分析,揭示了对象实例化过程,并解释了如何在软总线中实现跨进程通信。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

从通信两端的位置类看,软总线主要分为IPC与RPC。IPC与RPC使用统一的C/S通信模型,即即Client向Server发送请求,Server返回请求结果。

IPC/RPC的主要有三个基础接口:IRemoteBroker, IRemoteStub, IRemoteProxy。还有一个基础类组:BrokerCreator, BrokerDelegator, BrokerRegistration。

假设开发过程中需要自定义服务TestService,自定义服务的方法主要分为如下几步:

  • 定义服务接口类ITestService,令其继承IRemoteBroker,并定义关键接口方法
  • 服务侧定义类TestServiceStub,令其继承IRemoteStub和ITestService,在本地实现关键接口方法,并要实现OnRemoteRequest。
  • 客户端定义类TestServiceProxy,另其继承IRemoteProxy和ITestService,在本地实现对应接口的方法,即填写参数后,调用类成员remote的SendRequest()方法将参数发送。

同时,客户端进程获取TestServiceProxy类时,首先获取ITestService接口,然后调用iface_cast,将ITestService转换为指向TestServiceProxy类的指针。

因此我们主要从三个iface_cast启动分析,然后分析主要的接口:IRemoteBroker, IRemoteStub, IRemoteProxy和主要的类:BrokerCreator, BrokerDelegator, BrokerRegistration。

iface_cast的源码如下所示:

template <typename INTERFACE> inline sptr<INTERFACE> iface_cast(const sptr<IRemoteObject> &object)
{
    const std::u16s
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值