⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sip_event.h

📁 基于sip协议的网络电话源码
💻 H
字号:
/* $Id: sip_event.h 974 2007-02-19 01:13:53Z bennylp $ *//*  * Copyright (C) 2003-2007 Benny Prijono <benny@prijono.org> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA  */#ifndef __PJSIP_SIP_EVENT_H__#define __PJSIP_SIP_EVENT_H__/** * @file sip_event.h * @brief SIP Event */PJ_BEGIN_DECL/** * @defgroup PJSIP_EVENT Event * @ingroup PJSIP_CORE_CORE * @brief Representation of events as they are distributed among modules. * @{ */#include <pj/types.h>/**  * Event IDs. */typedef enum pjsip_event_id_e{    /** Unidentified event. */    PJSIP_EVENT_UNKNOWN,    /** Timer event, normally only used internally in transaction. */    PJSIP_EVENT_TIMER,    /** Message transmission event. */    PJSIP_EVENT_TX_MSG,    /** Message received event. */    PJSIP_EVENT_RX_MSG,    /** Transport error event. */    PJSIP_EVENT_TRANSPORT_ERROR,    /** Transaction state changed event. */    PJSIP_EVENT_TSX_STATE,    /** Indicates that the event was triggered by user action. */    PJSIP_EVENT_USER} pjsip_event_id_e;/** * This structure describe event descriptor to fully identify a SIP event. * * Events are the only way for a lower layer object to inform something * to higher layer objects. Normally this is achieved by means of callback, * i.e. the higher layer objects register a callback to handle the event on * the lower layer objects. * * This event descriptor is used for example by transactions, to inform * endpoint about events, and by transports, to inform endpoint about * unexpected transport error. */struct pjsip_event{    /** This is necessary so that we can put events as a list. */    PJ_DECL_LIST_MEMBER(struct pjsip_event);    /** The event type, can be any value of \b pjsip_event_id_e.     */    pjsip_event_id_e type;    /**     * The event body as union, which fields depends on the event type.     * By convention, the first member of each struct in the union must be     * the pointer which is relevant to the event.     */    union    {        /** Timer event. */        struct        {            pj_timer_entry *entry;      /**< The timer entry.           */        } timer;        /** Transaction state has changed event. */        struct        {            union            {                pjsip_rx_data   *rdata; /**< The incoming message.      */                pjsip_tx_data   *tdata; /**< The outgoing message.      */                pj_timer_entry  *timer; /**< The timer.                 */                pj_status_t      status;/**< Transport error status.    */                void            *data;  /**< Generic data.              */            } src;            pjsip_transaction   *tsx;   /**< The transaction.           */	    int			 prev_state; /**< Previous state.	*/            pjsip_event_id_e     type;  /**< Type of event source:                                               *      - PJSIP_EVENT_TX_MSG                                         *      - PJSIP_EVENT_RX_MSG,                                         *      - PJSIP_EVENT_TRANSPORT_ERROR                                         *      - PJSIP_EVENT_TIMER                                         *      - PJSIP_EVENT_USER                                         */        } tsx_state;        /** Message transmission event. */        struct        {            pjsip_tx_data       *tdata; /**< The transmit data buffer.  */        } tx_msg;        /** Transmission error event. */        struct        {            pjsip_tx_data       *tdata; /**< The transmit data.         */            pjsip_transaction   *tsx;   /**< The transaction.           */        } tx_error;        /** Message arrival event. */        struct        {            pjsip_rx_data       *rdata; /**< The receive data buffer.   */        } rx_msg;        /** User event. */        struct        {            void                *user1; /**< User data 1.               */            void                *user2; /**< User data 2.               */            void                *user3; /**< User data 3.               */            void                *user4; /**< User data 4.               */        } user;    } body;};/** * Init timer event. */#define PJSIP_EVENT_INIT_TIMER(event,pentry)            \        do { \            (event).type = PJSIP_EVENT_TIMER;           \            (event).body.timer.entry = pentry;          \        } while (0)/** * Init tsx state event. */#define PJSIP_EVENT_INIT_TSX_STATE(event,ptsx,ptype,pdata,prev)   \        do { \            (event).type = PJSIP_EVENT_TSX_STATE;           \            (event).body.tsx_state.tsx = ptsx;		    \            (event).body.tsx_state.type = ptype;            \            (event).body.tsx_state.src.data = pdata;        \	    (event).body.tsx_state.prev_state = prev;	    \        } while (0)/** * Init tx msg event. */#define PJSIP_EVENT_INIT_TX_MSG(event,ptdata)	\        do { \            (event).type = PJSIP_EVENT_TX_MSG;          \            (event).body.tx_msg.tdata = ptdata;		\        } while (0)/** * Init rx msg event. */#define PJSIP_EVENT_INIT_RX_MSG(event,prdata)	\        do { \            (event).type = PJSIP_EVENT_RX_MSG;		\            (event).body.rx_msg.rdata = prdata;		\        } while (0)/** * Init transport error event. */#define PJSIP_EVENT_INIT_TRANSPORT_ERROR(event,ptsx,ptdata)   \        do { \            (event).type = PJSIP_EVENT_TRANSPORT_ERROR; \            (event).body.tx_error.tsx = ptsx;		\            (event).body.tx_error.tdata = ptdata;	\        } while (0)/** * Init user event. */#define PJSIP_EVENT_INIT_USER(event,u1,u2,u3,u4)    \        do { \            (event).type = PJSIP_EVENT_USER;        \            (event).body.user.user1 = (void*)u1;     \            (event).body.user.user2 = (void*)u2;     \            (event).body.user.user3 = (void*)u3;     \            (event).body.user.user4 = (void*)u4;     \        } while (0)/** * Get the event string from the event ID. * @param e the event ID. * @note defined in sip_util.c */PJ_DEF(const char *) pjsip_event_str(pjsip_event_id_e e);/** * @} */PJ_END_DECL#endif	/* __PJSIP_SIP_EVENT_H__ */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -