1686862fbSopenharmony_ci/* 2686862fbSopenharmony_ci * Copyright (c) 2021-2023 Huawei Device Co., Ltd. 3686862fbSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4686862fbSopenharmony_ci * you may not use this file except in compliance with the License. 5686862fbSopenharmony_ci * You may obtain a copy of the License at 6686862fbSopenharmony_ci * 7686862fbSopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8686862fbSopenharmony_ci * 9686862fbSopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10686862fbSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11686862fbSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12686862fbSopenharmony_ci * See the License for the specific language governing permissions and 13686862fbSopenharmony_ci * limitations under the License. 14686862fbSopenharmony_ci */ 15686862fbSopenharmony_ci 16686862fbSopenharmony_ci#ifndef OHOS_DISTRIBUTED_DNETWORK_ADAPTER_H 17686862fbSopenharmony_ci#define OHOS_DISTRIBUTED_DNETWORK_ADAPTER_H 18686862fbSopenharmony_ci 19686862fbSopenharmony_ci#include <iosfwd> 20686862fbSopenharmony_ci#include <memory> 21686862fbSopenharmony_ci#include <mutex> 22686862fbSopenharmony_ci#include <set> 23686862fbSopenharmony_ci#include <string> 24686862fbSopenharmony_ci 25686862fbSopenharmony_ci#include "device_manager.h" 26686862fbSopenharmony_ci#include "event_handler.h" 27686862fbSopenharmony_ci#include "nocopyable.h" 28686862fbSopenharmony_ci 29686862fbSopenharmony_cinamespace OHOS { 30686862fbSopenharmony_cinamespace DistributedSchedule { 31686862fbSopenharmony_cienum DeviceInfoType { 32686862fbSopenharmony_ci UNKNOWN_INFO = 0, 33686862fbSopenharmony_ci BASIC_INFO = 1, 34686862fbSopenharmony_ci NETWORK_INFO = 2, 35686862fbSopenharmony_ci TRUST_INFO = 3, 36686862fbSopenharmony_ci}; 37686862fbSopenharmony_ci 38686862fbSopenharmony_cienum NodeDeviceInfoKey { 39686862fbSopenharmony_ci NODE_KEY_UDID = 0, 40686862fbSopenharmony_ci NODE_KEY_UUID = 1, 41686862fbSopenharmony_ci}; 42686862fbSopenharmony_ci 43686862fbSopenharmony_ciclass DeviceListener { 44686862fbSopenharmony_cipublic: 45686862fbSopenharmony_ci DeviceListener() = default; 46686862fbSopenharmony_ci virtual ~DeviceListener() = default; 47686862fbSopenharmony_ci 48686862fbSopenharmony_ci virtual void OnDeviceOnline(const DistributedHardware::DmDeviceInfo& deviceInfo) = 0; 49686862fbSopenharmony_ci virtual void OnDeviceOffline(const DistributedHardware::DmDeviceInfo& deviceInfo) = 0; 50686862fbSopenharmony_ci virtual void OnDeviceInfoChanged(const DistributedHardware::DmDeviceInfo& deviceInfo) = 0; 51686862fbSopenharmony_ci}; 52686862fbSopenharmony_ci 53686862fbSopenharmony_ciclass DnetworkAdapter { 54686862fbSopenharmony_cipublic: 55686862fbSopenharmony_ci DnetworkAdapter() = default; 56686862fbSopenharmony_ci ~DnetworkAdapter() = default; 57686862fbSopenharmony_ci 58686862fbSopenharmony_ci void Init(); 59686862fbSopenharmony_ci bool AddDeviceChangeListener(const std::shared_ptr<DeviceListener>& listener); 60686862fbSopenharmony_ci void RemoveDeviceChangeListener(const std::shared_ptr<DeviceListener>& listener); 61686862fbSopenharmony_ci std::string GetUdidByNetworkId(const std::string& networkId); 62686862fbSopenharmony_ci std::string GetUuidByNetworkId(const std::string& networkId); 63686862fbSopenharmony_ci bool GetLocalBasicInfo(DistributedHardware::DmDeviceInfo& dmDeviceInfo); 64686862fbSopenharmony_ci 65686862fbSopenharmony_ci static std::shared_ptr<DnetworkAdapter> GetInstance(); 66686862fbSopenharmony_ci bool UpdateDeviceInfoStorage(); 67686862fbSopenharmony_ci 68686862fbSopenharmony_ciprivate: 69686862fbSopenharmony_ci DISALLOW_COPY_AND_MOVE(DnetworkAdapter); 70686862fbSopenharmony_ci 71686862fbSopenharmony_ci static std::shared_ptr<AppExecFwk::EventHandler> dnetworkHandler_; 72686862fbSopenharmony_ci static std::mutex listenerSetMutex_; 73686862fbSopenharmony_ci static std::set<std::shared_ptr<DeviceListener>> listenerSet_; 74686862fbSopenharmony_ci 75686862fbSopenharmony_ci std::shared_ptr<DistributedHardware::DeviceStateCallback> stateCallback_; 76686862fbSopenharmony_ci std::shared_ptr<DistributedHardware::DevTrustChangeCallback> devTrustChangeCallback_; 77686862fbSopenharmony_ci std::shared_ptr<DistributedHardware::DmInitCallback> initCallback_; 78686862fbSopenharmony_ciclass DeviceInitCallBack : public DistributedHardware::DmInitCallback { 79686862fbSopenharmony_ci void OnRemoteDied() override; 80686862fbSopenharmony_ci}; 81686862fbSopenharmony_ci 82686862fbSopenharmony_ciclass DmsDeviceStateCallback : public DistributedHardware::DeviceStateCallback { 83686862fbSopenharmony_ci void OnDeviceOnline(const DistributedHardware::DmDeviceInfo& deviceInfo) override; 84686862fbSopenharmony_ci void OnDeviceOffline(const DistributedHardware::DmDeviceInfo& deviceInfo) override; 85686862fbSopenharmony_ci void OnDeviceChanged(const DistributedHardware::DmDeviceInfo& deviceInfo) override; 86686862fbSopenharmony_ci void OnDeviceReady(const DistributedHardware::DmDeviceInfo& deviceInfo) override; 87686862fbSopenharmony_ci}; 88686862fbSopenharmony_ci 89686862fbSopenharmony_ciclass DmsDevTrustChangeCallback : public DistributedHardware::DevTrustChangeCallback { 90686862fbSopenharmony_ci void OnDeviceTrustChange(const std::string &udid, const std::string &uuid, 91686862fbSopenharmony_ci const DistributedHardware::DmAuthForm authform) override; 92686862fbSopenharmony_ci}; 93686862fbSopenharmony_ci}; 94686862fbSopenharmony_ci} // namespace DistributedSchedule 95686862fbSopenharmony_ci} // namespace OHOS 96686862fbSopenharmony_ci#endif // OHOS_DISTRIBUTED_DNETWORK_ADAPTER_H