17a9a4b8fSopenharmony_ci/* 27a9a4b8fSopenharmony_ci * Copyright (c) 2022 Huawei Device Co., Ltd. 37a9a4b8fSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 47a9a4b8fSopenharmony_ci * you may not use this file except in compliance with the License. 57a9a4b8fSopenharmony_ci * You may obtain a copy of the License at 67a9a4b8fSopenharmony_ci * 77a9a4b8fSopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 87a9a4b8fSopenharmony_ci * 97a9a4b8fSopenharmony_ci * Unless required by applicable law or agreed to in writing, software 107a9a4b8fSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 117a9a4b8fSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 127a9a4b8fSopenharmony_ci * See the License for the specific language governing permissions and 137a9a4b8fSopenharmony_ci * limitations under the License. 147a9a4b8fSopenharmony_ci */ 157a9a4b8fSopenharmony_ci 167a9a4b8fSopenharmony_ci#ifndef FOUNDATION_RESOURCESCHEDULE_WORKSCHEDULER_WATCHDOG_H 177a9a4b8fSopenharmony_ci#define FOUNDATION_RESOURCESCHEDULE_WORKSCHEDULER_WATCHDOG_H 187a9a4b8fSopenharmony_ci 197a9a4b8fSopenharmony_ci#include <event_handler.h> 207a9a4b8fSopenharmony_ci#include <event_runner.h> 217a9a4b8fSopenharmony_ci#include <refbase.h> 227a9a4b8fSopenharmony_ci 237a9a4b8fSopenharmony_cinamespace OHOS { 247a9a4b8fSopenharmony_cinamespace WorkScheduler { 257a9a4b8fSopenharmony_ciclass WorkPolicyManager; 267a9a4b8fSopenharmony_ciclass Watchdog : public AppExecFwk::EventHandler { 277a9a4b8fSopenharmony_cipublic: 287a9a4b8fSopenharmony_ci explicit Watchdog(const std::shared_ptr<WorkPolicyManager>& service, 297a9a4b8fSopenharmony_ci const std::shared_ptr<AppExecFwk::EventRunner>& runner); 307a9a4b8fSopenharmony_ci ~Watchdog() override = default; 317a9a4b8fSopenharmony_ci /** 327a9a4b8fSopenharmony_ci * @brief Add watchdog. 337a9a4b8fSopenharmony_ci * 347a9a4b8fSopenharmony_ci * @param watchdogId The id of watchdog. 357a9a4b8fSopenharmony_ci * @param interval The interval. 367a9a4b8fSopenharmony_ci * @return True if success,else false. 377a9a4b8fSopenharmony_ci */ 387a9a4b8fSopenharmony_ci bool AddWatchdog(const uint32_t watchdogId, int32_t interval); 397a9a4b8fSopenharmony_ci /** 407a9a4b8fSopenharmony_ci * @brief Remove watchdog. 417a9a4b8fSopenharmony_ci * 427a9a4b8fSopenharmony_ci * @param watchdogId The id of watchdog. 437a9a4b8fSopenharmony_ci */ 447a9a4b8fSopenharmony_ci void RemoveWatchdog(uint32_t watchdogId); 457a9a4b8fSopenharmony_ci /** 467a9a4b8fSopenharmony_ci * @brief Process event. 477a9a4b8fSopenharmony_ci * 487a9a4b8fSopenharmony_ci * @param event The event. 497a9a4b8fSopenharmony_ci */ 507a9a4b8fSopenharmony_ci void ProcessEvent(const AppExecFwk::InnerEvent::Pointer& event) override; 517a9a4b8fSopenharmony_ci 527a9a4b8fSopenharmony_ciprivate: 537a9a4b8fSopenharmony_ci std::shared_ptr<WorkPolicyManager> service_; 547a9a4b8fSopenharmony_ci}; 557a9a4b8fSopenharmony_ci} // namespace WorkScheduler 567a9a4b8fSopenharmony_ci} // namespace OHOS 577a9a4b8fSopenharmony_ci#endif // FOUNDATION_RESOURCESCHEDULE_WORKSCHEDULER_WATCHDOG_H