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

📄 exosip2.h

📁 mediastreamer2是开源的网络传输媒体流的库
💻 H
📖 第 1 页 / 共 2 页
字号:
/*  eXosip - This is the eXtended osip library.  Copyright (C) 2002,2003,2004,2005,2006,2007  Aymeric MOIZARD  - jack@atosc.org    eXosip 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.    eXosip 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*/#ifdef ENABLE_MPATROL#include <mpatrol.h>#endif#ifndef __EXOSIP2_H__#define __EXOSIP2_H__#include <stdio.h>#ifndef _WIN32_WCE#include <errno.h>#endif#ifdef _WIN32_WCE#include <stdio.h>#include <stdlib.h>#include <winsock2.h>#include <osipparser2/osip_port.h>#include <ws2tcpip.h>#define close(s) closesocket(s)#elif WIN32#include <stdio.h>#include <stdlib.h>#include <winsock2.h>#include <ws2tcpip.h>#define close(s) closesocket(s)#else#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>#include <netdb.h>#endif#include <stdio.h>#include <osip2/osip.h>#include <osip2/osip_dialog.h>#include <eXosip2/eXosip.h>#include "eXtransport.h"#include "jpipe.h"#ifndef JD_EMPTY#define JD_EMPTY          0#define JD_INITIALIZED    1#define JD_TRYING         2#define JD_QUEUED         3#define JD_RINGING        4#define JD_ESTABLISHED    5#define JD_REDIRECTED     6#define JD_AUTH_REQUIRED  7#define JD_CLIENTERROR    8#define JD_SERVERERROR    9#define JD_GLOBALFAILURE  10#define JD_TERMINATED     11#define JD_MAX            11#endif#define EXOSIP_VERSION	"3.2.0"#ifdef __cplusplusextern "C"{#endif#if defined(__arc__)#define USE_GETHOSTBYNAME#endif#if defined(USE_GETHOSTBYNAME)#define NI_MAXHOST      1025#define NI_MAXSERV      32#define NI_NUMERICHOST  1#define PF_INET6        AF_INET6  struct sockaddr_storage  {    unsigned char sa_len;    unsigned char sa_family;    /* Address family AF_XXX */    char sa_data[14];           /* Protocol specific address */  };  struct addrinfo  {    int ai_flags;               /* Input flags.  */    int ai_family;              /* Protocol family for socket.  */    int ai_socktype;            /* Socket type.  */    int ai_protocol;            /* Protocol for socket.  */    socklen_t ai_addrlen;       /* Length of socket address.  */    struct sockaddr *ai_addr;   /* Socket address for socket.  */    char *ai_canonname;         /* Canonical name for service location.  */    struct addrinfo *ai_next;   /* Pointer to next in list.  */  };  void eXosip_freeaddrinfo (struct addrinfo *ai);#else#define eXosip_freeaddrinfo freeaddrinfo#endif  void eXosip_update (void);#ifdef OSIP_MT  void __eXosip_wakeup (void);#else#define __eXosip_wakeup()  ;#endif  struct __eXosip_sockaddr  {    u_char ss_len;    u_char ss_family;    u_char padding[128 - 2];  };  typedef struct eXosip_dialog_t eXosip_dialog_t;  struct eXosip_dialog_t  {    int d_id;    int d_STATE;    osip_dialog_t *d_dialog;    /* active dialog */    time_t d_timer;    int d_count;    osip_message_t *d_200Ok;    osip_message_t *d_ack;    osip_list_t *d_inc_trs;    osip_list_t *d_out_trs;    int d_retry;                /* avoid too many unsuccessfull retry */    int d_mincseq;              /* remember cseq after PRACK and UPDATE during setup */    eXosip_dialog_t *next;    eXosip_dialog_t *parent;  };#ifndef MINISIZE  typedef struct eXosip_subscribe_t eXosip_subscribe_t;  struct eXosip_subscribe_t  {    int s_id;    int s_ss_status;    int s_ss_reason;    int s_reg_period;    eXosip_dialog_t *s_dialogs;    int s_retry;                /* avoid too many unsuccessfull retry */    osip_transaction_t *s_inc_tr;    osip_transaction_t *s_out_tr;    eXosip_subscribe_t *next;    eXosip_subscribe_t *parent;  };  typedef struct eXosip_notify_t eXosip_notify_t;  struct eXosip_notify_t  {    int n_id;    int n_online_status;    int n_ss_status;    int n_ss_reason;    time_t n_ss_expires;    eXosip_dialog_t *n_dialogs;    osip_transaction_t *n_inc_tr;    osip_transaction_t *n_out_tr;    eXosip_notify_t *next;    eXosip_notify_t *parent;  };#endif  typedef struct eXosip_call_t eXosip_call_t;  struct eXosip_call_t  {    int c_id;    eXosip_dialog_t *c_dialogs;    osip_transaction_t *c_inc_tr;    osip_transaction_t *c_out_tr;    int c_retry;                /* avoid too many unsuccessfull retry */    void *external_reference;    eXosip_call_t *next;    eXosip_call_t *parent;  };  typedef struct eXosip_reg_t eXosip_reg_t;  struct eXosip_reg_t  {    int r_id;    int r_reg_period;           /* delay between registration */    char *r_aor;                /* sip identity */    char *r_registrar;          /* registrar */    char *r_contact;            /* list of contacts string */    char r_line[16];            /* line identifier */    osip_transaction_t *r_last_tr;    int r_retry;                /* avoid too many unsuccessfull retry */    struct __eXosip_sockaddr addr;    int len;    eXosip_reg_t *next;    eXosip_reg_t *parent;  };#ifndef MINISIZE  typedef struct eXosip_pub_t eXosip_pub_t;  struct eXosip_pub_t  {    int p_id;    int p_period;               /* delay between registration */    char p_aor[256];            /* sip identity */    char p_sip_etag[64];        /* sip_etag from 200ok */    osip_transaction_t *p_last_tr;    int p_retry;    eXosip_pub_t *next;    eXosip_pub_t *parent;  };  int _eXosip_pub_update (eXosip_pub_t ** pub, osip_transaction_t * tr,                          osip_message_t * answer);  int _eXosip_pub_find_by_aor (eXosip_pub_t ** pub, const char *aor);  int _eXosip_pub_find_by_tid (eXosip_pub_t ** pjp, int tid);  int _eXosip_pub_init (eXosip_pub_t ** pub, const char *aor, const char *exp);  void _eXosip_pub_free (eXosip_pub_t * pub);#endif  typedef struct jauthinfo_t jauthinfo_t;  struct jauthinfo_t  {    char username[50];    char userid[50];    char passwd[50];    char ha1[50];    char realm[50];    jauthinfo_t *parent;    jauthinfo_t *next;  };  int    __eXosip_create_authorization_header (osip_www_authenticate_t * wa,                                          const char *rquri,                                          const char *username,                                          const char *passwd,                                          const char *ha1,                                          osip_authorization_t ** auth,                                          const char *method,                                          const char *pszCNonce, int iNonceCount);  int __eXosip_create_proxy_authorization_header (osip_proxy_authenticate_t * wa,                                                  const char *rquri,                                                  const char *username,                                                  const char *passwd,                                                  const char *ha1,                                                  osip_proxy_authorization_t                                                  ** auth, const char *method,                                                  const char *pszCNonce,                                                  int iNonceCount);  int _eXosip_store_nonce (const char *call_id, osip_proxy_authenticate_t * wa,                           int answer_code);  int _eXosip_delete_nonce (const char *call_id);  eXosip_event_t *eXosip_event_init_for_call (int type, eXosip_call_t * jc,                                              eXosip_dialog_t * jd,                                              osip_transaction_t * tr);#ifndef MINISIZE  eXosip_event_t *eXosip_event_init_for_subscribe (int type,                                                   eXosip_subscribe_t * js,                                                   eXosip_dialog_t * jd,                                                   osip_transaction_t * tr);  eXosip_event_t *eXosip_event_init_for_notify (int type,                                                eXosip_notify_t * jn,                                                eXosip_dialog_t * jd,                                                osip_transaction_t * tr);#endif  eXosip_event_t *eXosip_event_init_for_reg (int type, eXosip_reg_t * jr,                                             osip_transaction_t * tr);  eXosip_event_t *eXosip_event_init_for_message (int type,                                                 osip_transaction_t * tr);  int eXosip_event_init (eXosip_event_t ** je, int type);  void report_call_event (int evt, eXosip_call_t * jc, eXosip_dialog_t * jd,                          osip_transaction_t * tr);  void report_event (eXosip_event_t * je, osip_message_t * sip);  int eXosip_event_add (eXosip_event_t * je);  eXosip_event_t *eXosip_event_wait (int tv_s, int tv_ms);  eXosip_event_t *eXosip_event_get (void);  typedef void (*eXosip_callback_t) (int type, eXosip_event_t *);  char *strdup_printf (const char *fmt, ...);#define eXosip_trace(loglevel,args)  do        \{                       \

⌨️ 快捷键说明

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