OpenHarmony源码分析
文章平均质量分 91
三井申
talk is cheap
展开
-
软总线源码分析7:认证模块
根据上一章节对发现模块的分析,我们知道当发现了外部设备后,InnerDeviceFound会被调用,InnerDeviceFound函数会根据infoNode是否为内部节点,调用回调函数。回想第4章节我们介绍组网模块的时候,组网会调用EnableCoapDisc函数将本地服务发布后,主动发现外部服务,EnableCoapDisc的源码如下:static int32_t EnableCoapDisc(void){ LOG_INFO("EnableCoapDisc begin");原创 2022-05-20 18:25:31 · 1582 阅读 · 1 评论 -
软总线源码分析6:发现模块(二)
继上一章节分析完PublishService接口后,本章节我们开始分析StartDiscovery接口。StartDiscovery接口根据g_discCoapFuncInterface的接口可以知道,当为主动发现时,调用CoapStartAdvertise函数,当为被动发现时,调用CoapSubscribe函数完成对应的处理。下面我们分别介绍这两种实现:CoapStartAdvertiseCoapStartAdvertise的源码如下所示:static int32_t CoapSta原创 2022-05-05 22:04:47 · 1555 阅读 · 2 评论 -
软总线源码分析6:发现模块(一)
软总线主要包括四大模块:发现,连接,组网,传输。今天我们主要详细介绍一下发现模块。之前我们已经介绍过软总线的PublishService接口和StartDiscovery接口。接下来我们分别详细介绍这些接口的实现细节。PublishService接口StartDiscovery接口PostEvent接口在上面我们看到PublishService接口和StartDiscovery接口都通过调用PostEvent来完成具体的业务功能,那么PostEvent主要干了一件什么事呢?以Publ原创 2022-04-28 16:57:08 · 2643 阅读 · 3 评论 -
软总线源码分析5: 组网状态机
组网过程首先需要经过设备认证,认证成功后又要交换设备状态信息,成功后设备间才算组完成工。为了管理组网过程中状态的迁移过程和对应处理,组网模块使用状态机来完成整体的业务逻辑。一.状态机机制状态机由函数LnnFsmInit完成初始化,其源码如下:int32_t LnnFsmInit(FsmStateMachine *fsm, char *name, FsmDinitCallback cb){ if (fsm == NULL || name == NULL) { retur原创 2022-04-22 18:14:52 · 1378 阅读 · 1 评论 -
软总线源码分析4: 接口解析之组网
组网过程原创 2022-04-13 20:36:30 · 2225 阅读 · 4 评论 -
软总线源码分析3:服务加载
软总线作为系统服务,在系统启动,Init进程加载时,通过解析配置文件softbus_server.rc完成系统服务的启动,软总线服务的加载函数为InitSoftBusServer,其源码如下:void InitSoftBusServer(void){ if (SoftBusTimerInit() != SOFTBUS_OK) { return; } if (LooperInit() != SOFTBUS_OK) { return; }原创 2022-04-01 18:50:39 · 2309 阅读 · 1 评论 -
软总线源码分析2: 接口解析之注册服务,发布服务和发现服务
软总线系统本身也是基于IPC对外提供服务,即软总线运行在系统进程中,对外提供一个名为SoftBusServer的服务。但是软总线与IPC系统存在一些区别,即软总线为双向通信系统,所以客户端进程同时会维护一个本地的名为SoftBusClient的服务。即客户端维护SoftBusServerProxy和SoftBusClientStub,软总线维护SoftBusServerStub和SoftBusClientProxy。接口1—注册服务:SoftbusRegisterService当客户端进程想要将原创 2022-03-28 00:02:54 · 2658 阅读 · 8 评论 -
软总线源码分析1:IPC与RPC
从通信两端的位置类看,软总线主要分为IPC与RPC。IPC与RPC使用统一的C/S通信模型,即即Client向Server发送请求,Server返回请求结果。IPC/RPC的主要有三个基础接口:IRemoteBroker, IRemoteStub, IRemoteProxy。还有一个基础类组:BrokerCreator, BrokerDelegator, BrokerRegistration。假设开发过程中需要自定义服务TestService,自定义服务的方法主要分为如下几步:定义服务接口类IT原创 2022-03-26 18:13:52 · 4602 阅读 · 3 评论