libUPnP  1.8.1
Data Structures | Macros | Typedefs | Enumerations | Functions
TimerThread.h File Reference
#include "FreeList.h"
#include "ithread.h"
#include "LinkedList.h"
#include "ThreadPool.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. More...
 
int TimerThreadSchedule (TimerThread *timer, time_t time, TimeoutType type, ThreadPoolJob *job, Duration duration, int *id)
 Schedules an event to run at a specified time. More...
 
int TimerThreadRemove (TimerThread *timer, int id, ThreadPoolJob *out)
 Removes an event from the timer Q. More...
 
int TimerThreadShutdown (TimerThread *timer)
 Shutdown the timer thread. More...
 

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.

◆ 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.

Referenced by free_client_subscription().

◆ 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).

◆ 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.