libUPnP 1.14.19
|
Functions | |
static void | FreeTimerEvent (TimerThread *timer, TimerEvent *event) |
Deallocates a dynamically allocated TimerEvent. | |
static void | TimerThreadWorker (void *arg) |
Implements timer thread. | |
static int | CalculateEventTime (time_t *timeout, TimeoutType type) |
Calculates the appropriate timeout in absolute seconds since Jan 1, 1970. | |
static TimerEvent * | CreateTimerEvent (TimerThread *timer, ThreadPoolJob *job, Duration persistent, time_t eventTime, int id) |
Creates a Timer Event. (Dynamically allocated). | |
int | TimerThreadInit (TimerThread *timer, ThreadPool *tp) |
Initializes and starts timer thread. | |
int | TimerThreadSchedule (TimerThread *timer, time_t timeout, TimeoutType type, ThreadPoolJob *job, Duration duration, int *id) |
Schedules an event to run at a specified time. | |
int | TimerThreadRemove (TimerThread *timer, int id, ThreadPoolJob *out) |
Removes an event from the timer Q. | |
int | TimerThreadShutdown (TimerThread *timer) |
Shutdown the timer thread. | |
|
static |
Calculates the appropriate timeout in absolute seconds since Jan 1, 1970.
[in] | timeout | Timeout. |
[in] | type | Timeout type. |
References ABS_SEC.
Referenced by TimerThreadSchedule().
|
static |
Creates a Timer Event. (Dynamically allocated).
[in] | timer | Valid timer thread pointer. |
[in] | job | . |
[in] | persistent | . |
[in] | eventTime | The absoule time of the event in seconds from Jan, 1970. |
[in] | id | Id of job. |
References TIMEREVENT::eventTime, and TIMEREVENT::persistent.
Referenced by TimerThreadSchedule().
|
static |
Deallocates a dynamically allocated TimerEvent.
[in] | timer | Valid timer thread pointer. |
[in] | event | Must be allocated with CreateTimerEvent |
Referenced by TimerThreadRemove(), TimerThreadSchedule(), TimerThreadShutdown(), and TimerThreadWorker().
int TimerThreadInit | ( | TimerThread * | timer, |
ThreadPool * | tp | ||
) |
Initializes and starts timer thread.
[in] | timer | Valid timer thread pointer. |
[in] | tp | Valid thread pool to use. Must be started. Must be valid for lifetime of timer. Timer must be shutdown BEFORE thread pool. |
References ThreadPoolAddPersistent(), TimerThreadWorker(), TPJobInit(), and TPJobSetPriority().
Referenced by UpnpInitPreamble().
int TimerThreadRemove | ( | TimerThread * | timer, |
int | id, | ||
ThreadPoolJob * | out | ||
) |
Removes an event from the timer Q.
Events can only be removed before they have been placed in the thread pool.
[in] | timer | Valid timer thread pointer. |
[in] | id | Id of event to remove. |
[in] | out | Space for thread pool job. |
References FreeTimerEvent().
Referenced by free_client_subscription(), and genaRenewSubscription().
int TimerThreadSchedule | ( | TimerThread * | timer, |
time_t | time, | ||
TimeoutType | type, | ||
ThreadPoolJob * | job, | ||
Duration | duration, | ||
int * | id | ||
) |
Schedules an event to run at a specified time.
[in] | timer | Valid timer thread pointer. |
[in] | timeout | time of event. Either in absolute seconds, or relative seconds in the future. |
[in] | type | either ABS_SEC, or REL_SEC. If REL_SEC, then the event will be scheduled at the current time + REL_SEC. |
[in] | job | Valid Thread pool job with following fields. |
[in] | duration | . |
[in] | id | Id of timer event. (out, can be null). |
References CalculateEventTime(), CreateTimerEvent(), TIMEREVENT::eventTime, and FreeTimerEvent().
Referenced by ScheduleGenaAutoRenew(), SearchByTarget(), ssdp_handle_device_request(), and UpnpSendAdvertisementLowPower().
int TimerThreadShutdown | ( | TimerThread * | timer | ) |
Shutdown the timer thread.
Events scheduled in the future will NOT be run.
Timer thread should be shutdown BEFORE it's associated thread pool.
[in] | timer | Valid timer thread pointer. |
References FreeTimerEvent().
Referenced by UpnpFinish().
|
static |
Implements timer thread.
Waits for next event to occur and schedules associated job into threadpool.
[in] | arg | arg is cast to (TimerThread *). |
References TIMEREVENT::eventTime, FreeTimerEvent(), TIMEREVENT::persistent, LINKEDLIST::size, ThreadPoolAdd(), and ThreadPoolAddPersistent().
Referenced by TimerThreadInit().