Lines Matching defs:dog
21 * \brief Watch dog for detecting timeouts
68 qpWatchDog* dog = (qpWatchDog*)arg;
69 DE_ASSERT(dog);
73 while (dog->status == STATUS_THREAD_RUNNING)
76 int totalSecondsPassed = (int)((curTime - dog->resetTime) / 1000000ull);
77 int secondsSinceLastTouch = (int)((curTime - dog->lastTouchTime) / 1000000ull);
78 deBool overIntervalLimit = secondsSinceLastTouch > dog->intervalTimeLimit;
79 deBool overTotalLimit = totalSecondsPassed > dog->totalTimeLimit;
85 dog->timeOutFunc(dog, dog->timeOutUserPtr, reason);
98 qpWatchDog* dog = (qpWatchDog*)deCalloc(sizeof(qpWatchDog));
99 if (!dog)
100 return dog;
107 dog->timeOutFunc = timeOutFunc;
108 dog->timeOutUserPtr = userPtr;
109 dog->totalTimeLimit = totalTimeLimitSecs;
110 dog->intervalTimeLimit = intervalTimeLimitSecs;
111 dog->defaultIntervalTimeLimit = intervalTimeLimitSecs;
114 qpWatchDog_reset(dog);
117 dog->status = STATUS_THREAD_RUNNING;
118 dog->watchDogThread = deThread_create(watchDogThreadFunc, dog, DE_NULL);
119 if (!dog->watchDogThread)
121 deFree(dog);
125 return dog;
128 void qpWatchDog_reset (qpWatchDog* dog)
132 DE_ASSERT(dog);
135 dog->resetTime = curTime;
136 dog->lastTouchTime = curTime;
139 void qpWatchDog_destroy (qpWatchDog* dog)
141 DE_ASSERT(dog);
145 dog->status = STATUS_STOP_THREAD;
146 deThread_join(dog->watchDogThread);
147 deThread_destroy(dog->watchDogThread);
150 deFree(dog);
153 void qpWatchDog_touch (qpWatchDog* dog)
155 DE_ASSERT(dog);
157 dog->lastTouchTime = deGetMicroseconds();
167 void qpWatchDog_touchAndDisableIntervalTimeLimit(qpWatchDog *dog)
169 dog->intervalTimeLimit = dog->totalTimeLimit;
170 qpWatchDog_touch(dog);
173 void qpWatchDog_touchAndEnableIntervalTimeLimit(qpWatchDog *dog)
175 dog->intervalTimeLimit = dog->defaultIntervalTimeLimit;
176 qpWatchDog_touch(dog);