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 return nullptr; 38 } 39 discoverInstanceMap_[mdnsDiscovery->observer_.GetRefPtr()] = mdnsDiscovery; 40 return mdnsDiscovery; 41 } 42 DeleteMDnsDiscovery(MDnsDiscoveryInstance * mdnsDiscovery)43void MDnsDiscoveryInstance::DeleteMDnsDiscovery(MDnsDiscoveryInstance *mdnsDiscovery) 44 { 45 std::lock_guard<std::mutex> lock(g_mDNSDiscoverMutex); 46 if (mdnsDiscovery->observer_ == nullptr) { 47 NETMANAGER_EXT_LOGE("mdnsDiscovery->observer_ is nullptr"); 48 return; 49 } 50 discoverInstanceMap_.erase(mdnsDiscovery->observer_.GetRefPtr()); 51 delete mdnsDiscovery; 52 } 53 GetObserver() const54sptr<MDnsDiscoveryObserver> MDnsDiscoveryInstance::GetObserver() const 55 { 56 return observer_; 57 } 58 GetEventManager() const59EventManager *MDnsDiscoveryInstance::GetEventManager() const 60 { 61 return manager_; 62 } 63 } // namespace OHOS::NetManagerStandard 64