1 /* 2 * Copyright (c) 2021-2024 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 "sa_mgr_client.h" 17 18 #include "hilog_tag_wrapper.h" 19 #include "if_system_ability_manager.h" 20 #include "ipc_skeleton.h" 21 #include "iservice_registry.h" 22 #include "string_ex.h" 23 24 namespace OHOS { 25 namespace AAFwk { SaMgrClient()26SaMgrClient::SaMgrClient() : saMgr_(nullptr) 27 {} 28 ~SaMgrClient()29SaMgrClient::~SaMgrClient() 30 {} 31 GetSystemAbility(const int32_t systemAbilityId)32sptr<IRemoteObject> SaMgrClient::GetSystemAbility(const int32_t systemAbilityId) 33 { 34 // use single instance of saMgr_ 35 if (saMgr_ == nullptr) { 36 std::lock_guard<std::mutex> lock(saMutex_); 37 if (saMgr_ == nullptr) { 38 saMgr_ = SystemAbilityManagerClient::GetInstance().GetSystemAbilityManager(); 39 if (saMgr_ == nullptr) { 40 TAG_LOGE(AAFwkTag::DEFAULT, "Get registry fialed"); 41 return nullptr; 42 } 43 } 44 } 45 return saMgr_->GetSystemAbility(systemAbilityId); 46 } 47 CheckSystemAbility(const int32_t systemAbilityId)48sptr<IRemoteObject> SaMgrClient::CheckSystemAbility(const int32_t systemAbilityId) 49 { 50 // use single instance of saMgr_ 51 if (saMgr_ == nullptr) { 52 std::lock_guard<std::mutex> lock(saMutex_); 53 if (saMgr_ == nullptr) { 54 saMgr_ = SystemAbilityManagerClient::GetInstance().GetSystemAbilityManager(); 55 if (saMgr_ == nullptr) { 56 TAG_LOGE(AAFwkTag::DEFAULT, "Get registry fialed"); 57 return nullptr; 58 } 59 } 60 } 61 return saMgr_->CheckSystemAbility(systemAbilityId); 62 } 63 RegisterSystemAbility(const int32_t systemAbilityId,sptr<IRemoteObject> broker)64void SaMgrClient::RegisterSystemAbility( 65 const int32_t __attribute__((unused)) systemAbilityId, sptr<IRemoteObject> __attribute__((unused)) broker) 66 { 67 (void)servicesMap_; 68 } 69 } // namespace AAFwk 70 } // namespace OHOS 71