|
@@ -325,10 +325,9 @@ UA_StatusCode UA_Server_addRepeatedJob(UA_Server *server, UA_Job job, UA_UInt32
|
|
|
|
|
|
static UA_UInt16 processRepeatedJobs(UA_Server *server) {
|
|
|
UA_DateTime current = UA_DateTime_now();
|
|
|
- struct RepeatedJobs *tw = LIST_FIRST(&server->repeatedJobs);
|
|
|
+ struct RepeatedJobs *tw = UA_NULL;
|
|
|
|
|
|
- while (tw) {
|
|
|
-
|
|
|
+ while((tw = LIST_FIRST(&server->repeatedJobs)) != UA_NULL) {
|
|
|
if(tw->nextTime > current)
|
|
|
break;
|
|
|
|
|
@@ -343,28 +342,23 @@ static UA_UInt16 processRepeatedJobs(UA_Server *server) {
|
|
|
jobsCopy[i] = tw->jobs[i].job;
|
|
|
dispatchJobs(server, jobsCopy, tw->jobsSize);
|
|
|
#else
|
|
|
- for (size_t i = 0; i < tw->jobsSize; i++)
|
|
|
- {
|
|
|
-
|
|
|
-
|
|
|
+ for(size_t i=0;i<tw->jobsSize;i++)
|
|
|
+
|
|
|
processJobs(server, &tw->jobs[i].job, 1);
|
|
|
-
|
|
|
- }
|
|
|
#endif
|
|
|
tw->nextTime += tw->interval;
|
|
|
- struct RepeatedJobs *prevTw = tw;
|
|
|
+
|
|
|
+ struct RepeatedJobs *prevTw = LIST_FIRST(&server->repeatedJobs);
|
|
|
while(UA_TRUE) {
|
|
|
struct RepeatedJobs *n = LIST_NEXT(prevTw, pointers);
|
|
|
if(!n || n->nextTime > tw->nextTime)
|
|
|
break;
|
|
|
prevTw = n;
|
|
|
}
|
|
|
- struct RepeatedJobs *nextTw = LIST_NEXT(tw, pointers);
|
|
|
- if (prevTw != tw) {
|
|
|
+ if(prevTw != tw) {
|
|
|
LIST_REMOVE(tw, pointers);
|
|
|
LIST_INSERT_AFTER(prevTw, tw, pointers);
|
|
|
}
|
|
|
- tw = nextTw;
|
|
|
}
|
|
|
|
|
|
|