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

📄 rvsdpobjs.h

📁 h.248协议源码
💻 H
📖 第 1 页 / 共 3 页
字号:
/******************************************************************************
Filename    :rvsdpobjs.h
Description :Definitions and structures for SDP message objects

******************************************************************************
                Copyright (c) 1999 RADVision Inc.
************************************************************************
NOTICE:
This document contains information that is proprietary to RADVision LTD.
No part of this publication may be reproduced in any form whatsoever 
without written prior approval by RADVision LTD..

RADVision LTD. reserves the right to revise this publication and make 
changes without obligation to notify any person of such revisions or 
changes.
******************************************************************************
$Revision:1.0$
$Date:7/18/99$
$Author:Dan Elbert$
******************************************************************************/

#ifndef RV_SDPOBJS_H
#define RV_SDPOBJS_H

#include <string.h>
#include <stdlib.h>

#include "rvtypes.h"
#include "rvlist.h"
#include "rvstring.h"
#include "rvsdpsymb.h"
#include "rvalloc.h"
#include "rvdefalloc.h"

#if !defined(RV_SDP_DECLSPEC)
#define RV_SDP_DECLSPEC
#endif

#if defined(__cplusplus)
extern "C" {
#endif

#define rvSdpMemEqual(d,s,T) memcmp((void*)d,(void*)s,sizeof(T))

/* typedef int RvInetPort; */

#define RV_SDPFIELD_NOTSET			0
#define RV_SDPTTL_NOTSET		   -1

/* Default */
#define RV_SDPTIME_FULL

/************* Private helper functions ****************************************/

RV_SDP_DECLSPEC RvString* rvSdpStringAssign(RvString* s, const char* v);
RV_SDP_DECLSPEC const char* rvSdpStringGetData(const RvString* s);

/************* Origin object and methods ***************************************/

typedef struct RvSdpOrigin_  {
	RvString		username;	
	RvString		session_id;	
	RvString		version;	
	RvSdpNetType	nettype;	/* "IN"	,ATM										*/
#ifdef RV_SDPSYMB_USESTRING
	RvString		nettype_str;
#endif
	RvSdpAddrType	addrtype;	/* IP4,IP6,LOCAL									*/
#ifdef RV_SDPSYMB_USESTRING
	RvString		addrtype_str;
#endif
	RvString		address;	/* Connection address: multicast,or FQDN			*/	
} RvSdpOrigin;

RV_SDP_DECLSPEC RvSdpOrigin * rvSdpOriginConstructN(RvSdpOrigin *x,
								const char* username,size_t ulen,
								const char* session_id,size_t slen,
								const char* version,size_t vlen,
								RvSdpNetType nettype,RvSdpAddrType addrtype,
								const char* address,size_t alen,RvAlloc* alloc);

#define rvSdpOriginConstructA(x,u,s,v,n,at,a,alloc) rvSdpOriginConstructN(x,u,strlen(u),s,strlen(s),v,strlen(v),n,at,a,strlen(a),alloc)
#define rvSdpOriginConstruct(x,u,s,v,n,at,a)		rvSdpOriginConstructA(x,u,s,v,n,at,a,&rvDefaultAlloc)

RV_SDP_DECLSPEC RvSdpOrigin * rvSdpOriginConstructCopyA(RvSdpOrigin *d,const RvSdpOrigin *s, RvAlloc *a);
RV_SDP_DECLSPEC RvSdpOrigin * rvSdpOriginConstructCopy(RvSdpOrigin *d,const RvSdpOrigin *s);
RV_SDP_DECLSPEC void rvSdpOriginDestruct(RvSdpOrigin *x);
RV_SDP_DECLSPEC RvSdpOrigin * rvSdpOriginCopy(RvSdpOrigin *d,const RvSdpOrigin *s, RvAlloc *a);

/*void rvSdpOriginSetUsername(RvSdpOrigin* x,const char* username);*/
#define	rvSdpOriginSetUsername(x,u)  rvSdpStringAssign(&(x)->username,u)
/*const char* rvSdpOriginGetUsername(const RvSdpOrigin* x);*/
#define	rvSdpOriginGetUsername(x)	rvSdpStringGetData(&(x)->username)

/*void rvSdpOriginSetVersion(RvSdpOrigin* x,const char* version);*/
#define	rvSdpOriginSetVersion(x,v)  rvSdpStringAssign(&(x)->version,v)
/*const char* rvSdpOriginGetVersion(const RvSdpOrigin* x);*/
#define	rvSdpOriginGetVersion(x)  rvSdpStringGetData(&(x)->version)

/*void rvSdpOriginSetSessionId(RvSdpOrigin* x,const char* id);*/
#define	rvSdpOriginSetSessionId(x,id) rvSdpStringAssign(&(x)->session_id,id)
/*const char* rvSdpOriginGetSessionId(const RvSdpOrigin* x);*/
#define	rvSdpOriginGetSessionId(x) rvSdpStringGetData(&(x)->session_id)

/*void rvSdpOriginSetNetType(RvSdpOrigin* x,RvSdpNetType type);*/
#define	rvSdpOriginSetNetType(x,t)  ((x)->nettype=t)
/*RvSdpNetType rvSdpOriginGetNetType(const RvSdpOrigin* x);*/
#define	rvSdpOriginGetNetType(x) ((x)->nettype)

RV_SDP_DECLSPEC void rvSdpOriginSetNetTypeStr(RvSdpOrigin* x,const char* type);
RV_SDP_DECLSPEC void rvSdpOriginSetNetTypeStrN(RvSdpOrigin* x,const char* type,size_t n);
RV_SDP_DECLSPEC const char* rvSdpOriginGetNetTypeStr(const RvSdpOrigin* x);

/*void rvSdpOriginSetAddressType(RvSdpOrigin* x,RvSdpAddrType type);*/
#define	rvSdpOriginSetAddressType(x,type) ((x)->addrtype=type)
/*RvSdpAddrType	rvSdpOriginGetAddressType(const RvSdpOrigin* x);*/
#define	rvSdpOriginGetAddressType(x) ((x)->addrtype)

RV_SDP_DECLSPEC void rvSdpOriginSetAddressTypeStr(RvSdpOrigin* x,const char* t);
RV_SDP_DECLSPEC void rvSdpOriginSetAddressTypeStrN(RvSdpOrigin* x,const char* t,size_t n);
RV_SDP_DECLSPEC const char* rvSdpOriginGetAddressTypeStr(const RvSdpOrigin* x);

RV_SDP_DECLSPEC void rvSdpOriginSetAddress(RvSdpOrigin* x,const char* addr); 
#define	rvSdpOriginSetAddress(x,a) rvSdpStringAssign(&(x)->address,a)
/*const char* rvSdpOriginGetAddress(const RvSdpOrigin* x);*/
#define	rvSdpOriginGetAddress(x) rvSdpStringGetData(&(x)->address)

/************* Email object and methods ***************************************/

typedef struct  RvSdpEmail_ {
	RvString address;
	RvString text;
} RvSdpEmail;

rvDeclareList(RvSdpEmail)
typedef RvList(RvSdpEmail) RvSdpEmailList;
/* RvSdpEmailList* rvSdpEmailListConstruct(RvSdpEmailList *x); */
#define rvSdpEmailListConstructA rvListConstruct(RvSdpEmail)
#define rvSdpEmailListConstructCopy rvListConstructCopy(RvSdpEmail)
#define rvSdpEmailListDestruct rvListDestruct(RvSdpEmail)
#define rvSdpEmailListCopy rvListCopy(RvSdpEmail)
#define rvSdpEmailListEqual rvListEqual(RvSdpEmail)
#define rvSdpEmailListAdd rvListPushBack(RvSdpEmail)
#define rvSdpEmailListClear rvListClear(RvSdpEmail)
#define rvSdpEmailListGetSize rvListSize
#define rvSdpEmailListGetElem rvListAt(RvSdpEmail)

RV_SDP_DECLSPEC RvSdpEmail* rvSdpEmailConstructN(RvSdpEmail* x,
								const char* address,size_t alen,
								const char* text,size_t tlen,
								RvAlloc* alloc);

#define rvSdpEmailConstructA(x,a,t,alloc) rvSdpEmailConstructN(x,a,strlen(a),t,strlen(t),alloc)
#define rvSdpEmailConstruct(x,a,t) rvSdpEmailConstructA(x,a,t,&rvDefaultAlloc)

RV_SDP_DECLSPEC RvSdpEmail* rvSdpEmailConstructCopyA(RvSdpEmail *d,const RvSdpEmail *s,RvAlloc* alloc);
RV_SDP_DECLSPEC RvSdpEmail* rvSdpEmailConstructCopy(RvSdpEmail *d,const RvSdpEmail *s);
RV_SDP_DECLSPEC void rvSdpEmailDestruct(RvSdpEmail *x);
RV_SDP_DECLSPEC RvSdpEmail* rvSdpEmailCopy(RvSdpEmail *d,const RvSdpEmail *s);

/*void rvSdpEmailSetAddress(RvSdpEmail* x,const char* addr);*/
#define rvSdpEmailSetAddress(x,addr) rvSdpStringAssign(&(x)->address,addr)
/*const char* rvSdpEmailGetAddress(const RvSdpEmail* x);*/
#define rvSdpEmailGetAddress(x) rvSdpStringGetData(&(x)->address)

/*void rvSdpEmailSetText(RvSdpEmail* x,const char* text);*/
#define rvSdpEmailSetText(x,t) rvSdpStringAssign(&(x)->text,t)
/*const char* rvSdpEmailGetText(const RvSdpEmail* x);*/
#define rvSdpEmailGetText(x) rvSdpStringGetData(&(x)->text)

#define RvSdpEmailConstructCopy	rvSdpEmailConstructCopyA
#define RvSdpEmailCopy			rvSdpEmailCopy
#define RvSdpEmailDestruct		rvSdpEmailDestruct
#define RvSdpEmailEqual(d,s)	rvSdpMemEqual(d,s,RvSdpEmail)

/************** Phone fields ******************************/

typedef struct RvSdpPhone_{
	RvString phone_number;
	RvString text;
} RvSdpPhone;

rvDeclareList(RvSdpPhone)
typedef RvList(RvSdpPhone) RvSdpPhoneList;
/* RvSdpPhoneList* rvSdpPhoneListConstruct(RvSdpPhoneList *x); */
#define rvSdpPhoneListConstructA rvListConstruct(RvSdpPhone)
#define rvSdpPhoneListConstructCopy rvListConstructCopy(RvSdpPhone)
#define rvSdpPhoneListDestruct rvListDestruct(RvSdpPhone)
#define rvSdpPhoneListCopy rvListCopy(RvSdpPhone)
#define rvSdpPhoneListEqual rvListEqual(RvSdpPhone)
#define rvSdpPhoneListAdd rvListPushBack(RvSdpPhone)
#define rvSdpPhoneListClear rvListClear(RvSdpPhone)
#define rvSdpPhoneListGetSize rvListSize
#define rvSdpPhoneListGetElem rvListAt(RvSdpPhone)

RV_SDP_DECLSPEC RvSdpPhone* rvSdpPhoneConstructN(RvSdpPhone* x,
								const char* number,size_t nlen,
								const char* text,size_t tlen,
								RvAlloc* alloc);

#define rvSdpPhoneConstructA(x,n,t,alloc) rvSdpPhoneConstructN(x,n,strlen(n),t,strlen(t),alloc)
#define rvSdpPhoneConstruct(x,n,t) rvSdpPhoneConstructA(x,n,t,&rvDefaultAlloc)

RV_SDP_DECLSPEC RvSdpPhone* rvSdpPhoneConstructCopyA(RvSdpPhone *d,const RvSdpPhone *s,RvAlloc* alloc);
RV_SDP_DECLSPEC RvSdpPhone* rvSdpPhoneConstructCopy(RvSdpPhone *d,const RvSdpPhone *s);
RV_SDP_DECLSPEC void rvSdpPhoneDestruct(RvSdpPhone *x);
RV_SDP_DECLSPEC RvSdpPhone* rvSdpPhoneCopy(RvSdpPhone *d,const RvSdpPhone *s);

/*void rvSdpPhoneSetNumber(RvSdpPhone* x,const char* number);*/
#define rvSdpPhoneSetNumber(x,number) rvSdpStringAssign(&(x)->phone_number,number)
/*const char* rvSdpPhoneGetNumber(const RvSdpPhone* x);*/
#define rvSdpPhoneGetNumber(x) rvSdpStringGetData(&(x)->phone_number)

/*void  rvSdpPhoneSetText(RvSdpPhone* x,const char* text);*/
#define rvSdpPhoneSetText(x,text) rvSdpStringAssign(&(x)->text,text)
/*const char* rvSdpPhoneGetText(const RvSdpPhone* x);*/
#define rvSdpPhoneGetText(x) rvSdpStringGetData(&(x)->text)

#define RvSdpPhoneConstructCopy	rvSdpPhoneConstructCopyA
#define RvSdpPhoneDestruct	rvSdpPhoneDestruct
#define RvSdpPhoneCopy	rvSdpPhoneCopy
#define RvSdpPhoneEqual(d,s)  rvSdpMemEqual(d,s,RvSdpPhone)

/************** Typed time fields ******************************/

typedef struct {
	RvSdpTimeUnit type;
	RvUint32  time;
} RvSdpTypedTime;

rvDeclareList(RvSdpTypedTime)

⌨️ 快捷键说明

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