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

📄 sip_xaction.h

📁 VoIP use SIP protocol interface
💻 H
字号:
/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END *//* * Copyright 2006 Sun Microsystems, Inc.  All rights reserved. * Use is subject to license terms. */#ifndef	_SIP_XACTION_H#define	_SIP_XACTION_H#pragma ident	"@(#)sip_xaction.h	1.10	06/07/24 SMI"#ifdef	__cplusplusextern "C" {#endif#include <stdio.h>#include <stdlib.h>#include <string.h>#include "sip_miscdefs.h"#include "sip_msg.h"/* Various transaction timers */typedef enum sip_timer_type_s {	SIP_XACTION_TIMER_A = 0,	SIP_XACTION_TIMER_B,	SIP_XACTION_TIMER_D,	SIP_XACTION_TIMER_E,	SIP_XACTION_TIMER_F,	SIP_XACTION_TIMER_G,	SIP_XACTION_TIMER_H,	SIP_XACTION_TIMER_I,	SIP_XACTION_TIMER_J,	SIP_XACTION_TIMER_K} sip_xaction_timer_type_t;/* Increment transaction reference count */#define	SIP_XACTION_REFCNT_INCR(trans)	\	(trans)->sip_xaction_ref_cnt++;/* Decrement transaction reference count */#define	SIP_XACTION_REFCNT_DECR(trans)	{				\	(void) pthread_mutex_lock(&((trans)->sip_xaction_mutex));	\	assert((trans)->sip_xaction_ref_cnt > 0);			\	(trans)->sip_xaction_ref_cnt--;					\	if ((trans)->sip_xaction_ref_cnt == 0 && 			\	    SIP_IS_XACTION_TERMINATED((trans)->sip_xaction_state)) {	\		(void) pthread_mutex_unlock(&((trans)->sip_xaction_mutex));\		sip_xaction_delete(trans);				\	} else {							\		(void) pthread_mutex_unlock(&((trans)->sip_xaction_mutex));\	}								\}/* True if transaction is in the terminated state */#define	SIP_IS_XACTION_TERMINATED(trans_state)				\	((trans_state) == SIPS_CLNT_INV_TERMINATED ||			\	(trans_state) == SIPS_CLNT_NONINV_TERMINATED	||		\	(trans_state) == SIPS_SRV_INV_TERMINATED ||			\	(trans_state) == SIPS_SRV_NONINV_TERMINATED)/* Transaction structure */typedef struct sip_xaction {	char			*sip_xaction_branch_id;	/* Transaction id */	uint16_t		sip_xaction_hash_digest[8];	_sip_msg_t		*sip_xaction_orig_msg;	/* orig request msg. */	_sip_msg_t		*sip_xaction_last_msg;	/* last msg sent */	sip_conn_object_t	sip_xaction_conn_obj;	int			sip_xaction_state;  /* Transaction State */	sip_method_t		sip_xaction_method;	uint32_t		sip_xaction_ref_cnt;	pthread_mutex_t		sip_xaction_mutex;	sip_timer_t		sip_xaction_TA;	sip_timer_t		sip_xaction_TB;	sip_timer_t		sip_xaction_TD;	sip_timer_t		sip_xaction_TE;	sip_timer_t		sip_xaction_TF;	sip_timer_t		sip_xaction_TG;	sip_timer_t		sip_xaction_TH;	sip_timer_t		sip_xaction_TI;	sip_timer_t		sip_xaction_TJ;	sip_timer_t		sip_xaction_TK;	void			*sip_xaction_ctxt;	/* currently unused */} sip_xaction_t;extern void		sip_xaction_init(int (*ulp_trans_err)(sip_transaction_t,			    int, void *), void (*ulp_state_cb)			    (sip_transaction_t, sip_msg_t, int, int));extern int		sip_xaction_output(sip_conn_object_t, sip_xaction_t *,			    _sip_msg_t *);extern int		sip_xaction_input(sip_conn_object_t, sip_xaction_t *,			    _sip_msg_t **);extern sip_xaction_t	*sip_xaction_get(sip_conn_object_t, sip_msg_t,			    boolean_t, int, int *);extern void		sip_xaction_delete(sip_xaction_t *);extern char		*sip_get_xaction_state(int);extern int 		(*sip_xaction_ulp_trans_err)(sip_transaction_t, int,			    void *);extern void 		(*sip_xaction_ulp_state_cb)(sip_transaction_t,			    sip_msg_t, int, int);extern void		sip_del_conn_obj_cache(sip_conn_object_t, void *);extern int		sip_add_conn_obj_cache(sip_conn_object_t, void *);extern void		sip_xaction_terminate(sip_xaction_t *, _sip_msg_t *,			    int);#ifdef	__cplusplus}#endif#endif	/* _SIP_XACTION_H */

⌨️ 快捷键说明

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