/* * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved * * 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 */ /* * @file timer.cpp * @author Sangwan Kwon (sangwan.kwon@samsung.com) * @version 1.0 * @brief The implementation of timer */ #include "common/timer.h" namespace CCHECKER { Timer::Timer() : m_isStop(false), m_isRunning(false), m_interval(10) { } Timer::~Timer() { } void Timer::timerStart(int interval) { LogDebug("Timer start!!"); if(m_isRunning) return; m_isRunning = true; m_interval = interval; m_thread = std::thread(&Timer::run, this); } void Timer::timerStop() { if (m_thread.joinable()) { { std::unique_lock lock(m_mutex); m_isStop = true; m_isRunning = false; m_cv.notify_one(); } m_thread.join(); } LogDebug("Timer stop!!"); } void Timer::run() { while(1) { LogDebug("[timer] running interval : " << m_interval); if (m_isStop) break; std::unique_lock lock(m_mutex); m_cv.wait_for( lock, std::chrono::seconds(m_interval), [this] { return m_isStop == true; } ); job(); } } } // namespace CCHECKER