#include "WaitForFileExists.h"
WaitForFileExists::WaitForFileExists(string fileName, int timeout, string timeoutUnit, int recheckTime, string recheckTimeUnit)
{
_fileName = fileName;
_timeout = timeout;
_timeoutUnit = timeoutUnit;
_recheckTime = recheckTime;
_recheckTimeUnit = recheckTimeUnit;
}
bool WaitForFileExists::doCheck()
{
if (_fileName == "" || _timeout <= 0 || _timeoutUnit == "" || _recheckTime <= 0 || _recheckTimeUnit == "")
{
cout << "The input parameter is wrong!" << endl;
return false;
}
if(checkFileExist() == true)
{
return true;
}
else
{
cout<<"The file path is not exist, we will check it again until timeout."<<endl;
double dif = 0;
time_t start,end;
time(&start);
int timer;
if(false == convertTimeToSec(_timeoutUnit, _timeout, timer))
{
cout<<"Error>>> the parameter is wrong, just support s, m, h."<<endl;
return false;
}
int recheckTimer;
if(false == convertTimeToSec(_recheckTimeUnit, _recheckTime, recheckTimer))
{
cout<<"Error>>> the parameter is wrong, just support s, m, h."<<endl;
return false;
}
while(dif < (double)timer)
{
time(&end);
dif = difftime(end,start);
Sleep(recheckTimer - 1);
if(checkFileExist())
{
return true;
}
}
return false;
}
}
bool WaitForFileExists::checkFileExist()
{
std::ifstream fin(_fileName.c_str());
if(fin.is_open())
{
fin.close();
return true;
}
else
{
return false;
}
}
bool WaitForFileExists::convertTimeToSec(string timeUnit, int timer, int& retTimer)
{
if(timeUnit == "m")
{
retTimer = timer*60;
}
else if(timeUnit == "s")
{
retTimer = timer;
}
else if(timeUnit == "h")
{
retTimer = timer*3600;
}
else
{
cout<<"Error>>> the parameter is wrong, just support s, m, h."<<endl;
return false;
}
return true;
}
相关推荐
如果先初始化从模式定时器3,定时器3工作在触发模式下,TRGI信号来源为定时器2的TRGO,而定时器2还未初始化,故TRGO信号来源默认是UG位,故在定时器2初始化过程中会置位UG位,从而触发定时器3的从模式触发模式,导致...
linux设置一个定时器
//linux只允许单进程拥有一个定时器,因此在linux下的单进程中要使用多个定时器,则需要自己维护管理 // //这个实现允许用户使用多个自定义的定时器,每个自定义的定时器将周期地被触发直到其被删除。实现的主要思路...
一个定时器实现多个虚拟定时器具体代码实现
Qt线程有两种方法:1是继承qthread;...解决办法:无法关闭在另一个线程的定时器,是因为定时器要在新的线程中new,不要在构造函数中new出来,这样定时器才属于另一个线程,而不是创造该线程的主线程中;
[099]VC++写的一个串口通信API编程实例,为了读取输入的串口数据,采用轮询方式检测串口,具体的做法是设置一个定时器,每隔[099]VC++写的一个串口通信API编程实例,为了读取输入的串口数据,采用轮询方式检测串口,具体的...
这个文件也可以在WIN98第一版安装盘内的WIN98_33.CAB中找到。 2、有时选择某种时钟款式后会提示缺少字体,这是因为你的WINDOWS 并没有安装定时器所需要的字体。请到我的主页 (http://smalllab.126.com)下载...
多个定时器复用一个硬件定时器,便于实际开发使用,占用资源少!
在外部中断0子程序中设置定时器使之工作,完成延时,时间达到后再禁止定时器中断,这个工作应该在定时器中断子程序本身中完成。 上面的方法可以完成一个“重复触发问题”,即定时时间没有到的时候又来一个触发信号...
定时器2用内部时钟源72MHz,分频为7199,即计一个数耗时0.1ms,计数周期为10000,也就是一秒;定时器2更新信号会输出TRGO信号 定时器3外部时钟模式1,触发源为定时器输出的TRGO信号,分频为0,计数周期为2。
从西门子S7-1200编程时发现,原来PLC如此强大,...资源中我分享了用32的通用定时器来做成了PLC中形式的定时器,一个定时器可以扩展成几十个来用。另外我用PLC也简单写了一个交通灯程序,以便大家能更好的理解这种用法
简单实用定时器程序 每过一定的时间执行一遍某内容 原理利用当前时间戳取余的方法来判断是不是过了1小时 如果想长点和短点时间执行只要改动间隔时间就可以了
Windows定时器的资源文件,需要配合响应代码使用,代码参见博主文章!
spring定时器spring定时器spring定时器spring定时器spring定时器
单片机中断 定时器 欢迎大家的使用 中断系统是一个很重要的概念
主要分享一段js代码,有关js定时器的小例子,分为执行一次的定时器与重复执行的定时器,需要的朋友可以参考下
很简单程序,MFC中设置一个定时器(1s刷新一次),注意这个WM_TIMER是要从对话框那里添加,以前我给搞错了
555定时器 555定时器 555定时器 555定时器
本文提出一种linux用户空间下的一种高性能定时器池的实现方法,实现主要基于时间轮和红黑树,以及linux内核提供了一种利于管理的定时器句柄timerfd。结合红黑树、位图、时间轮等技术,设计一种高性能级定时器池,池...
技术:spring 功能:在java后台每隔一段时间执行一次自己想要的代码...这是一个web工程、把工程解压后放到eclipse或myeclipse里运行就可以了、在控制台会每隔5秒输出一句话、时间是可以设置的、想要多久执行一次都可以.