Wed Aug 18 22:33:51 2010

Asterisk developer's documentation


event_defs.h

Go to the documentation of this file.
00001 /*
00002  * Asterisk -- An open source telephony toolkit.
00003  *
00004  * Copyright (C) 2007 - 2008, Digium, Inc.
00005  *
00006  * Russell Bryant <russell@digium.com>
00007  *
00008  * See http://www.asterisk.org for more information about
00009  * the Asterisk project. Please do not directly contact
00010  * any of the maintainers of this project for assistance;
00011  * the project provides a web site, mailing lists and IRC
00012  * channels for your use.
00013  *
00014  * This program is free software, distributed under the terms of
00015  * the GNU General Public License Version 2. See the LICENSE file
00016  * at the top of the source tree.
00017  */
00018 
00019 /*!
00020  * \file
00021  * \author Russell Bryant <russell@digium.com>
00022  * \brief Generic event system
00023  */
00024 
00025 #ifndef AST_EVENT_DEFS_H
00026 #define AST_EVENT_DEFS_H
00027 
00028 /*! \brief Event types
00029  * \note These values can *never* change. */
00030 enum ast_event_type {
00031    /*! Reserved to provide the ability to subscribe to all events.  A specific
00032     *  event should never have a payload of 0. */
00033    AST_EVENT_ALL                 = 0x00,
00034    /*! This event type is reserved for use by third-party modules to create
00035     *  custom events without having to modify this file. 
00036     *  \note There are no "custom" IE types, because IEs only have to be
00037     *  unique to the event itself, not necessarily across all events. */
00038    AST_EVENT_CUSTOM              = 0x01,
00039    /*! Voicemail message waiting indication */
00040    AST_EVENT_MWI                 = 0x02,
00041    /*! Someone has subscribed to events */
00042    AST_EVENT_SUB                 = 0x03,
00043    /*! Someone has unsubscribed from events */
00044    AST_EVENT_UNSUB               = 0x04,
00045    /*! The aggregate state of a device across all servers configured to be
00046     *  a part of a device state cluster has changed. */
00047    AST_EVENT_DEVICE_STATE        = 0x05,
00048    /*! The state of a device has changed on _one_ server.  This should not be used
00049     *  directly, in general.  Use AST_EVENT_DEVICE_STATE instead. */
00050    AST_EVENT_DEVICE_STATE_CHANGE = 0x06,
00051    /*! Number of event types.  This should be the last event type + 1 */
00052    AST_EVENT_TOTAL               = 0x07,
00053 };
00054 
00055 /*! \brief Event Information Element types */
00056 enum ast_event_ie_type {
00057    /*! Used to terminate the arguments to event functions */
00058    AST_EVENT_IE_END       = -1,
00059 
00060    /*! 
00061     * \brief Number of new messages
00062     * Used by: AST_EVENT_MWI 
00063     * Payload type: UINT
00064     */
00065    AST_EVENT_IE_NEWMSGS   = 0x01,
00066    /*! 
00067     * \brief Number of
00068     * Used by: AST_EVENT_MWI 
00069     * Payload type: UINT
00070     */
00071    AST_EVENT_IE_OLDMSGS   = 0x02,
00072    /*! 
00073     * \brief Mailbox name \verbatim (mailbox[@context]) \endverbatim
00074     * Used by: AST_EVENT_MWI 
00075     * Payload type: STR
00076     */
00077    AST_EVENT_IE_MAILBOX   = 0x03,
00078    /*! 
00079     * \brief Unique ID
00080     * Used by: AST_EVENT_SUB, AST_EVENT_UNSUB
00081     * Payload type: UINT
00082     */
00083    AST_EVENT_IE_UNIQUEID  = 0x04,
00084    /*! 
00085     * \brief Event type 
00086     * Used by: AST_EVENT_SUB, AST_EVENT_UNSUB
00087     * Payload type: UINT
00088     */
00089    AST_EVENT_IE_EVENTTYPE = 0x05,
00090    /*!
00091     * \brief Hint that someone cares that an IE exists
00092     * Used by: AST_EVENT_SUB
00093     * Payload type: UINT (ast_event_ie_type)
00094     */
00095    AST_EVENT_IE_EXISTS    = 0x06,
00096    /*!
00097     * \brief Device Name
00098     * Used by AST_EVENT_DEVICE_STATE_CHANGE
00099     * Payload type: STR
00100     */
00101    AST_EVENT_IE_DEVICE    = 0x07,
00102    /*!
00103     * \brief Generic State IE
00104     * Used by AST_EVENT_DEVICE_STATE_CHANGE
00105     * Payload type: UINT
00106     * The actual state values depend on the event which
00107     * this IE is a part of.
00108     */
00109     AST_EVENT_IE_STATE    = 0x08,
00110     /*!
00111      * \brief Context IE
00112      * Used by AST_EVENT_MWI
00113      * Payload type: str
00114      */
00115     AST_EVENT_IE_CONTEXT  = 0x09,
00116     /*!
00117      * \brief Entity ID
00118      * Used by All events
00119      * Payload type: RAW
00120      * This IE indicates which server the event originated from
00121      */
00122     AST_EVENT_IE_EID      = 0x0A,
00123 };
00124 
00125 #define AST_EVENT_IE_MAX AST_EVENT_IE_EID
00126 
00127 /*!
00128  * \brief Payload types for event information elements
00129  */
00130 enum ast_event_ie_pltype {
00131    AST_EVENT_IE_PLTYPE_UNKNOWN = -1,
00132    /*! Just check if it exists, not the value */
00133    AST_EVENT_IE_PLTYPE_EXISTS,
00134    /*! Unsigned Integer (Can be used for signed, too ...) */
00135    AST_EVENT_IE_PLTYPE_UINT,
00136    /*! String */
00137    AST_EVENT_IE_PLTYPE_STR,
00138    /*! Raw data, compared with memcmp */
00139    AST_EVENT_IE_PLTYPE_RAW,
00140 };
00141 
00142 /*!
00143  * \brief Results for checking for subscribers
00144  *
00145  * \ref ast_event_check_subscriber()
00146  */
00147 enum ast_event_subscriber_res {
00148    /*! No subscribers exist */
00149    AST_EVENT_SUB_NONE,
00150    /*! At least one subscriber exists */
00151    AST_EVENT_SUB_EXISTS,
00152 };
00153 
00154 struct ast_event;
00155 struct ast_event_ie;
00156 struct ast_event_sub;
00157 struct ast_event_iterator;
00158 
00159 /*!
00160  * \brief supposed to be an opaque type
00161  *
00162  * This is only here so that it can be declared on the stack.
00163  */
00164 struct ast_event_iterator {
00165    uint16_t event_len;
00166    const struct ast_event *event;
00167    struct ast_event_ie *ie;
00168 };
00169 
00170 #endif /* AST_EVENT_DEFS_H */

Generated on Wed Aug 18 22:33:51 2010 for Asterisk - the Open Source PBX by  doxygen 1.4.7