mirror of https://github.com/tongzx/nt5src
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
144 lines
4.3 KiB
144 lines
4.3 KiB
/***************************************************************************
|
|
Name : TIMEOUTS.C
|
|
Comment : Various support functions
|
|
|
|
Revision Log
|
|
|
|
Num Date Name Description
|
|
--- -------- ---------- -----------------------------------------------
|
|
001 12/18/91 arulm Commenting it for the first time. This is the
|
|
"stable" DOS version from which the Windows code
|
|
will be derived. This file should not change
|
|
for Windows
|
|
***************************************************************************/
|
|
|
|
#include "prep.h"
|
|
|
|
#include "fcomint.h"
|
|
#include "fdebug.h"
|
|
|
|
///RSL
|
|
#include "glbproto.h"
|
|
|
|
|
|
#define faxTlog(m) DEBUGMSG(ZONE_TO, m)
|
|
#define faxT2log(m) DEBUGMSG(ZONE_TIMEOUT, m)
|
|
#define FILEID FILEID_TIMEOUTS
|
|
|
|
/***************************************************************************
|
|
Name : Timers Class
|
|
Purpose : Provide for Timeouts
|
|
TO -- Timeout struct
|
|
startTimeout -- creates a new timeout
|
|
***************************************************************************/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void startTimeOut(PThrdGlbl pTG, LPTO lpto, ULONG ulTimeout)
|
|
{
|
|
|
|
///////////// ulTimeout <<= 1; // give us a little more time during debugging
|
|
|
|
BG_CHK(lpto);
|
|
|
|
lpto->ulStart = GetTickCount();
|
|
lpto->ulTimeout = ulTimeout;
|
|
lpto->ulEnd = lpto->ulStart + ulTimeout; // will wrap around as system
|
|
// time nears 4Gig ms
|
|
|
|
(MyDebugPrint(pTG, LOG_ALL, "StartTO: 0x%08lx --> to=0x%08lx start=0x%08lx end=0x%08lx\r\n",
|
|
lpto, lpto->ulTimeout, lpto->ulStart, lpto->ulEnd));
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
BOOL checkTimeOut(PThrdGlbl pTG, LPTO lpto)
|
|
{
|
|
// if it returns FALSE, caller must return FALSE immediately
|
|
// (after cleaning up, as appropriate).
|
|
|
|
// SWORD swRet;
|
|
ULONG ulTime;
|
|
|
|
BG_CHK(lpto);
|
|
|
|
ulTime = GetTickCount();
|
|
|
|
//// if(fVerbose3)
|
|
//// (MyDebugPrint(pTG, "CheckTO: 0x%08lx --> to=0x%08lx start=0x%08lx end=0x%08lx CURR=0x%08lx\r\n",
|
|
//// lpto, lpto->ulTimeout, lpto->ulStart, lpto->ulEnd, ulTime));
|
|
|
|
if(lpto->ulTimeout == 0)
|
|
{
|
|
goto out;
|
|
}
|
|
else if(lpto->ulEnd >= lpto->ulStart)
|
|
{
|
|
if(ulTime >= lpto->ulStart && ulTime <= lpto->ulEnd)
|
|
return TRUE;
|
|
else
|
|
goto out;
|
|
}
|
|
else // ulEnd wrapped around!!
|
|
{
|
|
ERRMSG(("<<ERROR>> CheckTO WRAPPED!!: 0x%04x --> to=0x%08lx start=0x%08lx end=0x%08lx time=0x%08lx\r\n",
|
|
lpto, lpto->ulTimeout, lpto->ulStart, lpto->ulEnd, ulTime));
|
|
|
|
if(ulTime >= lpto->ulStart || ulTime <= lpto->ulEnd)
|
|
return TRUE;
|
|
else
|
|
goto out;
|
|
}
|
|
|
|
out:
|
|
faxT2log(("CheckTO--TIMEOUT!: 0x%04x --> to=0x%08lx start=0x%08lx end=0x%08lx CURR=0x%08lx\r\n",
|
|
lpto, lpto->ulTimeout, lpto->ulStart, lpto->ulEnd, ulTime));
|
|
return FALSE;
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// this will return garbage values if
|
|
ULONG leftTimeOut(PThrdGlbl pTG, LPTO lpto)
|
|
{
|
|
ULONG ulTime;
|
|
|
|
BG_CHK(lpto);
|
|
ulTime = GetTickCount();
|
|
|
|
if(lpto->ulTimeout == 0)
|
|
return 0;
|
|
else if(lpto->ulEnd >= lpto->ulStart)
|
|
{
|
|
if(ulTime >= lpto->ulStart && ulTime <= lpto->ulEnd)
|
|
return (lpto->ulEnd - ulTime);
|
|
else
|
|
return 0;
|
|
}
|
|
else
|
|
{
|
|
if(ulTime >= lpto->ulStart || ulTime <= lpto->ulEnd)
|
|
return (lpto->ulEnd - ulTime); // in unsigned arithmetic this
|
|
// works correctly even if End<Time
|
|
else
|
|
return 0;
|
|
}
|
|
}
|
|
|