成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Openharmony IPC通信(L2)

原創
系統 OpenHarmony
Openharmony的IPC通信,幾乎所有模塊都有用到。對IPC通信流程的理解,為熟悉了解其他模塊有很重要的幫助。

??想了解更多內容,請訪問:??

??51CTO和華為官方合作共建的鴻蒙技術社區??

??https://harmonyos.51cto.com??

一、簡介

Openharmony的IPC通信,幾乎所有模塊都有用到。

對IPC通信流程的理解,為熟悉了解其他模塊有很重要的幫助。

IPC通信(倉庫:communication_ipc)與safwk系統服務框架(倉庫:distributedschedule_safwk)和samgr系統服務管理(倉庫:distributedschedule_samgr)有很緊密的聯系。

二、IPC通信

2.1 IPC通信注冊流程

以foundation\communication\ipc\ipc\test\auxiliary\native為例,對IPC進行梳理。

IPC通信包括客戶端(client)和服務端(service)。

  • 服務端TestService繼承自IPCObjectStub。
  • 客戶端TestServiceClient通過iface_cast(object)獲取到一個TestServiceProxy對象。TestServiceProxy繼承自PeerHolder,里面包含指向IPCObjectProxy的指針。
  • 客戶端的IPCObjectProxy和服務端IPCObjectStub是對應關系。

流程圖:

流程圖解釋

服務端以IPC_TEST_SERVICE為saId,將繼承自IPCObjectStub的對象經dbinder驅動,注冊到samgr系統服務管理進程中去。

binder_translate_binder有一個將標志為BINDER_TYPE_BINDER轉換成BINDER_TYPE_HANDLE的過程。samgr響應注冊消息,通過BinderInvoker::UnflattenObject解析對象,實際上是根據注冊的IPCObjectStubnew一個IPCObjectProxy對象存儲在samgr的map中。

客戶端以IPC_TEST_SERVICE去samgr中取IPCObjectProxy對象。并通過iface_castnew一個包含取的IPCObjectProxy的TestServiceProxy對象。這樣客戶端和服務端就建立起了關系,可以進行下一步相互通信。

2.2 IPC通信交互

Openharmony的IPC通信,有點類似http協議:客戶發送數據==>服務端響應處理數據==>服務端回復==>客戶端獲取到回復數據

流程圖如下:

客戶端與服務端的交互

客戶端通過: Remote()->SendRequest向服務端發消息,等待結果。

服務端通過: xxxServiceStub::OnRemoteRequest處理客戶端消息,并回復。

三、samgr系統服務管理進程

主要管理各個模塊服務端注冊的saId和IPCObjectProxy對象鍵值對。

四、safwk系統服務框架

IPC客戶端服務端注冊拉起框架。

4.1 服務端的注冊

xxxInterface是客戶端和服務端都需要實現的接口繼承類。

注冊方式1,基本上自己有main函數入口:

xxxService繼承IPCObjectStub 和 xxxInterface

auto saMgr = SystemAbilityManagerClient::GetInstance().GetSystemAbilityManager();
sptr<IRemoteObject> newInstance = new xxxService();
int result = saMgr->AddSystemAbility(xxxSaId, newInstance);

注冊方式2, 本身沒有main函數入口,需要借助safwk的main入口:

xxxService繼承IPCObjectStub,xxxInterface 和 SystemAbility

// 注冊方式2的第一種方式
REGISTER_SYSTEM_ABILITY_BY_ID(xxxService, xxxSaId, true);
// 注冊方式2的第二種方式
SystemAbility::MakeAndRegisterAbility

4.2 服務拉起

  • 注冊方式1:有main入口,是一個獨立進程。直接運行即可。
  • 注冊方式2:編譯出來是一個動態庫,

通過: /system/bin/sa_main /system/profile/xxx_sa.xml拉起來,xml文件中配置了動態庫信息。可以參考文檔

??【OpenHarmony SA 動態庫服務 拉起的main入口】??了解拉起流程

4.3 客戶端類定義

xxxServiceProxy繼承PeerHolder 和 xxxInterface

客戶端類中定義一個靜態變量:

// 定義靜態變量,才能通過iface_cast創建一個包含IPCObjectProxy的xxxServiceProxy對象
static inline BrokerDelegator<xxxServiceProxy> delegator_;

4.4 客戶端獲取注冊信息

auto saMgr = SystemAbilityManagerClient::GetInstance().GetSystemAbilityManager();
sptr<IRemoteObject> object = saMgr->GetSystemAbility(SaId);
client = iface_cast<xxxInterface >(object);

以foundation\communication\ipc\ipc\test\auxiliary\native為例繼承圖:

??想了解更多內容,請訪問:??

??51CTO和華為官方合作共建的鴻蒙技術社區??

??https://harmonyos.51cto.com??

責任編輯:jianghua 來源: 鴻蒙社區
相關推薦

2022-07-04 16:41:16

IPC通信HiTrace

2022-07-14 19:03:33

IPC服務鴻蒙

2022-02-21 15:38:57

Openharmon操作系統鴻蒙

2022-06-22 09:14:23

事件打點HiSysEvent

2022-06-14 15:07:04

IPC客戶端服務端

2022-04-06 11:27:05

harmonyeTS 開發NAPI開發

2021-10-20 19:14:30

緩存CacheCPU

2015-01-20 13:19:52

OpenStack網絡層數據鏈路層

2022-01-06 16:16:21

鴻蒙HarmonyOS應用

2023-02-20 08:00:00

2023-01-31 09:12:16

CPU芯片緩存

2023-10-10 15:33:55

機器學習相似性度量

2022-08-26 14:58:43

區塊鏈比特幣架構

2022-01-14 09:57:14

鴻蒙HarmonyOS應用

2019-07-30 13:18:25

自動駕駛L2駕駛

2014-11-25 13:28:17

openstackneutronDVR

2024-08-08 15:46:34

2022-02-14 13:52:04

OpenHarmor系統鴻蒙

2022-03-21 15:42:36

智能家居物聯網MQTT

2022-03-28 15:40:34

harmony鴻蒙操作系統
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产精品一区二区三区免费观看 | 国产精品成人久久久久 | 日日夜夜免费精品视频 | 国产一区精品在线 | 国产麻豆乱码精品一区二区三区 | 欧美国产一区二区三区 | 欧美日韩综合一区 | 激情欧美日韩一区二区 | 国产精品久久一区二区三区 | 久久成人一区二区三区 | 99亚洲精品 | 久久综合九九 | 国产欧美精品在线观看 | 国产成人精品一区二区三区 | 国产在视频一区二区三区吞精 | 国产一区二区三区亚洲 | 天天操天天插 | 九九视频网| 在线播放中文字幕 | 在线观看亚洲专区 | 亚洲国产成人av | 91精品国产一区二区三区动漫 | 一区二区三区日本 | 黄视频网站免费观看 | 精品国产一区一区二区三亚瑟 | 久久久久久综合 | 亚洲 欧美 在线 一区 | 99久久久久国产精品免费 | 国产一区二区精品在线 | 日日干天天干 | 欧美日韩精品中文字幕 | 可以免费观看的av | 日韩另类视频 | www.日本国产 | av黄色片在线观看 | 亚洲国产精品视频 | 色在线免费 | 日日摸日日碰夜夜爽亚洲精品蜜乳 | 天天搞天天操 | 国产精品美女久久久久久久久久久 | 成人av网站在线观看 |