199552fe9Sopenharmony_ci/* 299552fe9Sopenharmony_ci * Copyright (c) 2023 Huawei Device Co., Ltd. 399552fe9Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 499552fe9Sopenharmony_ci * you may not use this file except in compliance with the License. 599552fe9Sopenharmony_ci * You may obtain a copy of the License at 699552fe9Sopenharmony_ci * 799552fe9Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 899552fe9Sopenharmony_ci * 999552fe9Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 1099552fe9Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 1199552fe9Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1299552fe9Sopenharmony_ci * See the License for the specific language governing permissions and 1399552fe9Sopenharmony_ci * limitations under the License. 1499552fe9Sopenharmony_ci */ 1599552fe9Sopenharmony_ci 1699552fe9Sopenharmony_ci#include "strategy_manager_adapter.h" 1799552fe9Sopenharmony_ci 1899552fe9Sopenharmony_ci#include "ibase_strategy.h" 1999552fe9Sopenharmony_ci#include "standby_service_log.h" 2099552fe9Sopenharmony_ci#ifdef STANDBY_COMMUNICATION_NETMANAGER_BASE_ENABLE 2199552fe9Sopenharmony_ci#include "network_strategy.h" 2299552fe9Sopenharmony_ci#endif 2399552fe9Sopenharmony_ci#include "standby_config_manager.h" 2499552fe9Sopenharmony_ci#include "running_lock_strategy.h" 2599552fe9Sopenharmony_ci 2699552fe9Sopenharmony_cinamespace OHOS { 2799552fe9Sopenharmony_cinamespace DevStandbyMgr { 2899552fe9Sopenharmony_cinamespace { 2999552fe9Sopenharmony_ciconst std::map<std::string, std::shared_ptr<IBaseStrategy>> strategyMap_ { 3099552fe9Sopenharmony_ci #ifdef STANDBY_COMMUNICATION_NETMANAGER_BASE_ENABLE 3199552fe9Sopenharmony_ci { "NETWORK", std::make_shared<NetworkStrategy>() }, 3299552fe9Sopenharmony_ci #endif 3399552fe9Sopenharmony_ci { "RUNNING_LOCK", std::make_shared<RunningLockStrategy>() }, 3499552fe9Sopenharmony_ci}; 3599552fe9Sopenharmony_ci} 3699552fe9Sopenharmony_ci 3799552fe9Sopenharmony_cibool StrategyManagerAdapter::Init() 3899552fe9Sopenharmony_ci{ 3999552fe9Sopenharmony_ci if (StandbyConfigManager::GetInstance() == nullptr) { 4099552fe9Sopenharmony_ci STANDBYSERVICE_LOGE("standby service ptr is nullptr, init failed"); 4199552fe9Sopenharmony_ci return false; 4299552fe9Sopenharmony_ci } 4399552fe9Sopenharmony_ci const auto& strategyConfigList = StandbyConfigManager::GetInstance()->GetStrategyConfigList(); 4499552fe9Sopenharmony_ci if (strategyConfigList.empty()) { 4599552fe9Sopenharmony_ci STANDBYSERVICE_LOGI("strategies is disabled"); 4699552fe9Sopenharmony_ci return true; 4799552fe9Sopenharmony_ci } 4899552fe9Sopenharmony_ci RegisterPolicy(strategyConfigList); 4999552fe9Sopenharmony_ci STANDBYSERVICE_LOGI("strategy manager plugin initialization succeed"); 5099552fe9Sopenharmony_ci return true; 5199552fe9Sopenharmony_ci} 5299552fe9Sopenharmony_ci 5399552fe9Sopenharmony_cibool StrategyManagerAdapter::UnInit() 5499552fe9Sopenharmony_ci{ 5599552fe9Sopenharmony_ci for (const auto& strategy : strategyList_) { 5699552fe9Sopenharmony_ci strategy->OnDestroy(); 5799552fe9Sopenharmony_ci } 5899552fe9Sopenharmony_ci strategyList_.clear(); 5999552fe9Sopenharmony_ci return true; 6099552fe9Sopenharmony_ci} 6199552fe9Sopenharmony_ci 6299552fe9Sopenharmony_civoid StrategyManagerAdapter::RegisterPolicy(const std::vector<std::string>& strategies) 6399552fe9Sopenharmony_ci{ 6499552fe9Sopenharmony_ci for (const auto& item : strategies) { 6599552fe9Sopenharmony_ci auto strategy = strategyMap_.find(item); 6699552fe9Sopenharmony_ci if (strategy == strategyMap_.end()) { 6799552fe9Sopenharmony_ci continue; 6899552fe9Sopenharmony_ci } 6999552fe9Sopenharmony_ci STANDBYSERVICE_LOGI("strategy manager init %{public}s", item.c_str()); 7099552fe9Sopenharmony_ci auto strategyPtr = strategy->second; 7199552fe9Sopenharmony_ci if (!strategyPtr) { 7299552fe9Sopenharmony_ci continue; 7399552fe9Sopenharmony_ci } 7499552fe9Sopenharmony_ci if (strategyPtr->OnCreated() == ERR_OK) { 7599552fe9Sopenharmony_ci strategyList_.emplace_back(strategyPtr); 7699552fe9Sopenharmony_ci } 7799552fe9Sopenharmony_ci } 7899552fe9Sopenharmony_ci} 7999552fe9Sopenharmony_ci 8099552fe9Sopenharmony_civoid StrategyManagerAdapter::HandleEvent(const StandbyMessage& message) 8199552fe9Sopenharmony_ci{ 8299552fe9Sopenharmony_ci STANDBYSERVICE_LOGD("StrategyManagerAdapter revceive message %{public}u, action: %{public}s", 8399552fe9Sopenharmony_ci message.eventId_, message.action_.c_str()); 8499552fe9Sopenharmony_ci for (const auto &strategy : strategyList_) { 8599552fe9Sopenharmony_ci strategy->HandleEvent(message); 8699552fe9Sopenharmony_ci } 8799552fe9Sopenharmony_ci} 8899552fe9Sopenharmony_ci 8999552fe9Sopenharmony_civoid StrategyManagerAdapter::ShellDump(const std::vector<std::string>& argsInStr, std::string& result) 9099552fe9Sopenharmony_ci{ 9199552fe9Sopenharmony_ci for (const auto &strategy : strategyList_) { 9299552fe9Sopenharmony_ci strategy->ShellDump(argsInStr, result); 9399552fe9Sopenharmony_ci } 9499552fe9Sopenharmony_ci} 9599552fe9Sopenharmony_ci} // namespace DevStandbyMgr 9699552fe9Sopenharmony_ci} // namespace OHOS