/* * Copyright (c) 2023 Fancy Code. * 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. */ #include "TestManager.h" #include "ILog.h" #include "MainThread.h" #include #include #include constexpr int TIMER_SLEEP_MS = 100; void TestManager::Init(void) { mSleepingTime = 0; mTimeOutMs = 0; mRuning = false; } void TestManager::UnInit(void) { StopTimer(); if (mTimerThread.joinable()) { mTimerThread.join(); } } void TestManager::ResetTimeOut(const unsigned int &timeOutMs) { // mTimeOutMs = timeOutMs; StartTimer(); } void TestManager::StartTimer(void) { std::lock_guard locker(mMutex); if (mTimerThread.joinable()) { LogInfo("Timer has started.\n"); return; } auto timerThread = [](TestManager *timer) { // timer->Timer(); }; mTimerThread = std::thread(timerThread, this); } void TestManager::StopTimer(void) { // mRuning = false; } void TestManager::Timer(void) { mRuning = true; while (mRuning) { std::this_thread::sleep_for(std::chrono::milliseconds(TIMER_SLEEP_MS)); mSleepingTime += TIMER_SLEEP_MS; if (mSleepingTime >= mTimeOutMs) { LogInfo("Test time out.\n"); mRuning = false; MainThread::GetInstance()->Exit(); } } }