Go to the documentation of this file.
48 #define INVALID_EVENT_ID (-10 & 1<<29)
69 ithread_mutex_t mutex;
70 ithread_cond_t condition;
Definition: TimerThread.h:84
A thread pool similar to the thread pool in the UPnP SDK.
Definition: ThreadPool.h:213
long size
Definition: LinkedList.h:90
void * ListDelNode(LinkedList *list, ListNode *dnode, int freeItem)
Removes a node from the list. The memory for the node is freed.
Definition: LinkedList.c:177
int FreeListDestroy(FreeList *free_list)
Releases the resources stored with the free list.
Definition: FreeList.c:92
struct TIMEREVENT TimerEvent
static TimerEvent * CreateTimerEvent(TimerThread *timer, ThreadPoolJob *job, Duration persistent, time_t eventTime, int id)
Creates a Timer Event. (Dynamically allocated).
Definition: TimerThread.c:160
static int CalculateEventTime(time_t *timeout, TimeoutType type)
Calculates the appropriate timeout in absolute seconds since Jan 1, 1970.
Definition: TimerThread.c:133
timeoutType
Definition: TimerThread.h:51
time_t eventTime
Definition: TimerThread.h:87
static void FreeTimerEvent(TimerThread *timer, TimerEvent *event)
Deallocates a dynamically allocated TimerEvent.
Definition: TimerThread.c:44
int TimerThreadShutdown(TimerThread *timer)
Shutdown the timer thread.
Definition: TimerThread.c:352
int TPJobSetPriority(ThreadPoolJob *job, ThreadPriority priority)
Sets the max threads for the thread pool attributes.
Definition: ThreadPool.c:1083
static void TimerThreadWorker(void *arg)
Implements timer thread.
Definition: TimerThread.c:60
int TimerThreadSchedule(TimerThread *timer, time_t timeout, TimeoutType type, ThreadPoolJob *job, Duration duration, int *id)
Schedules an event to run at a specified time.
Definition: TimerThread.c:245
int TimerThreadShutdown(TimerThread *timer)
Shutdown the timer thread.
Definition: TimerThread.c:352
int TimerThreadRemove(TimerThread *timer, int id, ThreadPoolJob *out)
Removes an event from the timer Q.
Definition: TimerThread.c:314
Definition: TimerThread.h:68
ListNode * ListNext(LinkedList *list, ListNode *node)
Returns the next item in the list.
Definition: LinkedList.c:245
void * FreeListAlloc(FreeList *free_list)
Allocates chunk of set size.
Definition: FreeList.c:51
Definition: LinkedList.h:61
ListNode * ListHead(LinkedList *list)
Returns the head of the list.
Definition: LinkedList.c:219
ListNode * ListAddTail(LinkedList *list, void *item)
Adds a node to the tail of the list. Node gets added immediately before list.tail.
Definition: LinkedList.c:119
Definition: ThreadPool.h:164
int ListInit(LinkedList *list, cmp_routine cmp_func, free_function free_func)
Initializes LinkedList. Must be called first and only once for List.
Definition: LinkedList.c:84
enum timeoutType TimeoutType
int ListDestroy(LinkedList *list, int freeItem)
Removes all memory associated with list nodes. Does not free LinkedList *list.
Definition: LinkedList.c:200
int TPJobInit(ThreadPoolJob *job, start_routine func, void *arg)
Initializes thread pool job. Sets the priority to default defined in ThreadPool.h....
Definition: ThreadPool.c:1071
int TimerThreadInit(TimerThread *timer, ThreadPool *tp)
Initializes and starts timer thread.
Definition: TimerThread.c:189
int ThreadPoolAddPersistent(ThreadPool *tp, ThreadPoolJob *job, int *jobId)
Adds a persistent job to the thread pool.
Definition: ThreadPool.c:768
int TimerThreadRemove(TimerThread *timer, int id, ThreadPoolJob *out)
Removes an event from the timer Q.
Definition: TimerThread.c:314
Definition: FreeList.h:62
Definition: LinkedList.h:84
Duration persistent
Definition: TimerThread.h:89
int FreeListInit(FreeList *free_list, size_t elementSize, int maxFreeListLength)
Initializes Free List.
Definition: FreeList.c:37
@ ABS_SEC
Definition: TimerThread.h:53
int ThreadPoolAdd(ThreadPool *tp, ThreadPoolJob *job, int *jobId)
Adds a job to the thread pool. Job will be run as soon as possible.
Definition: ThreadPool.c:816
int FreeListFree(FreeList *free_list, void *element)
Returns an item to the Free List.
Definition: FreeList.c:71
ListNode * ListAddBefore(LinkedList *list, void *item, ListNode *anode)
Adds a node before the specified node. Node gets added immediately before anode.
Definition: LinkedList.c:153
int TimerThreadInit(TimerThread *timer, ThreadPool *tp)
Initializes and starts timer thread.
Definition: TimerThread.c:189
@ REL_SEC
Definition: TimerThread.h:55
struct TIMERTHREAD TimerThread
int TimerThreadSchedule(TimerThread *timer, time_t time, TimeoutType type, ThreadPoolJob *job, Duration duration, int *id)
Schedules an event to run at a specified time.
Definition: TimerThread.c:245