1c7afe287Sopenharmony_ci/* 2c7afe287Sopenharmony_ci * Copyright (c) 2024 Huawei Device Co., Ltd. 3c7afe287Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4c7afe287Sopenharmony_ci * you may not use this file except in compliance with the License. 5c7afe287Sopenharmony_ci * You may obtain a copy of the License at 6c7afe287Sopenharmony_ci * 7c7afe287Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8c7afe287Sopenharmony_ci * 9c7afe287Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10c7afe287Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11c7afe287Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12c7afe287Sopenharmony_ci * See the License for the specific language governing permissions and 13c7afe287Sopenharmony_ci * limitations under the License. 14c7afe287Sopenharmony_ci */ 15c7afe287Sopenharmony_ci 16c7afe287Sopenharmony_ci#include <memory> 17c7afe287Sopenharmony_ci 18c7afe287Sopenharmony_ci#include "oaid_service.h" 19c7afe287Sopenharmony_ci#include "oaid_common.h" 20c7afe287Sopenharmony_ci#include "oaid_observer_manager.h" 21c7afe287Sopenharmony_ci 22c7afe287Sopenharmony_cinamespace OHOS { 23c7afe287Sopenharmony_cinamespace Cloud { 24c7afe287Sopenharmony_ciconst std::string OAID_VIRTUAL_STR = "-****-****-****-************"; 25c7afe287Sopenharmony_ciOaidObserverManager::OaidObserverManager() 26c7afe287Sopenharmony_ci{ 27c7afe287Sopenharmony_ci OAID_HILOGI(OAID_MODULE_SERVICE, "OaidObserverManager construct"); 28c7afe287Sopenharmony_ci} 29c7afe287Sopenharmony_ci 30c7afe287Sopenharmony_ciOaidObserverManager::~OaidObserverManager() 31c7afe287Sopenharmony_ci{ 32c7afe287Sopenharmony_ci OAID_HILOGI(OAID_MODULE_SERVICE, "OaidObserverManager destruct"); 33c7afe287Sopenharmony_ci} 34c7afe287Sopenharmony_ci 35c7afe287Sopenharmony_ciint32_t OaidObserverManager::RegisterObserver(const sptr<IRemoteConfigObserver> &observer) 36c7afe287Sopenharmony_ci{ 37c7afe287Sopenharmony_ci if (observer == nullptr) { 38c7afe287Sopenharmony_ci OAID_HILOGI(OAID_MODULE_SERVICE, "observer is null"); 39c7afe287Sopenharmony_ci return ERR_INVALID_PARAM; 40c7afe287Sopenharmony_ci } 41c7afe287Sopenharmony_ci std::unique_lock<std::shared_mutex> lockRegister(observerMutex_); 42c7afe287Sopenharmony_ci observer_ = observer; 43c7afe287Sopenharmony_ci 44c7afe287Sopenharmony_ci auto oaid = OAIDService::GetInstance()->GetOAID(); 45c7afe287Sopenharmony_ci std::string target = oaid.substr(0, 9).append(OAID_VIRTUAL_STR); 46c7afe287Sopenharmony_ci OAID_HILOGI(OAID_MODULE_SERVICE, "registerObserver success, getOaid is: %{public}s", target.c_str()); 47c7afe287Sopenharmony_ci observer->OnOaidUpdated(oaid); 48c7afe287Sopenharmony_ci return ERR_OK; 49c7afe287Sopenharmony_ci} 50c7afe287Sopenharmony_ci 51c7afe287Sopenharmony_civoid OaidObserverManager::OnUpdateOaid(const std::string &oaid) 52c7afe287Sopenharmony_ci{ 53c7afe287Sopenharmony_ci std::shared_lock<std::shared_mutex> lockUpdate(observerMutex_); 54c7afe287Sopenharmony_ci if (observer_ == nullptr) { 55c7afe287Sopenharmony_ci OAID_HILOGI(OAID_MODULE_SERVICE, "observer is null, error code is: %{public}d", ERR_NULL_POINTER); 56c7afe287Sopenharmony_ci return; 57c7afe287Sopenharmony_ci } 58c7afe287Sopenharmony_ci std::string target = oaid.substr(0, 9).append(OAID_VIRTUAL_STR); 59c7afe287Sopenharmony_ci OAID_HILOGI(OAID_MODULE_SERVICE, "OnOaidUpdated success oaid is: %{public}s", target.c_str()); 60c7afe287Sopenharmony_ci observer_->OnOaidUpdated(oaid); 61c7afe287Sopenharmony_ci} 62c7afe287Sopenharmony_ci} // namespace Cloud 63c7afe287Sopenharmony_ci} // namespace OHOS