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

📄 nua_dialog.h

📁 Sofia SIP is an open-source SIP User-Agent library, compliant with the IETF RFC3261 specification.
💻 H
📖 第 1 页 / 共 2 页
字号:
  sip_to_t const *ds_remote;		/**< Remote address */  nta_leg_t      *ds_leg;  sip_contact_t  *ds_ltarget;	        /**< Local target */  char const     *ds_remote_tag;	/**< Remote tag (if any). 					 * Should be non-NULL 					 * if dialog is established.					 */    struct nua_dialog_peer_info {    sip_allow_t      *nr_allow;    sip_accept_t     *nr_accept;    sip_require_t    *nr_require;    sip_supported_t  *nr_supported;    sip_user_agent_t *nr_user_agent;  } ds_remote_ua[1];};/* Virtual function pointer table for dialog usage. */typedef struct {  unsigned usage_size, usage_class_size;  int (*usage_add)(nua_owner_t *, 		   nua_dialog_state_t *ds,		   nua_dialog_usage_t *du);  void (*usage_remove)(nua_owner_t *, 		       nua_dialog_state_t *ds,		       nua_dialog_usage_t *du,		       nua_client_request_t *cr,		       nua_server_request_t *sr);  char const *(*usage_name)(nua_dialog_usage_t const *du);  void (*usage_update_params)(nua_dialog_usage_t const *du,			      nua_handle_preferences_t const *changed,			      nua_handle_preferences_t const *params,			      nua_handle_preferences_t const *defaults);  void (*usage_peer_info)(nua_dialog_usage_t *du,			  nua_dialog_state_t const *ds,			  sip_t const *sip);  void (*usage_refresh)(nua_owner_t *, nua_dialog_state_t *ds,			nua_dialog_usage_t *, sip_time_t now);  int (*usage_shutdown)(nua_owner_t *, nua_dialog_state_t *ds, 			nua_dialog_usage_t *);} nua_usage_class;/* Base structure for dialog usage. */struct nua_dialog_usage {  nua_dialog_usage_t *du_next;  nua_usage_class const *du_class;  nua_dialog_state_t *du_dialog;  nua_client_request_t *du_cr;	        /**< Client request bound with usage */  sip_time_t   du_refquested;	        /**< When refreshed was requested */  sip_time_t   du_refresh;		/**< When to refresh */  unsigned     du_ready:1;	        /**< Established usage */  unsigned     du_shutdown:1;	        /**< Shutdown in progress */  unsigned:0;  /** When usage expires.   * Non-zero if the usage is established, SIP_TIME_MAX if there no   * expiration time.   */  sip_event_t const *du_event;		/**< Event of usage */};void nua_dialog_uac_route(nua_owner_t *, nua_dialog_state_t *ds,			  sip_t const *sip, int rtag);void nua_dialog_uas_route(nua_owner_t *, nua_dialog_state_t *ds,			  sip_t const *sip, int rtag);void nua_dialog_store_peer_info(nua_owner_t *, nua_dialog_state_t *ds,				sip_t const *sip);int nua_dialog_zap(nua_owner_t *own,		   nua_dialog_state_t *ds);int nua_dialog_remove(nua_owner_t *own,		      nua_dialog_state_t *ds,		      nua_dialog_usage_t *usage);su_inline int nua_dialog_is_reporting(nua_dialog_state_t const *ds){  return ds && ds->ds_reporting;}char const *nua_dialog_usage_name(nua_dialog_usage_t const *du);nua_dialog_usage_t *nua_dialog_usage_add(nua_owner_t *, 					 struct nua_dialog_state *ds,					 nua_usage_class const *uclass,					 sip_event_t const *event);nua_dialog_usage_t *nua_dialog_usage_get(nua_dialog_state_t const *ds, 					 nua_usage_class const *uclass,					 sip_event_t const *event);void nua_dialog_usage_remove(nua_owner_t *, 			     nua_dialog_state_t *ds,			     nua_dialog_usage_t *du,			     nua_client_request_t *cr,			     nua_server_request_t *sr);void nua_dialog_update_params(nua_dialog_state_t *ds,			      nua_handle_preferences_t const *changed,			      nua_handle_preferences_t const *params,			      nua_handle_preferences_t const *defaults);void nua_base_usage_update_params(nua_dialog_usage_t const *du,				  nua_handle_preferences_t const *changed,				  nua_handle_preferences_t const *params,				  nua_handle_preferences_t const *defaults);void nua_dialog_deinit(nua_owner_t *own,		       nua_dialog_state_t *ds);int nua_dialog_shutdown(nua_owner_t *owner, nua_dialog_state_t *ds);int nua_dialog_repeat_shutdown(nua_owner_t *owner,			       nua_dialog_state_t *ds);void nua_dialog_usage_set_refresh(nua_dialog_usage_t *du, unsigned delta);void nua_dialog_usage_set_refresh_range(nua_dialog_usage_t *du, 					unsigned min, unsigned max);void nua_dialog_usage_set_refresh_at(nua_dialog_usage_t *du, 				     sip_time_t target);void nua_dialog_usage_reset_refresh(nua_dialog_usage_t *du);void nua_dialog_usage_refresh(nua_owner_t *owner,			      nua_dialog_state_t *ds,			      nua_dialog_usage_t *du, 			      sip_time_t now);int nua_dialog_usage_shutdown(nua_owner_t *owner,			      nua_dialog_state_t *ds,			      nua_dialog_usage_t *du);su_inlineint nua_dialog_is_established(nua_dialog_state_t const *ds){  return ds->ds_remote_tag != NULL;}#if 0su_inlinevoid *nua_dialog_usage_private(nua_dialog_usage_t const *du){  return du ? (void *)(du + 1) : NULL;}su_inlinenua_dialog_usage_t *nua_dialog_usage_public(void const *p){  return p ? (nua_dialog_usage_t *)p - 1 : NULL;}#else#define nua_dialog_usage_private(du) ((du) ? (void*)((du) + 1) : NULL)#define nua_dialog_usage_public(p) ((p) ? (nua_dialog_usage_t*)(p) - 1 : NULL)#endif#define NUA_DIALOG_USAGE_PRIVATE(du) ((void *)((du) + 1))#define NUA_DIALOG_USAGE_PUBLIC(pu) ((void *)((nua_dialog_usage_t *)(pu) - 1))/* ---------------------------------------------------------------------- */int nua_client_create(nua_owner_t *owner,		      int event,		      nua_client_methods_t const *methods,		      tagi_t const *tags);int nua_client_tcreate(nua_owner_t *nh, 		       int event,		       nua_client_methods_t const *methods,		       tag_type_t tag, tag_value_t value, ...);su_inline void *nua_private_client_request(nua_client_request_t const *cr){  return (void *)(cr + 1);}void nua_client_request_complete(nua_client_request_t *);void nua_client_request_destroy(nua_client_request_t *);int nua_client_request_queue(nua_client_request_t *cr);su_inline int nua_client_is_queued(nua_client_request_t const *cr){  return cr && cr->cr_prev;}nua_client_request_t *nua_client_request_remove(nua_client_request_t *cr);int nua_client_bind(nua_client_request_t *cr, nua_dialog_usage_t *du);su_inline int nua_client_is_bound(nua_client_request_t const *cr){  return cr && cr->cr_usage && cr->cr_usage->du_cr == cr;}su_inline int nua_client_is_reporting(nua_client_request_t const *cr){  return cr && cr->cr_reporting;}/** Mark client request as a terminating one */su_inline void nua_client_terminating(nua_client_request_t *cr){  cr->cr_terminating = 1;}int nua_client_init_request(nua_client_request_t *cr);msg_t *nua_client_request_template(nua_client_request_t *cr);int nua_client_restart_request(nua_client_request_t *cr,			       int terminating,			       tagi_t const *tags);int nua_client_resend_request(nua_client_request_t *cr,			      int terminating);int nua_base_client_request(nua_client_request_t *cr,			    msg_t *msg,			    sip_t *sip,			    tagi_t const *tags);int nua_base_client_trequest(nua_client_request_t *cr,			     msg_t *msg,			     sip_t *sip,			     tag_type_t tag, tag_value_t value, ...);extern nta_response_f nua_client_orq_response;int nua_client_return(nua_client_request_t *cr,		      int status,		      char const *phrase,		      msg_t *to_be_destroyed);int nua_client_response(nua_client_request_t *cr,			int status,			char const *phrase,			sip_t const *sip);int nua_client_check_restart(nua_client_request_t *cr,			     int status,			     char const *phrase,			     sip_t const *sip);int nua_base_client_check_restart(nua_client_request_t *cr,				  int status,				  char const *phrase,				  sip_t const *sip);int nua_client_restart(nua_client_request_t *cr,		       int status, char const *phrase);int nua_base_client_response(nua_client_request_t *cr,			     int status, char const *phrase,			     sip_t const *sip,			     tagi_t const *tags);int nua_base_client_tresponse(nua_client_request_t *cr,			      int status, char const *phrase,			      sip_t const *sip,			      tag_type_t tag, tag_value_t value, ...);int nua_client_set_target(nua_client_request_t *cr, url_t const *target);int nua_client_report(nua_client_request_t *cr,		      int status, char const *phrase,		      sip_t const *sip,		      nta_outgoing_t *orq,		      tagi_t const *tags);nua_client_request_t *nua_client_request_pending(nua_client_request_t const *);int nua_client_next_request(nua_client_request_t *cr, int invite);/* ---------------------------------------------------------------------- */extern nua_server_methods_t const  nua_extension_server_methods,  nua_invite_server_methods,	/**< INVITE */  nua_bye_server_methods,	/**< BYE */  nua_options_server_methods,	/**< OPTIONS */  nua_register_server_methods,	/**< REGISTER */  nua_info_server_methods,	/**< INFO */  nua_prack_server_methods,	/**< PRACK */  nua_update_server_methods,	/**< UPDATE */  nua_message_server_methods,	/**< MESSAGE */  nua_subscribe_server_methods, /**< SUBSCRIBE */  nua_notify_server_methods,	/**< NOTIFY */  nua_refer_server_methods,	/**< REFER */  nua_publish_server_methods;	/**< PUBLISH *//** Return true if we have not sent final response to request */ su_inline int nua_server_request_is_pending(nua_server_request_t const *sr){  return sr && sr->sr_response.msg;}su_inline int nua_server_request_status(nua_server_request_t const *sr){  return sr ? nta_incoming_status(sr->sr_irq) : 500;}void nua_server_request_destroy(nua_server_request_t *sr);int nua_base_server_init(nua_server_request_t *sr);#define nua_base_server_init NULLint nua_base_server_preprocess(nua_server_request_t *sr);#define nua_base_server_preprocess NULLint nua_server_params(nua_server_request_t *sr, tagi_t const *tags);int nua_base_server_params(nua_server_request_t *sr, tagi_t const *tags);#define nua_base_server_params NULLint nua_server_trespond(nua_server_request_t *sr,			tag_type_t tag, tag_value_t value, ...);int nua_server_respond(nua_server_request_t *sr, tagi_t const *tags);int nua_base_server_trespond(nua_server_request_t *sr,			     tag_type_t tag, tag_value_t value, ...);int nua_base_server_respond(nua_server_request_t *sr,			    tagi_t const *tags);int nua_server_report(nua_server_request_t *sr);int nua_base_server_treport(nua_server_request_t *sr, 			    tag_type_t tag, tag_value_t value, ...);int nua_base_server_report(nua_server_request_t *sr, tagi_t const *tags);/* ---------------------------------------------------------------------- */#endif /* NUA_DIALOG_H */

⌨️ 快捷键说明

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