summaryrefslogtreecommitdiff
path: root/addons/ooh323c/src/ooTimer.h
diff options
context:
space:
mode:
authorRussell Bryant <russell@russellbryant.com>2009-06-30 16:40:38 +0000
committerRussell Bryant <russell@russellbryant.com>2009-06-30 16:40:38 +0000
commitc511a2674906fd93470f0a9b77340041771466e1 (patch)
treed3d6aa7ea86d11ecaa6e88efbc46a5dde1c63ea5 /addons/ooh323c/src/ooTimer.h
parent62d3f1dfd9632f18c4f7c12e44af30f4cc08c292 (diff)
Move Asterisk-addons modules into the main Asterisk source tree.
Someone asked yesterday, "is there a good reason why we can't just put these modules in Asterisk?". After a brief discussion, as long as the modules are clearly set aside in their own directory and not enabled by default, it is perfectly fine. For more information about why a module goes in addons, see README-addons.txt. chan_ooh323 does not currently compile as it is behind some trunk API updates. However, it will not build by default, so it should be okay for now. git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@204413 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'addons/ooh323c/src/ooTimer.h')
-rw-r--r--addons/ooh323c/src/ooTimer.h128
1 files changed, 128 insertions, 0 deletions
diff --git a/addons/ooh323c/src/ooTimer.h b/addons/ooh323c/src/ooTimer.h
new file mode 100644
index 000000000..2283ba4d9
--- /dev/null
+++ b/addons/ooh323c/src/ooTimer.h
@@ -0,0 +1,128 @@
+/*
+ * Copyright (C) 2004-2005 by Objective Systems, Inc.
+ *
+ * This software is furnished under an open source license and may be
+ * used and copied only in accordance with the terms of this license.
+ * The text of the license may generally be found in the root
+ * directory of this installation in the LICENSE.txt file. It
+ * can also be viewed online at the following URL:
+ *
+ * http://www.obj-sys.com/open/license.html
+ *
+ * Any redistributions of this file including modified versions must
+ * maintain this copyright notice.
+ *
+ *****************************************************************************/
+/**
+ * @file ooTimer.h
+ * Timer structures and functions.
+ */
+#ifndef _OOTIMER_H_
+#define _OOTIMER_H_
+
+#include "ooasn1.h"
+#include "ooSocket.h" /* needed for timeval */
+
+struct _OOTimer;
+
+typedef int (*OOTimerCbFunc)(void *data);
+
+typedef struct _OOTimer {
+ struct timeval expireTime, timeout;
+ void* cbData;
+ OOBOOL reRegister;
+
+ /* Callback functions */
+ OOTimerCbFunc timeoutCB;
+} OOTimer;
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * This function computes the relative expiration time from the current
+ * time for the given timer object.
+ *
+ * @param pTimer Pointer to timer object.
+ */
+EXTERN void ooTimerComputeExpireTime (OOTimer* pTimer);
+
+/**
+ * This function creates and initializes a new timer object.
+ * @param pctxt OOCTXT structure used for timer memory allocation.
+ * @param pList Pointer to timer list in which newly created timer will
+ * be inserted.
+ * @param cb Timer callback function.
+ * @param deltaSecs Time in seconds to timer expiration.
+ * @param data Callback user data argument.
+ * @param reRegister Should timer be re-registered after it expires?
+ * @return Pointer to created timer object.
+ */
+EXTERN OOTimer* ooTimerCreate
+(OOCTXT* pctxt, DList *pList, OOTimerCbFunc cb, OOUINT32 deltaSecs, void *data,
+ OOBOOL reRegister);
+
+/**
+ * This function deletes the given timer object.
+ * @param pctxt Handle to OOCTXT structure used for timer memory.
+ * @param pList timer list to operate on
+ * @param pTimer Pointer to timer object.
+ */
+EXTERN void ooTimerDelete (OOCTXT* pctxt, DList* pList, OOTimer* pTimer);
+
+/**
+ * This function checks a timer to determine if it is expired.
+ *
+ * @param pTimer Pointer to timer object.
+ * @return True if timer expired, false if not.
+ */
+EXTERN OOBOOL ooTimerExpired (OOTimer* pTimer);
+
+/**
+ * This function loops through the global timer list and fires all
+ * expired timers by calling the registered callback functions.
+ */
+EXTERN void ooTimerFireExpired (OOCTXT* pctxt, DList* pList);
+
+/**
+ * This function inserts the given timer object into the correct
+ * chronological position in the global timer list.
+ * @param pctxt Pointer to OOCTXT structure used for memory allocation.
+ * @param pList List in which timer has to be inserted.
+ * @param pTimer Pointer to timer object.
+ * @return Index to position where inserted in list.
+ */
+EXTERN int ooTimerInsertEntry (OOCTXT* pctxt, DList* pList, OOTimer* pTimer);
+
+/**
+ * This function calculates the relative time from the current time
+ * that the first timer in global timer list will expire.
+ * @param pList Handle to timer list
+ * @param ptimeout timeval structure to receive timeout value.
+ * @return ptimeout
+ */
+EXTERN struct timeval* ooTimerNextTimeout (DList* pList, struct timeval* ptimeout);
+
+/**
+ * This function resets the given timer object if its reregister flag
+ * is set. Otherwise, it is deleted.
+ * @param pctxt Pointer to OOCTXT structre used for memory allocation.
+ * @param pList Pointer to timer list.
+ * @param pTimer Pointer to timer object.
+ */
+EXTERN void ooTimerReset (OOCTXT* pctxt, DList* pList, OOTimer* pTimer);
+
+
+/**
+ * This function is used to compare two timeout values.
+ * @param to1 First timeout value.
+ * @param to2 Second timeout value.
+ *
+ * @return 1, if to1 > to2; 0, if to1 == to2; -1, if to1 < to2
+ */
+int ooCompareTimeouts(struct timeval *to1, struct timeval *to2);
+#ifdef __cplusplus
+}
+#endif
+#endif