15ccb8f90Sopenharmony_ci/* 25ccb8f90Sopenharmony_ci * Copyright (c) 2024 Huawei Device Co., Ltd. 35ccb8f90Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 45ccb8f90Sopenharmony_ci * you may not use this file except in compliance with the License. 55ccb8f90Sopenharmony_ci * You may obtain a copy of the License at 65ccb8f90Sopenharmony_ci * 75ccb8f90Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 85ccb8f90Sopenharmony_ci * 95ccb8f90Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 105ccb8f90Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 115ccb8f90Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 125ccb8f90Sopenharmony_ci * See the License for the specific language governing permissions and 135ccb8f90Sopenharmony_ci * limitations under the License. 145ccb8f90Sopenharmony_ci */ 155ccb8f90Sopenharmony_ci 165ccb8f90Sopenharmony_ci#ifndef POWERMGR_POWER_MANAGER_HIBERNATE_CONTROLLER_H 175ccb8f90Sopenharmony_ci#define POWERMGR_POWER_MANAGER_HIBERNATE_CONTROLLER_H 185ccb8f90Sopenharmony_ci 195ccb8f90Sopenharmony_ci#include <set> 205ccb8f90Sopenharmony_ci 215ccb8f90Sopenharmony_ci#include "hibernate/isync_hibernate_callback.h" 225ccb8f90Sopenharmony_ci 235ccb8f90Sopenharmony_cinamespace OHOS { 245ccb8f90Sopenharmony_cinamespace PowerMgr { 255ccb8f90Sopenharmony_ciclass HibernateController { 265ccb8f90Sopenharmony_cipublic: 275ccb8f90Sopenharmony_ci HibernateController(){}; 285ccb8f90Sopenharmony_ci virtual ~HibernateController() = default; 295ccb8f90Sopenharmony_ci 305ccb8f90Sopenharmony_ci virtual bool Hibernate(bool clearMemory); 315ccb8f90Sopenharmony_ci virtual void RegisterSyncHibernateCallback(const sptr<ISyncHibernateCallback>& cb); 325ccb8f90Sopenharmony_ci virtual void UnregisterSyncHibernateCallback(const sptr<ISyncHibernateCallback>& cb); 335ccb8f90Sopenharmony_ci virtual void PreHibernate() const; 345ccb8f90Sopenharmony_ci virtual void PostHibernate(bool hibernateResult = false) const; 355ccb8f90Sopenharmony_ci 365ccb8f90Sopenharmony_ciprivate: 375ccb8f90Sopenharmony_ci std::mutex mutex_; 385ccb8f90Sopenharmony_ci std::set<sptr<ISyncHibernateCallback>> callbacks_; 395ccb8f90Sopenharmony_ci}; 405ccb8f90Sopenharmony_ci} // namespace PowerMgr 415ccb8f90Sopenharmony_ci} // namespace OHOS 425ccb8f90Sopenharmony_ci 435ccb8f90Sopenharmony_ci#endif // POWERMGR_POWER_MANAGER_HIBERNATE_CONTROLLER_H 44