1 /*
2 * Copyright (c) 2022-2023 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16 #include "device_manager_notify.h"
17
18 #include "device_manager.h"
19 #include "dm_anonymous.h"
20 #include "dm_constants.h"
21 #include "dm_log.h"
22
23 namespace OHOS {
24 namespace DistributedHardware {
25 IMPLEMENT_SINGLE_INSTANCE(DeviceManagerNotify);
26
RegisterDeathRecipientCallback(const std::string & pkgName,std::shared_ptr<DmInitCallback> dmInitCallback)27 void DeviceManagerNotify::RegisterDeathRecipientCallback(const std::string &pkgName,
28 std::shared_ptr<DmInitCallback> dmInitCallback)
29 {
30 if (pkgName.empty()) {
31 LOGE("Invalid parameter, pkgName is empty.");
32 return;
33 }
34 std::lock_guard<std::mutex> autoLock(lock_);
35 dmInitCallback_[pkgName] = dmInitCallback;
36 }
37
UnRegisterDeathRecipientCallback(const std::string & pkgName)38 void DeviceManagerNotify::UnRegisterDeathRecipientCallback(const std::string &pkgName)
39 {
40 if (pkgName.empty()) {
41 LOGE("Invalid parameter, pkgName is empty.");
42 return;
43 }
44 std::lock_guard<std::mutex> autoLock(lock_);
45 dmInitCallback_.erase(pkgName);
46 }
47
RegisterDeviceStateCallback(const std::string & pkgName,std::shared_ptr<DeviceStateCallback> callback)48 void DeviceManagerNotify::RegisterDeviceStateCallback(const std::string &pkgName,
49 std::shared_ptr<DeviceStateCallback> callback)
50 {
51 if (pkgName.empty()) {
52 LOGE("Invalid parameter, pkgName is empty.");
53 return;
54 }
55 std::lock_guard<std::mutex> autoLock(lock_);
56 deviceStateCallback_[pkgName] = callback;
57 }
58
UnRegisterDeviceStateCallback(const std::string & pkgName)59 void DeviceManagerNotify::UnRegisterDeviceStateCallback(const std::string &pkgName)
60 {
61 if (pkgName.empty()) {
62 LOGE("Invalid parameter, pkgName is empty.");
63 return;
64 }
65 std::lock_guard<std::mutex> autoLock(lock_);
66 deviceStateCallback_.erase(pkgName);
67 }
68
RegisterDiscoveryCallback(const std::string & pkgName,uint16_t subscribeId,std::shared_ptr<DiscoveryCallback> callback)69 void DeviceManagerNotify::RegisterDiscoveryCallback(const std::string &pkgName, uint16_t subscribeId,
70 std::shared_ptr<DiscoveryCallback> callback)
71 {
72 if (pkgName.empty()) {
73 LOGE("Invalid parameter, pkgName is empty.");
74 return;
75 }
76 std::lock_guard<std::mutex> autoLock(lock_);
77 if (deviceDiscoveryCallbacks_.count(pkgName) == 0) {
78 deviceDiscoveryCallbacks_[pkgName] = std::map<uint16_t, std::shared_ptr<DiscoveryCallback>>();
79 }
80 deviceDiscoveryCallbacks_[pkgName][subscribeId] = callback;
81 }
82
UnRegisterDiscoveryCallback(const std::string & pkgName,uint16_t subscribeId)83 void DeviceManagerNotify::UnRegisterDiscoveryCallback(const std::string &pkgName, uint16_t subscribeId)
84 {
85 if (pkgName.empty()) {
86 LOGE("Invalid parameter, pkgName is empty.");
87 return;
88 }
89 std::lock_guard<std::mutex> autoLock(lock_);
90 if (deviceDiscoveryCallbacks_.count(pkgName) > 0) {
91 deviceDiscoveryCallbacks_[pkgName].erase(subscribeId);
92 if (deviceDiscoveryCallbacks_[pkgName].empty()) {
93 deviceDiscoveryCallbacks_.erase(pkgName);
94 }
95 }
96 }
97
RegisterPublishCallback(const std::string & pkgName,int32_t publishId,std::shared_ptr<PublishCallback> callback)98 void DeviceManagerNotify::RegisterPublishCallback(const std::string &pkgName,
99 int32_t publishId,
100 std::shared_ptr<PublishCallback> callback)
101 {
102 if (pkgName.empty()) {
103 LOGE("Invalid parameter, pkgName is empty.");
104 return;
105 }
106 std::lock_guard<std::mutex> autoLock(lock_);
107 if (devicePublishCallbacks_.count(pkgName) == 0) {
108 devicePublishCallbacks_[pkgName] = std::map<int32_t, std::shared_ptr<PublishCallback>>();
109 }
110 devicePublishCallbacks_[pkgName][publishId] = callback;
111 }
112
UnRegisterPublishCallback(const std::string & pkgName,int32_t publishId)113 void DeviceManagerNotify::UnRegisterPublishCallback(const std::string &pkgName, int32_t publishId)
114 {
115 if (pkgName.empty()) {
116 LOGE("Invalid parameter, pkgName is empty.");
117 return;
118 }
119 std::lock_guard<std::mutex> autoLock(lock_);
120 if (devicePublishCallbacks_.count(pkgName) > 0) {
121 devicePublishCallbacks_[pkgName].erase(publishId);
122 if (devicePublishCallbacks_[pkgName].empty()) {
123 devicePublishCallbacks_.erase(pkgName);
124 }
125 }
126 }
127
RegisterAuthenticateCallback(const std::string & pkgName,const std::string & deviceId,std::shared_ptr<AuthenticateCallback> callback)128 void DeviceManagerNotify::RegisterAuthenticateCallback(const std::string &pkgName, const std::string &deviceId,
129 std::shared_ptr<AuthenticateCallback> callback)
130 {
131 if (pkgName.empty() || deviceId.empty()) {
132 LOGE("DeviceManagerNotify::RegisterAuthenticateCallback error: Invalid parameter, pkgName: %s, deviceId: %s",
133 pkgName.c_str(), GetAnonyString(deviceId).c_str());
134 return;
135 }
136 std::lock_guard<std::mutex> autoLock(lock_);
137 if (authenticateCallback_.count(pkgName) == 0) {
138 authenticateCallback_[pkgName] = std::map<std::string, std::shared_ptr<AuthenticateCallback>>();
139 }
140 authenticateCallback_[pkgName][deviceId] = callback;
141 }
142
UnRegisterAuthenticateCallback(const std::string & pkgName,const std::string & deviceId)143 void DeviceManagerNotify::UnRegisterAuthenticateCallback(const std::string &pkgName, const std::string &deviceId)
144 {
145 if (pkgName.empty() || deviceId.empty()) {
146 LOGE("DeviceManagerNotify::UnRegisterAuthenticateCallback error: Invalid parameter, pkgName: %s, deviceId: %s",
147 pkgName.c_str(), GetAnonyString(deviceId).c_str());
148 return;
149 }
150 std::lock_guard<std::mutex> autoLock(lock_);
151 if (authenticateCallback_.count(pkgName) > 0) {
152 authenticateCallback_[pkgName].erase(deviceId);
153 if (authenticateCallback_[pkgName].empty()) {
154 authenticateCallback_.erase(pkgName);
155 }
156 }
157 }
158
UnRegisterPackageCallback(const std::string & pkgName)159 void DeviceManagerNotify::UnRegisterPackageCallback(const std::string &pkgName)
160 {
161 if (pkgName.empty()) {
162 LOGE("Invalid parameter, pkgName is empty.");
163 return;
164 }
165 std::lock_guard<std::mutex> autoLock(lock_);
166 deviceStateCallback_.erase(pkgName);
167 deviceDiscoveryCallbacks_.erase(pkgName);
168 devicePublishCallbacks_.erase(pkgName);
169 authenticateCallback_.erase(pkgName);
170 dmInitCallback_.erase(pkgName);
171 }
172
RegisterVerifyAuthenticationCallback(const std::string & pkgName,const std::string & authPara,std::shared_ptr<VerifyAuthCallback> callback)173 void DeviceManagerNotify::RegisterVerifyAuthenticationCallback(const std::string &pkgName, const std::string &authPara,
174 std::shared_ptr<VerifyAuthCallback> callback)
175 {
176 std::lock_guard<std::mutex> autoLock(lock_);
177 verifyAuthCallback_[pkgName] = callback;
178 }
179
UnRegisterVerifyAuthenticationCallback(const std::string & pkgName)180 void DeviceManagerNotify::UnRegisterVerifyAuthenticationCallback(const std::string &pkgName)
181 {
182 if (pkgName.empty()) {
183 LOGE("Invalid parameter, pkgName is empty.");
184 return;
185 }
186 std::lock_guard<std::mutex> autoLock(lock_);
187 verifyAuthCallback_.erase(pkgName);
188 }
189
RegisterDeviceManagerFaCallback(const std::string & pkgName,std::shared_ptr<DeviceManagerUiCallback> callback)190 void DeviceManagerNotify::RegisterDeviceManagerFaCallback(const std::string &pkgName,
191 std::shared_ptr<DeviceManagerUiCallback> callback)
192 {
193 std::lock_guard<std::mutex> autoLock(lock_);
194 dmUiCallback_[pkgName] = callback;
195 }
196
UnRegisterDeviceManagerFaCallback(const std::string & pkgName)197 void DeviceManagerNotify::UnRegisterDeviceManagerFaCallback(const std::string &pkgName)
198 {
199 if (pkgName.empty()) {
200 LOGE("Invalid parameter, pkgName is empty.");
201 return;
202 }
203 std::lock_guard<std::mutex> autoLock(lock_);
204 dmUiCallback_.erase(pkgName);
205 }
206
RegisterCredentialCallback(const std::string & pkgName,std::shared_ptr<CredentialCallback> callback)207 void DeviceManagerNotify::RegisterCredentialCallback(const std::string &pkgName,
208 std::shared_ptr<CredentialCallback> callback)
209 {
210 std::lock_guard<std::mutex> autoLock(lock_);
211 credentialCallback_[pkgName] = callback;
212 }
213
UnRegisterCredentialCallback(const std::string & pkgName)214 void DeviceManagerNotify::UnRegisterCredentialCallback(const std::string &pkgName)
215 {
216 std::lock_guard<std::mutex> autoLock(lock_);
217 credentialCallback_.erase(pkgName);
218 }
219
OnRemoteDied()220 void DeviceManagerNotify::OnRemoteDied()
221 {
222 LOGW("DeviceManagerNotify::OnRemoteDied");
223 for (auto iter : dmInitCallback_) {
224 LOGI("DeviceManagerNotify::OnRemoteDied, pkgName:%s", iter.first.c_str());
225 if (iter.second != nullptr) {
226 iter.second->OnRemoteDied();
227 }
228 }
229 }
230
OnDeviceOnline(const std::string & pkgName,const DmDeviceInfo & deviceInfo)231 void DeviceManagerNotify::OnDeviceOnline(const std::string &pkgName, const DmDeviceInfo &deviceInfo)
232 {
233 if (pkgName.empty()) {
234 LOGE("Invalid parameter, pkgName is empty.");
235 return;
236 }
237 LOGI("DeviceManagerNotify::OnDeviceOnline in, pkgName:%s", pkgName.c_str());
238 std::shared_ptr<DeviceStateCallback> tempCbk;
239 {
240 std::lock_guard<std::mutex> autoLock(lock_);
241 if (deviceStateCallback_.count(pkgName) == 0) {
242 LOGE("OnDeviceOnline error, device state callback not register.");
243 return;
244 }
245 tempCbk = deviceStateCallback_[pkgName];
246 }
247 if (tempCbk == nullptr) {
248 LOGE("OnDeviceOnline error, registered device state callback is nullptr.");
249 return;
250 }
251 tempCbk->OnDeviceOnline(deviceInfo);
252 }
253
OnDeviceOffline(const std::string & pkgName,const DmDeviceInfo & deviceInfo)254 void DeviceManagerNotify::OnDeviceOffline(const std::string &pkgName, const DmDeviceInfo &deviceInfo)
255 {
256 if (pkgName.empty()) {
257 LOGE("Invalid parameter, pkgName is empty.");
258 return;
259 }
260 LOGI("DeviceManagerNotify::OnDeviceOffline in, pkgName:%s", pkgName.c_str());
261 std::shared_ptr<DeviceStateCallback> tempCbk;
262 {
263 std::lock_guard<std::mutex> autoLock(lock_);
264 if (deviceStateCallback_.count(pkgName) == 0) {
265 LOGE("OnDeviceOffline error, device state callback not register.");
266 return;
267 }
268 tempCbk = deviceStateCallback_[pkgName];
269 }
270 if (tempCbk == nullptr) {
271 LOGE("OnDeviceOffline error, registered device state callback is nullptr.");
272 return;
273 }
274 tempCbk->OnDeviceOffline(deviceInfo);
275 }
276
OnDeviceChanged(const std::string & pkgName,const DmDeviceInfo & deviceInfo)277 void DeviceManagerNotify::OnDeviceChanged(const std::string &pkgName, const DmDeviceInfo &deviceInfo)
278 {
279 if (pkgName.empty()) {
280 LOGE("Invalid parameter, pkgName is empty.");
281 return;
282 }
283 LOGI("DeviceManagerNotify::OnDeviceChanged in, pkgName:%s", pkgName.c_str());
284 std::shared_ptr<DeviceStateCallback> tempCbk;
285 {
286 std::lock_guard<std::mutex> autoLock(lock_);
287 if (deviceStateCallback_.count(pkgName) == 0) {
288 LOGE("OnDeviceChanged error, device state callback not register.");
289 return;
290 }
291 tempCbk = deviceStateCallback_[pkgName];
292 }
293 if (tempCbk == nullptr) {
294 LOGE("OnDeviceChanged error, registered device state callback is nullptr.");
295 return;
296 }
297 tempCbk->OnDeviceChanged(deviceInfo);
298 }
299
OnDeviceReady(const std::string & pkgName,const DmDeviceInfo & deviceInfo)300 void DeviceManagerNotify::OnDeviceReady(const std::string &pkgName, const DmDeviceInfo &deviceInfo)
301 {
302 if (pkgName.empty()) {
303 LOGE("Invalid parameter, pkgName is empty.");
304 return;
305 }
306 LOGI("DeviceManagerNotify::OnDeviceReady in, pkgName:%s", pkgName.c_str());
307 std::shared_ptr<DeviceStateCallback> tempCbk;
308 {
309 std::lock_guard<std::mutex> autoLock(lock_);
310 if (deviceStateCallback_.count(pkgName) == 0) {
311 LOGE("OnDeviceReady error, device state callback not register.");
312 return;
313 }
314 tempCbk = deviceStateCallback_[pkgName];
315 }
316 if (tempCbk == nullptr) {
317 LOGE("OnDeviceReady error, registered device state callback is nullptr.");
318 return;
319 }
320 tempCbk->OnDeviceReady(deviceInfo);
321 }
322
OnDeviceFound(const std::string & pkgName,uint16_t subscribeId,const DmDeviceInfo & deviceInfo)323 void DeviceManagerNotify::OnDeviceFound(const std::string &pkgName, uint16_t subscribeId,
324 const DmDeviceInfo &deviceInfo)
325 {
326 if (pkgName.empty()) {
327 LOGE("Invalid parameter, pkgName is empty.");
328 return;
329 }
330 LOGI("DeviceManagerNotify::OnDeviceFound in, pkgName:%s, subscribeId:%d.", pkgName.c_str(), (int32_t)subscribeId);
331 std::shared_ptr<DiscoveryCallback> tempCbk;
332 {
333 std::lock_guard<std::mutex> autoLock(lock_);
334 if (deviceDiscoveryCallbacks_.count(pkgName) == 0) {
335 LOGE("DeviceManagerNotify::OnDeviceFound error, device discovery callback not register for pkgName %s.",
336 pkgName.c_str());
337 return;
338 }
339 std::map<uint16_t, std::shared_ptr<DiscoveryCallback>> &discoverCallMap = deviceDiscoveryCallbacks_[pkgName];
340 auto iter = discoverCallMap.find(subscribeId);
341 if (iter == discoverCallMap.end()) {
342 LOGE("OnDeviceFound error, device discovery callback not register for subscribeId %d.", subscribeId);
343 return;
344 }
345 tempCbk = iter->second;
346 }
347 if (tempCbk == nullptr) {
348 LOGE("OnDeviceFound error, registered device discovery callback is nullptr.");
349 return;
350 }
351 tempCbk->OnDeviceFound(subscribeId, deviceInfo);
352 }
353
OnDiscoveryFailed(const std::string & pkgName,uint16_t subscribeId,int32_t failedReason)354 void DeviceManagerNotify::OnDiscoveryFailed(const std::string &pkgName, uint16_t subscribeId, int32_t failedReason)
355 {
356 if (pkgName.empty()) {
357 LOGE("Invalid parameter, pkgName is empty.");
358 return;
359 }
360 LOGI("DeviceManagerNotify::OnDiscoveryFailed in, pkgName:%s, subscribeId %d, failed reason %d", pkgName.c_str(),
361 subscribeId, failedReason);
362 std::shared_ptr<DiscoveryCallback> tempCbk;
363 {
364 std::lock_guard<std::mutex> autoLock(lock_);
365 if (deviceDiscoveryCallbacks_.count(pkgName) == 0) {
366 LOGE("DeviceManagerNotify::OnDiscoveryFailed error, device discovery callback not register for pkgName %s.",
367 pkgName.c_str());
368 return;
369 }
370 std::map<uint16_t, std::shared_ptr<DiscoveryCallback>> &discoverCallMap = deviceDiscoveryCallbacks_[pkgName];
371 auto iter = discoverCallMap.find(subscribeId);
372 if (iter == discoverCallMap.end()) {
373 LOGE("OnDiscoveryFailed error, device discovery callback not register for subscribeId %d.", subscribeId);
374 return;
375 }
376 tempCbk = iter->second;
377 }
378 if (tempCbk == nullptr) {
379 LOGE("OnDiscoveryFailed error, registered device discovery callback is nullptr.");
380 return;
381 }
382 tempCbk->OnDiscoveryFailed(subscribeId, failedReason);
383 }
384
OnDiscoverySuccess(const std::string & pkgName,uint16_t subscribeId)385 void DeviceManagerNotify::OnDiscoverySuccess(const std::string &pkgName, uint16_t subscribeId)
386 {
387 if (pkgName.empty()) {
388 LOGE("Invalid parameter, pkgName is empty.");
389 return;
390 }
391 LOGI("DeviceManagerNotify::OnDiscoverySuccess in, pkgName:%s, subscribeId:%d.", pkgName.c_str(), subscribeId);
392 std::shared_ptr<DiscoveryCallback> tempCbk;
393 {
394 std::lock_guard<std::mutex> autoLock(lock_);
395 if (deviceDiscoveryCallbacks_.count(pkgName) == 0) {
396 LOGE("OnDiscoverySuccess error, device discovery callback not register for pkgName %s.", pkgName.c_str());
397 return;
398 }
399 std::map<uint16_t, std::shared_ptr<DiscoveryCallback>> &discoverCallMap = deviceDiscoveryCallbacks_[pkgName];
400 auto iter = discoverCallMap.find(subscribeId);
401 if (iter == discoverCallMap.end()) {
402 LOGE("OnDiscoverySuccess error, device discovery callback not register for subscribeId %d.", subscribeId);
403 return;
404 }
405 tempCbk = iter->second;
406 }
407 if (tempCbk == nullptr) {
408 LOGE("OnDiscoverySuccess error, registered device discovery callback is nullptr.");
409 return;
410 }
411 tempCbk->OnDiscoverySuccess(subscribeId);
412 }
413
OnPublishResult(const std::string & pkgName,int32_t publishId,int32_t publishResult)414 void DeviceManagerNotify::OnPublishResult(const std::string &pkgName, int32_t publishId, int32_t publishResult)
415 {
416 if (pkgName.empty()) {
417 LOGE("Invalid parameter, pkgName is empty.");
418 return;
419 }
420 LOGI("DeviceManagerNotify::OnPublishResult in, pkgName:%s, publishId %d, publishResult %d", pkgName.c_str(),
421 publishId, publishResult);
422 std::shared_ptr<PublishCallback> tempCbk;
423 {
424 std::lock_guard<std::mutex> autoLock(lock_);
425 if (devicePublishCallbacks_.count(pkgName) == 0) {
426 LOGE("DeviceManagerNotify::OnPublishResult error, device publish callback not register for pkgName %s.",
427 pkgName.c_str());
428 return;
429 }
430 std::map<int32_t, std::shared_ptr<PublishCallback>> &publishCallMap = devicePublishCallbacks_[pkgName];
431 auto iter = publishCallMap.find(publishId);
432 if (iter == publishCallMap.end()) {
433 LOGE("OnPublishResult error, device publish callback not register for publishId %d.", publishId);
434 return;
435 }
436 tempCbk = iter->second;
437 }
438 if (tempCbk == nullptr) {
439 LOGE("OnPublishResult error, registered device publish callback is nullptr.");
440 return;
441 }
442 tempCbk->OnPublishResult(publishId, publishResult);
443 }
444
OnAuthResult(const std::string & pkgName,const std::string & deviceId,const std::string & token,uint32_t status,uint32_t reason)445 void DeviceManagerNotify::OnAuthResult(const std::string &pkgName, const std::string &deviceId,
446 const std::string &token, uint32_t status, uint32_t reason)
447 {
448 if (pkgName.empty() || token.empty() || deviceId.empty()) {
449 LOGE("Invalid para, pkgName: %s, token: %s", pkgName.c_str(), token.c_str());
450 return;
451 }
452 LOGI("DeviceManagerNotify::OnAuthResult in, pkgName:%s, status:%d, reason:%u", pkgName.c_str(), status, reason);
453 std::shared_ptr<AuthenticateCallback> tempCbk;
454 {
455 std::lock_guard<std::mutex> autoLock(lock_);
456 if (authenticateCallback_.count(pkgName) == 0) {
457 LOGE("DeviceManagerNotify::OnAuthResult error, authenticate callback not register for pkgName %s.",
458 pkgName.c_str());
459 return;
460 }
461 std::map<std::string, std::shared_ptr<AuthenticateCallback>> &authCallMap = authenticateCallback_[pkgName];
462 auto iter = authCallMap.find(deviceId);
463 if (iter == authCallMap.end()) {
464 LOGE("OnAuthResult error, authenticate callback not register.");
465 return;
466 }
467 tempCbk = iter->second;
468 }
469 if (tempCbk == nullptr) {
470 LOGE("OnAuthResult error, registered authenticate callback is nullptr.");
471 return;
472 }
473 tempCbk->OnAuthResult(deviceId, token, status, (int32_t)reason);
474 {
475 std::lock_guard<std::mutex> autoLock(lock_);
476 authenticateCallback_[pkgName].erase(deviceId);
477 if (authenticateCallback_[pkgName].empty()) {
478 authenticateCallback_.erase(pkgName);
479 }
480 }
481 }
482
OnVerifyAuthResult(const std::string & pkgName,const std::string & deviceId,int32_t resultCode,int32_t flag)483 void DeviceManagerNotify::OnVerifyAuthResult(const std::string &pkgName, const std::string &deviceId,
484 int32_t resultCode, int32_t flag)
485 {
486 if (pkgName.empty()) {
487 LOGE("Invalid parameter, pkgName is empty.");
488 return;
489 }
490 LOGI("DeviceManagerNotify::OnVerifyAuthResult in, pkgName:%s, resultCode:%d, flag:%d", pkgName.c_str(),
491 resultCode, flag);
492 std::shared_ptr<VerifyAuthCallback> tempCbk;
493 {
494 std::lock_guard<std::mutex> autoLock(lock_);
495 if (verifyAuthCallback_.count(pkgName) == 0) {
496 LOGE("DeviceManagerNotify::OnVerifyAuthResult error, verify auth callback not register for pkgName %s.",
497 pkgName.c_str());
498 return;
499 }
500 tempCbk = verifyAuthCallback_[pkgName];
501 }
502 if (tempCbk == nullptr) {
503 LOGE("OnVerifyAuthResult error, registered verify auth callback is nullptr.");
504 return;
505 }
506 tempCbk->OnVerifyAuthResult(deviceId, resultCode, flag);
507 {
508 std::lock_guard<std::mutex> autoLock(lock_);
509 verifyAuthCallback_.erase(pkgName);
510 }
511 }
512
OnUiCall(std::string & pkgName,std::string & paramJson)513 void DeviceManagerNotify::OnUiCall(std::string &pkgName, std::string ¶mJson)
514 {
515 if (pkgName.empty()) {
516 LOGE("DeviceManagerNotify::OnUiCall error: Invalid parameter, pkgName: %s", pkgName.c_str());
517 return;
518 }
519 LOGI("DeviceManagerNotify::OnUiCall in, pkgName:%s", pkgName.c_str());
520 std::shared_ptr<DeviceManagerUiCallback> tempCbk;
521 {
522 std::lock_guard<std::mutex> autoLock(lock_);
523 if (dmUiCallback_.count(pkgName) == 0) {
524 LOGE("OnUiCall error, dm Ui callback not register for pkgName %d.", pkgName.c_str());
525 return;
526 }
527 tempCbk = dmUiCallback_[pkgName];
528 }
529 if (tempCbk == nullptr) {
530 LOGE("OnUiCall error, registered dm Ui callback is nullptr.");
531 return;
532 }
533 tempCbk->OnCall(paramJson);
534 }
535
OnCredentialResult(const std::string & pkgName,int32_t & action,const std::string & credentialResult)536 void DeviceManagerNotify::OnCredentialResult(const std::string &pkgName, int32_t &action,
537 const std::string &credentialResult)
538 {
539 if (pkgName.empty()) {
540 LOGE("DeviceManagerNotify::OnCredentialResult error: Invalid parameter, pkgName: %s", pkgName.c_str());
541 return;
542 }
543 LOGI("DeviceManagerNotify::OnCredentialResult in, pkgName:%s, action:%d", pkgName.c_str(), action);
544 std::shared_ptr<CredentialCallback> tempCbk;
545 {
546 std::lock_guard<std::mutex> autoLock(lock_);
547 if (credentialCallback_.count(pkgName) == 0) {
548 LOGE("DeviceManagerNotify::OnCredentialResult error, credential callback not register for pkgName %s.",
549 pkgName.c_str());
550 return;
551 }
552 tempCbk = credentialCallback_[pkgName];
553 }
554 if (tempCbk == nullptr) {
555 LOGE("OnCredentialResult error, registered credential callback is nullptr.");
556 return;
557 }
558 tempCbk->OnCredentialResult(action, credentialResult);
559 }
560 } // namespace DistributedHardware
561 } // namespace OHOS
562