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

enum 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] | 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.

## 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] | timer | Valid timer thread pointer.
  [in] | id | Id of event to remove.
  [in] | out | Space 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] | timer | Valid timer thread pointer.
  [in] | time | 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).

## 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] | timer | Valid timer thread pointer.