Lines Matching defs:dog
21 * \brief Watch dog for detecting timeouts
62 qpWatchDog* dog = (qpWatchDog*)arg;
63 DE_ASSERT(dog);
67 while (dog->status == STATUS_THREAD_RUNNING)
70 int totalSecondsPassed = (int)((curTime - dog->resetTime) / 1000000ull);
71 int secondsSinceLastTouch = (int)((curTime - dog->lastTouchTime) / 1000000ull);
72 deBool overIntervalLimit = secondsSinceLastTouch > dog->intervalTimeLimit;
73 deBool overTotalLimit = totalSecondsPassed > dog->totalTimeLimit;
79 dog->timeOutFunc(dog, dog->timeOutUserPtr, reason);
92 qpWatchDog* dog = (qpWatchDog*)deCalloc(sizeof(qpWatchDog));
93 if (!dog)
94 return dog;
101 dog->timeOutFunc = timeOutFunc;
102 dog->timeOutUserPtr = userPtr;
103 dog->totalTimeLimit = totalTimeLimitSecs;
104 dog->intervalTimeLimit = intervalTimeLimitSecs;
107 qpWatchDog_reset(dog);
110 dog->status = STATUS_THREAD_RUNNING;
111 dog->watchDogThread = deThread_create(watchDogThreadFunc, dog, DE_NULL);
112 if (!dog->watchDogThread)
114 deFree(dog);
118 return dog;
121 void qpWatchDog_reset (qpWatchDog* dog)
125 DE_ASSERT(dog);
128 dog->resetTime = curTime;
129 dog->lastTouchTime = curTime;
132 void qpWatchDog_destroy (qpWatchDog* dog)
134 DE_ASSERT(dog);
138 dog->status = STATUS_STOP_THREAD;
139 deThread_join(dog->watchDogThread);
140 deThread_destroy(dog->watchDogThread);
143 deFree(dog);
146 void qpWatchDog_touch (qpWatchDog* dog)
148 DE_ASSERT(dog);
150 dog->lastTouchTime = deGetMicroseconds();