libUPnP 1.14.19
Data Structures | Macros | Typedefs | Enumerations | Functions
TimerThread.h File Reference
#include "FreeList.h"
#include "LinkedList.h"
#include "ThreadPool.h"
#include "ithread.h"
Include dependency graph for TimerThread.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  TIMERTHREAD
 
struct  TIMEREVENT
 

Macros

#define INVALID_EVENT_ID   (-10 & 1 << 29)
 

Typedefs

typedef enum timeoutType TimeoutType
 
typedef struct TIMERTHREAD TimerThread
 
typedef struct TIMEREVENT TimerEvent
 

Enumerations

enum  timeoutType { ABS_SEC , REL_SEC }
 

Functions

int TimerThreadInit (TimerThread *timer, ThreadPool *tp)
 Initializes and starts timer thread.
 
int TimerThreadSchedule (TimerThread *timer, time_t time, 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.
 

Typedef Documentation

◆ TimeoutType

typedef enum timeoutType TimeoutType

Timeout Types.

◆ TimerEvent

typedef struct TIMEREVENT TimerEvent

Struct to contain information for a timer event.

Internal to the TimerThread.

◆ TimerThread

typedef struct TIMERTHREAD TimerThread

A timer thread similar to the one in the Upnp SDK that allows the scheduling of a job to run at a specified time in the future.

Because the timer thread uses the thread pool there is no gurantee of timing, only approximate timing.

Uses ThreadPool, Mutex, Condition, Thread.

Enumeration Type Documentation

◆ timeoutType

Timeout Types.

Enumerator
ABS_SEC 

seconds from Jan 1, 1970.

REL_SEC 

seconds from current time.

Function Documentation

◆ TimerThreadInit()

int TimerThreadInit ( TimerThread timer,
ThreadPool tp 
)

Initializes and starts timer thread.

Returns
0 on success, nonzero on failure. Returns error from ThreadPoolAddPersistent on failure.
Parameters
[in]timerValid timer thread pointer.
[in]tpValid 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().

◆ TimerThreadRemove()

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.

Returns
0 on success, INVALID_EVENT_ID on failure.
Parameters
[in]timerValid timer thread pointer.
[in]idId of event to remove.
[in]outSpace for thread pool job.

References FreeTimerEvent().

Referenced by free_client_subscription(), and genaRenewSubscription().

◆ TimerThreadSchedule()

int TimerThreadSchedule ( TimerThread timer,
time_t  time,
TimeoutType  type,
ThreadPoolJob job,
Duration  duration,
int *  id 
)

Schedules an event to run at a specified time.

Returns
0 on success, nonzero on failure, EOUTOFMEM if not enough memory to schedule job.
Parameters
[in]timerValid timer thread pointer.
[in]timetime of event. Either in absolute seconds, or relative seconds in the future.
[in]typeeither ABS_SEC, or REL_SEC. If REL_SEC, then the event will be scheduled at the current time + REL_SEC.
[in]jobValid Thread pool job with following fields.
[in]duration.
[in]idId of timer event. (out, can be null).

References CalculateEventTime(), CreateTimerEvent(), TIMEREVENT::eventTime, and FreeTimerEvent().

Referenced by ScheduleGenaAutoRenew(), SearchByTarget(), ssdp_handle_device_request(), and UpnpSendAdvertisementLowPower().

◆ TimerThreadShutdown()

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.

Returns
0 if succesfull, nonzero otherwise. Always returns 0.
Parameters
[in]timerValid timer thread pointer.

References FreeTimerEvent().

Referenced by UpnpFinish().