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

📄 rvmegacoterm.h

📁 h.248协议源码
💻 H
字号:
/******************************************************************************
Filename   : rvmegacoterm.h
Description: Header file for MEGACO Termination (part of Termination Manager)
******************************************************************************
                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:$
$Date:11.15.00$
$Author: D.Elbert$
******************************************************************************/
#ifndef RV_MEGACOTERM_H
#define RV_MEGACOTERM_H

#include "rvtimer.h"
#include "rvvector.h"
#include "rvmap.h"
#include "rvmegacoobjects.h"
#include "rvmegacomediastream.h"
#include "rvmdm.h"
#include "rvmegacotermmgrutil.h"
#include "rvmegacotermdigitmap.h"
#include "rvmegacotermsignal.h"
#include "rvmdmpkg.h"

/* Timeout for event timer */
#define RV_MEGACOTERM_EVENTTIME 20

struct RvMegacoContext_;

rvDeclareVector(RvMegacoMediaStream)


rvDeclareList(RvMegacoObservedEvent)

typedef struct RvMegacoTerm_ {
	RvMutex								mutex;
	RvString							terminationId;
	RvMegacoMediaDescriptor				mediaDescr;

	/* Collects the events */
	/* Create when receiving a new "requested events" 
	   command */
	RvMegacoObservedEventsDescriptor    obsEventsDescr;

	/* Current context */
	struct RvMegacoContext_ *			context;
	struct RvMegacoContext_ *			oldContext;
	/* Streams */
	RvVector(RvMegacoMediaStream)       streamList;

	RvMdmTermType                       type;

	/* App. Termination data */
	RvMdmTerm	                        mdmTerm;

	/*----------------------------------*/
	/* Event processing state variables */
	/*----------------------------------*/
	RvMegacoEventsDescriptor            eventsDescr;
	RvMegacoEventBufferDescriptor       eventBufferDescr;
	RvBool								lockStep;
	RvBool								bufferActive;
	RvBool								digitMapActive;
	/* Event processed from the event buffer */ 
	RvList(RvMegacoObservedEvent)		eventBuffer;
	const RvTimeStamp*                  bufferedTime;
	RvMegacoDigitMap					digitMap;
	RvString							dialString;
	RvMdmDigitMapData *					digitMapEC;
	/* Current status of the digitmap matching */
	RvMegacoDigitMapMatchType			digitMapStat;
	RvTimer								digitMapTimer[2];
	int									digitMapCurTimer;
	RvMdmMediaStream*					digitMapMedia;
	/* Requested event for digitmap event */
	const RvMegacoRequestedEvent *		digitMapReqEvent;

	/* Store previously defined digitmaps */
	RvMegacoDigitMapDB					storedDigitMaps;

	/*----------------------------------*/
	/* Signals variables                */
	/*----------------------------------*/
	RvList(RvMegacoCurSignal)			curSignals;
	RvList(RvMegacoCurSignalList)		curSignalLists;

	/*-----------------------------------------------*/
	/* Used to queue events when processing commands */
	/*-----------------------------------------------*/
	RvMutex								blockedEventMutex;
	RvBool								blockedEventState;
	RvBool                              blockTimerOn;
	RvList(RvMegacoObservedEvent)		blockedEventBuffer;
	RvTimer								blockedEventTimer;

	/* Allocator */
	RvAlloc *							alloc;

	/* Serial number in context */
	RvUint32							serial;

	/* Flag for null context */
	RvBool								inNullContext;

	/* Termination default state */
	RvMdmTermDefaultProperties          defaultState;

	/* used for recovery mechanism */ 
/*	RvMegacoTermTimer*					keepAliveTimer; */
/*	int									msgCounter; */		

	RvBool								inactive;
} RvMegacoTerm;

/* Constructor and destructor */
void rvMegacoTermConstruct(RvMegacoTerm * x,const char * id,struct RvMegacoContext_ * context,RvAlloc * alloc);
void rvMegacoTermDestruct(RvMegacoTerm * x);

/* Set/Get */
#define rvMegacoTermIsPhysical(x) ((x)->type==RV_MDMTERMTYPE_PHYSICAL)
#define rvMegacoTermIsEphemeral(x) ((x)->type==RV_MDMTERMTYPE_EPHEMERAL)
#define rvMegacoTermIsUnknownType(x) ((x)->type==RV_MDMTERMTYPE_UNKNOWN)
#define rvMegacoTermSetType(x,t)     ((x)->type=t)
#define rvMegacoTermGetContext(x) ((x)->context)
#define rvMegacoTermGetStateInContext(x) ((x)->stateInContext)
#define rvMegacoTermSetStateInContext(x,s) ((x)->stateInContext=(s))
#define rvMegacoTermGetMdmTerm(x) (&((x)->mdmTerm))
#define rvMegacoTermGetId(x) rvStringGetData(&((x)->terminationId))
#define	rvMegacoTermSetSerialNumber(x,s) ((x)->serial=s)
#define	rvMegacoTermGetSerialNumber(x) ((x)->serial)

#define rvMegacoTermIsInNullCtxt(x) ((x)->inNullContext)
#define rvMegacoTermInNullCtxt(x) ((x)->inNullContext=rvTrue)
#define rvMegacoTermOutNullCtxt(x) ((x)->inNullContext=rvFalse)

void   rvMegacoTermSetContext(RvMegacoTerm * x,struct RvMegacoContext_* context);
struct RvMegacoTermMgr_* rvMegacoTermGetTermMgr(RvMegacoTerm * x);

RvBool rvMegacoTermMatchId(RvMegacoTerm * x,const char * id);
RvBool rvMegacoTermMatchWildcard(RvMegacoTerm * x,const char * pattern);
RvBool rvMegacoTermMatchWildcardEx(RvMegacoTerm * x,const char * pattern,char allChars);


/* Process Attributes */

void rvMegacoTermEnterContext(RvMegacoTerm * x,struct RvMegacoContext_* c);
void rvMegacoTermLeaveContext(RvMegacoTerm * x,RvMegacoCommandReply * commReply,RvBool isSubtract,RvBool getStats);

void rvMegacoTermProcessMedia(RvMegacoTerm * x,const RvMegacoMediaDescriptor * mediaDescr,RvMegacoCommandReply * commReply);
/*void rvMegacoTermProcessModem(RvMegacoTerm * x,const RvMegacoModemDescriptor * modemDescr,RvMegacoCommandReply * commReply);*/
/*void rvMegacoTermProcessMux(RvMegacoTerm * x,const RvMegacoMuxDescriptor * modemDescr,RvMegacoCommandReply * commReply);*/
void rvMegacoTermProcessSignals(RvMegacoTerm * x,const RvMegacoSignalsDescriptor * signalsDescr,RvMegacoCommandReply * commReply);

void rvMegacoTermProcessAuditValue(RvMegacoTerm * x,const RvMegacoAuditDescriptor * auditDescr,RvMegacoCommandReply * commReply);
void rvMegacoTermProcessAuditValueWild(RvMegacoTerm * x,const RvMegacoAuditDescriptor * auditDescr,RvMegacoCommandReply * commReply);

void rvMegacoTermProcessDigitMap(RvMegacoTerm * x,const RvMegacoDigitMapDescriptor * digitMapDescr,RvMegacoCommandReply * commReply);

void rvMegacoTermProcessAuditCaps(RvMegacoTerm * x,const RvMegacoAuditDescriptor * auditDescr,RvMegacoCommandReply * commReply);
void rvMegacoTermProcessAuditCapsWildAll(RvMdmTermMgr * mdmMgr,const RvMegacoAuditDescriptor * auditDescr,
										 RvMegacoCommandReply * commReply,RvPtrVector* pkgs,RvAlloc* a);
void rvMegacoTermProcessAuditCapsWild(RvMegacoTerm * x,const RvMegacoAuditDescriptor * auditDescr,
									  RvMegacoCommandReply * commReply,RvPtrVector* pkgs,RvPtrVector* termClasses);



RvMegacoMediaStream * rvMegacoTermGetMediaStream(RvMegacoTerm * x,unsigned int id);

#define rvMegacoTermGetNumOfStreams(x) (rvVectorSize(&(x)->streamList))
#define rvMegacoTermGetMediaStreamElem(x,i) rvVectorAt(&(x)->streamList,i)

void rvMegacoTermSendErrorMsg(RvMegacoTerm * x,RvMdmError* error,int code,const char* msg,RvMegacoCommandReply * commReply);

void rvMegacoTermProcessCommandStart(RvMegacoTerm * x);
void rvMegacoTermProcessCommandEnd(RvMegacoTerm * x);

void rvMegacoTermSetDefaultState(RvMegacoTerm* x,RvMdmTermDefaultProperties* defState);
void rvMegacoTermRestoreDefaultState(RvMegacoTerm* x);
void rvMegacoTermResetDynamicFields(RvMegacoTerm* x);

void rvMegacoTermUpdateDefaultProperty(RvMegacoTerm* x,const char* pkg,const char* name,
									   RvMegacoParameterValue* value);

void rvMegacoTermPhysInitDefState(RvMegacoTerm* x);

void rvMegacoTermDisable(RvMegacoTerm* x);
void rvMegacoTermEnable(RvMegacoTerm* x);

#define rvMegacoTermIsInactive(x) ((x)->inactive)

#endif /* RV_MEGTERM_H */

⌨️ 快捷键说明

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