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 enum ast_event_type {
00029    /*! Reserved to provide the ability to subscribe to all events.  A specific
00030     *  event should never have a payload of 0. */
00031    AST_EVENT_ALL                 = 0x00,
00032    /*! This event type is reserved for use by third-party modules to create
00033     *  custom events without having to modify this file.
00034     *  \note There are no "custom" IE types, because IEs only have to be
00035     *  unique to the event itself, not necessarily across all events. */
00036    AST_EVENT_CUSTOM              = 0x01,
00037    /*! Voicemail message waiting indication */
00038    AST_EVENT_MWI                 = 0x02,
00039    /*! Someone has subscribed to events */
00040    AST_EVENT_SUB                 = 0x03,
00041    /*! Someone has unsubscribed from events */
00042    AST_EVENT_UNSUB               = 0x04,
00043    /*! The aggregate state of a device across all servers configured to be
00044     *  a part of a device state cluster has changed. */
00045    AST_EVENT_DEVICE_STATE        = 0x05,
00046    /*! The state of a device has changed on _one_ server.  This should not be used
00047     *  directly, in general.  Use AST_EVENT_DEVICE_STATE instead. */
00048    AST_EVENT_DEVICE_STATE_CHANGE = 0x06,
00049    /*! Channel Event Logging events */
00050    AST_EVENT_CEL                 = 0x07,
00051    /*! A report of a security related event (see security_events.h) */
00052    AST_EVENT_SECURITY            = 0x08,
00053    /*! Used by res_stun_monitor to alert listeners to an exernal network address change. */
00054    AST_EVENT_NETWORK_CHANGE      = 0x09,
00055    /*! The presence state for a presence provider */
00056    AST_EVENT_PRESENCE_STATE      = 0x0a,
00057    /*! Used to alert listeners when a named ACL has changed. */
00058    AST_EVENT_ACL_CHANGE          = 0x0b,
00059    /*! Send out a ping for debugging distributed events */
00060    AST_EVENT_PING                = 0x0c,
00061    /*! Number of event types.  This should be the last event type + 1 */
00062    AST_EVENT_TOTAL               = 0x0d,
00063 };
00064 
00065 /*! \brief Event Information Element types */
00066 enum ast_event_ie_type {
00067    /*! Used to terminate the arguments to event functions */
00068    AST_EVENT_IE_END                 = -1,
00069 
00070    /*!
00071     * \brief Number of new messages
00072     * Used by: AST_EVENT_MWI
00073     * Payload type: UINT
00074     */
00075    AST_EVENT_IE_NEWMSGS             = 0x0001,
00076    /*!
00077     * \brief Number of
00078     * Used by: AST_EVENT_MWI
00079     * Payload type: UINT
00080     */
00081    AST_EVENT_IE_OLDMSGS             = 0x0002,
00082    /*!
00083     * \brief Mailbox name \verbatim (mailbox[@context]) \endverbatim
00084     * Used by: AST_EVENT_MWI 
00085     * Payload type: STR
00086     */
00087    AST_EVENT_IE_MAILBOX             = 0x0003,
00088    /*!
00089     * \brief Unique ID
00090     * Used by: AST_EVENT_SUB, AST_EVENT_UNSUB
00091     * Payload type: UINT
00092     */
00093    AST_EVENT_IE_UNIQUEID            = 0x0004,
00094    /*!
00095     * \brief Event type
00096     * Used by: AST_EVENT_SUB, AST_EVENT_UNSUB
00097     * Payload type: UINT
00098     */
00099    AST_EVENT_IE_EVENTTYPE           = 0x0005,
00100    /*!
00101     * \brief Hint that someone cares that an IE exists
00102     * Used by: AST_EVENT_SUB
00103     * Payload type: UINT (ast_event_ie_type)
00104     */
00105    AST_EVENT_IE_EXISTS              = 0x0006,
00106    /*!
00107     * \brief Device Name
00108     * Used by AST_EVENT_DEVICE_STATE_CHANGE
00109     * Payload type: STR
00110     */
00111    AST_EVENT_IE_DEVICE              = 0x0007,
00112    /*!
00113     * \brief Generic State IE
00114     * Used by AST_EVENT_DEVICE_STATE_CHANGE
00115     * Payload type: UINT
00116     * The actual state values depend on the event which
00117     * this IE is a part of.
00118     */
00119     AST_EVENT_IE_STATE              = 0x0008,
00120    /*!
00121     * \brief Context IE
00122     * Used by AST_EVENT_MWI
00123     * Payload type: str
00124     */
00125     AST_EVENT_IE_CONTEXT            = 0x0009,
00126    /*!
00127     * \brief Channel Event Type
00128     * Used by: AST_EVENT_CEL
00129     * Payload type: UINT
00130     */
00131    AST_EVENT_IE_CEL_EVENT_TYPE      = 0x000a,
00132    /*!
00133     * \brief Channel Event Time (seconds)
00134     * Used by: AST_EVENT_CEL
00135     * Payload type: UINT
00136     */
00137    AST_EVENT_IE_CEL_EVENT_TIME      = 0x000b,
00138    /*!
00139     * \brief Channel Event Time (micro-seconds)
00140     * Used by: AST_EVENT_CEL
00141     * Payload type: UINT
00142     */
00143    AST_EVENT_IE_CEL_EVENT_TIME_USEC = 0x000c,
00144    /*!
00145     * \brief Channel Event User Event Name
00146     * Used by: AST_EVENT_CEL
00147     * Payload type: STR
00148     */
00149    AST_EVENT_IE_CEL_USEREVENT_NAME  = 0x000d,
00150    /*!
00151     * \brief Channel Event CID name
00152     * Used by: AST_EVENT_CEL
00153     * Payload type: STR
00154     */
00155    AST_EVENT_IE_CEL_CIDNAME         = 0x000e,
00156    /*!
00157     * \brief Channel Event CID num
00158     * Used by: AST_EVENT_CEL
00159     * Payload type: STR
00160     */
00161    AST_EVENT_IE_CEL_CIDNUM          = 0x000f,
00162    /*!
00163     * \brief Channel Event extension name
00164     * Used by: AST_EVENT_CEL
00165     * Payload type: STR
00166     */
00167    AST_EVENT_IE_CEL_EXTEN           = 0x0010,
00168    /*!
00169     * \brief Channel Event context name
00170     * Used by: AST_EVENT_CEL
00171     * Payload type: STR
00172     */
00173    AST_EVENT_IE_CEL_CONTEXT         = 0x0011,
00174    /*!
00175     * \brief Channel Event channel name
00176     * Used by: AST_EVENT_CEL
00177     * Payload type: STR
00178     */
00179    AST_EVENT_IE_CEL_CHANNAME        = 0x0012,
00180    /*!
00181     * \brief Channel Event app name
00182     * Used by: AST_EVENT_CEL
00183     * Payload type: STR
00184     */
00185    AST_EVENT_IE_CEL_APPNAME         = 0x0013,
00186    /*!
00187     * \brief Channel Event app args/data
00188     * Used by: AST_EVENT_CEL
00189     * Payload type: STR
00190     */
00191    AST_EVENT_IE_CEL_APPDATA         = 0x0014,
00192    /*!
00193     * \brief Channel Event AMA flags
00194     * Used by: AST_EVENT_CEL
00195     * Payload type: UINT
00196     */
00197    AST_EVENT_IE_CEL_AMAFLAGS        = 0x0015,
00198    /*!
00199     * \brief Channel Event AccountCode
00200     * Used by: AST_EVENT_CEL
00201     * Payload type: STR
00202     */
00203    AST_EVENT_IE_CEL_ACCTCODE        = 0x0016,
00204    /*!
00205     * \brief Channel Event UniqueID
00206     * Used by: AST_EVENT_CEL
00207     * Payload type: STR
00208     */
00209    AST_EVENT_IE_CEL_UNIQUEID        = 0x0017,
00210    /*!
00211     * \brief Channel Event Userfield
00212     * Used by: AST_EVENT_CEL
00213     * Payload type: STR
00214     */
00215    AST_EVENT_IE_CEL_USERFIELD       = 0x0018,
00216    /*!
00217     * \brief Channel Event CID ANI field
00218     * Used by: AST_EVENT_CEL
00219     * Payload type: STR
00220     */
00221    AST_EVENT_IE_CEL_CIDANI          = 0x0019,
00222    /*!
00223     * \brief Channel Event CID RDNIS field
00224     * Used by: AST_EVENT_CEL
00225     * Payload type: STR
00226     */
00227    AST_EVENT_IE_CEL_CIDRDNIS        = 0x001a,
00228    /*!
00229     * \brief Channel Event CID dnid
00230     * Used by: AST_EVENT_CEL
00231     * Payload type: STR
00232     */
00233    AST_EVENT_IE_CEL_CIDDNID         = 0x001b,
00234    /*!
00235     * \brief Channel Event Peer -- for Things involving multiple channels, like BRIDGE
00236     * Used by: AST_EVENT_CEL
00237     * Payload type: STR
00238     */
00239    AST_EVENT_IE_CEL_PEER            = 0x001c,
00240    /*!
00241     * \brief Channel Event LinkedID
00242     * Used by: AST_EVENT_CEL
00243     * Payload type: STR
00244     */
00245    AST_EVENT_IE_CEL_LINKEDID        = 0x001d,
00246    /*!
00247     * \brief Channel Event peeraccount
00248     * Used by: AST_EVENT_CEL
00249     * Payload type: STR
00250     */
00251    AST_EVENT_IE_CEL_PEERACCT        = 0x001e,
00252    /*!
00253     * \brief Channel Event extra data
00254     * Used by: AST_EVENT_CEL
00255     * Payload type: STR
00256     */
00257    AST_EVENT_IE_CEL_EXTRA           = 0x001f,
00258    /*!
00259     * \brief Description
00260     * Used by: AST_EVENT_SUB, AST_EVENT_UNSUB
00261     * Payload type: STR
00262     */
00263    AST_EVENT_IE_DESCRIPTION         = 0x0020,
00264    /*!
00265     * \brief Entity ID
00266     * Used by All events
00267     * Payload type: RAW
00268     * This IE indicates which server the event originated from
00269     */
00270    AST_EVENT_IE_EID                 = 0x0021,
00271    AST_EVENT_IE_SECURITY_EVENT      = 0x0022,
00272    AST_EVENT_IE_EVENT_VERSION       = 0x0023,
00273    AST_EVENT_IE_SERVICE             = 0x0024,
00274    AST_EVENT_IE_MODULE              = 0x0025,
00275    AST_EVENT_IE_ACCOUNT_ID          = 0x0026,
00276    AST_EVENT_IE_SESSION_ID          = 0x0027,
00277    AST_EVENT_IE_SESSION_TV          = 0x0028,
00278    AST_EVENT_IE_ACL_NAME            = 0x0029,
00279    AST_EVENT_IE_LOCAL_ADDR          = 0x002a,
00280    AST_EVENT_IE_REMOTE_ADDR         = 0x002b,
00281    AST_EVENT_IE_EVENT_TV            = 0x002c,
00282    AST_EVENT_IE_REQUEST_TYPE        = 0x002d,
00283    AST_EVENT_IE_REQUEST_PARAMS      = 0x002e,
00284    AST_EVENT_IE_AUTH_METHOD         = 0x002f,
00285    AST_EVENT_IE_SEVERITY            = 0x0030,
00286    AST_EVENT_IE_EXPECTED_ADDR       = 0x0031,
00287    AST_EVENT_IE_CHALLENGE           = 0x0032,
00288    AST_EVENT_IE_RESPONSE            = 0x0033,
00289    AST_EVENT_IE_EXPECTED_RESPONSE   = 0x0034,
00290    AST_EVENT_IE_RECEIVED_CHALLENGE  = 0x0035,
00291    AST_EVENT_IE_RECEIVED_HASH       = 0x0036,
00292    AST_EVENT_IE_USING_PASSWORD      = 0x0037,
00293    AST_EVENT_IE_ATTEMPTED_TRANSPORT = 0x0038,
00294    AST_EVENT_IE_PRESENCE_PROVIDER   = 0x0039,
00295    AST_EVENT_IE_PRESENCE_STATE      = 0x003a,
00296    AST_EVENT_IE_PRESENCE_SUBTYPE    = 0x003b,
00297    AST_EVENT_IE_PRESENCE_MESSAGE    = 0x003c,
00298 
00299    /*!
00300     * \brief Event non-cachability flag
00301     * Used by: All events
00302     * Payload type: UINT
00303     */
00304    AST_EVENT_IE_CACHABLE            = 0x003d,
00305    /*! \brief Must be the last IE value +1 */
00306    AST_EVENT_IE_TOTAL               = 0x003e,
00307 };
00308 
00309 /*!
00310  * \brief Payload types for event information elements
00311  */
00312 enum ast_event_ie_pltype {
00313    AST_EVENT_IE_PLTYPE_UNKNOWN = -1,
00314    /*! Just check if it exists, not the value */
00315    AST_EVENT_IE_PLTYPE_EXISTS,
00316    /*! Unsigned Integer (Can be used for signed, too ...) */
00317    AST_EVENT_IE_PLTYPE_UINT,
00318    /*! String */
00319    AST_EVENT_IE_PLTYPE_STR,
00320    /*! Raw data, compared with memcmp */
00321    AST_EVENT_IE_PLTYPE_RAW,
00322    /*! Bit flags (unsigned integer, compared using boolean logic) */
00323    AST_EVENT_IE_PLTYPE_BITFLAGS,
00324 };
00325 
00326 /*!
00327  * \brief Results for checking for subscribers
00328  *
00329  * \ref ast_event_check_subscriber()
00330  */
00331 enum ast_event_subscriber_res {
00332    /*! No subscribers exist */
00333    AST_EVENT_SUB_NONE,
00334    /*! At least one subscriber exists */
00335    AST_EVENT_SUB_EXISTS,
00336 };
00337 
00338 struct ast_event;
00339 struct ast_event_ie;
00340 struct ast_event_iterator;
00341 
00342 /*!
00343  * \brief supposed to be an opaque type
00344  *
00345  * This is only here so that it can be declared on the stack.
00346  */
00347 struct ast_event_iterator {
00348    uint16_t event_len;
00349    const struct ast_event *event;
00350    struct ast_event_ie *ie;
00351 };
00352 
00353 #endif /* AST_EVENT_DEFS_H */

Generated on Thu Apr 16 06:27:33 2015 for Asterisk - The Open Source Telephony Project by  doxygen 1.5.6