1 /* 2 * Copyright (C) 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 <mutex> 17 18 #include "mdns_instances.h" 19 #include "net_manager_constants.h" 20 #include "netmanager_ext_log.h" 21 22 namespace OHOS::NetManagerStandard { 23 std::map<MDnsDiscoveryObserver *, MDnsDiscoveryInstance *> MDnsDiscoveryInstance::discoverInstanceMap_; 24 std::mutex g_mDNSDiscoverMutex; 25 MDnsDiscoveryInstance(EventManager *eventManager)26MDnsDiscoveryInstance::MDnsDiscoveryInstance(EventManager *eventManager) 27 : observer_(new (std::nothrow) MDnsDiscoveryObserver), manager_(eventManager) 28 { 29 } 30 MDnsDiscoveryInstance()31MDnsDiscoveryInstance::MDnsDiscoveryInstance() {} 32 MakeMDnsDiscovery(EventManager *eventManager)33MDnsDiscoveryInstance *MDnsDiscoveryInstance::MakeMDnsDiscovery(EventManager *eventManager) 34 { 35 std::lock_guard<std::mutex> lock(g_mDNSDiscoverMutex); 36 auto mdnsDiscovery = new MDnsDiscoveryInstance(eventManager); 37 if (mdnsDiscovery->observer_ == nullptr) { 38 NETMANAGER_EXT_LOGE("mdnsDiscovery->observer_ is nullptr"); 39 delete mdnsDiscovery; 40 return nullptr; 41 } 42 discoverInstanceMap_[mdnsDiscovery->observer_.GetRefPtr()] = mdnsDiscovery; 43 return mdnsDiscovery; 44 } 45 DeleteMDnsDiscovery(MDnsDiscoveryInstance *mdnsDiscovery)46void MDnsDiscoveryInstance::DeleteMDnsDiscovery(MDnsDiscoveryInstance *mdnsDiscovery) 47 { 48 std::lock_guard<std::mutex> lock(g_mDNSDiscoverMutex); 49 if (mdnsDiscovery->observer_ == nullptr) { 50 NETMANAGER_EXT_LOGE("mdnsDiscovery->observer_ is nullptr"); 51 return; 52 } 53 discoverInstanceMap_.erase(mdnsDiscovery->observer_.GetRefPtr()); 54 delete mdnsDiscovery; 55 } 56 GetObserver() const57sptr<MDnsDiscoveryObserver> MDnsDiscoveryInstance::GetObserver() const 58 { 59 return observer_; 60 } 61 GetEventManager() const62EventManager *MDnsDiscoveryInstance::GetEventManager() const 63 { 64 return manager_; 65 } 66 } // namespace OHOS::NetManagerStandard 67