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 MakeMDnsDiscovery(EventManager * eventManager)31MDnsDiscoveryInstance *MDnsDiscoveryInstance::MakeMDnsDiscovery(EventManager *eventManager) 32 { 33 std::lock_guard<std::mutex> lock(g_mDNSDiscoverMutex); 34 auto mdnsDiscovery = new MDnsDiscoveryInstance(eventManager); 35 if (mdnsDiscovery->observer_ == nullptr) { 36 NETMANAGER_EXT_LOGE("mdnsDiscovery->observer_ is nullptr"); 37 delete mdnsDiscovery; 38 return nullptr; 39 } 40 discoverInstanceMap_[mdnsDiscovery->observer_.GetRefPtr()] = mdnsDiscovery; 41 return mdnsDiscovery; 42 } 43 DeleteMDnsDiscovery(MDnsDiscoveryInstance * mdnsDiscovery)44void MDnsDiscoveryInstance::DeleteMDnsDiscovery(MDnsDiscoveryInstance *mdnsDiscovery) 45 { 46 std::lock_guard<std::mutex> lock(g_mDNSDiscoverMutex); 47 if (mdnsDiscovery->observer_ == nullptr) { 48 NETMANAGER_EXT_LOGE("mdnsDiscovery->observer_ is nullptr"); 49 return; 50 } 51 discoverInstanceMap_.erase(mdnsDiscovery->observer_.GetRefPtr()); 52 delete mdnsDiscovery; 53 } 54 GetObserver() const55sptr<MDnsDiscoveryObserver> MDnsDiscoveryInstance::GetObserver() const 56 { 57 return observer_; 58 } 59 GetEventManager() const60EventManager *MDnsDiscoveryInstance::GetEventManager() const 61 { 62 return manager_; 63 } 64 } // namespace OHOS::NetManagerStandard 65