/* * Copyright (c) 2022 Huawei Device Co., Ltd. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #ifndef OHOS_DISTRIBUTED_HARDWARE_DH_TIMER_H #define OHOS_DISTRIBUTED_HARDWARE_DH_TIMER_H #include #include #include #include #include #include "event_handler.h" namespace OHOS { namespace DistributedHardware { class DHTimer { public: DHTimer(std::string timerId, int32_t delayTimeMs); virtual ~DHTimer(); void StartTimer(); void StopTimer(); private: virtual void ExecuteInner() = 0; virtual void HandleStopTimer() = 0; void InitTimer(); void ReleaseTimer(); void Execute(); void StartEventRunner(); private: std::thread eventHandlerThread_; std::mutex timerMutex_; std::condition_variable timerCond_; std::shared_ptr eventHandler_; std::string timerId_; int32_t delayTimeMs_; }; } // namespace DistributedHardware } // namespace OHOS #endif