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

📄 annexe.h

📁 基于h323协议的软phone
💻 H
字号:
/***********************************************************************
        Copyright (c) 2002 RADVISION Ltd.
************************************************************************
NOTICE:
This document contains information that is confidential and proprietary
to RADVISION Ltd.. No part of this document may be reproduced in any
form whatsoever without written prior approval by RADVISION Ltd..

RADVISION Ltd. reserve the right to revise this publication and make
changes without obligation to notify any person of such revisions or
changes.
***********************************************************************/

#ifndef _AnnexE_H_
#define _AnnexE_H_

#include "rvinternal.h"
#include "rvh323connection.h"
#include "rvh323timer.h"
#include "rpool.h"

#ifdef __cplusplus
extern "C" {
#endif /* _cplusplus */


RV_DECLARE_HANDLE( HANNEXE );       /* Annex E instance handle                      */
RV_DECLARE_HANDLE( HAPPANNEXE );    /* Application handle of the Annex E instance   */

typedef enum {
    annexEStatusNormal,
    annexEStatusMemoryProblem,
    annexEStatusResourceProblem,
    annexEStatusSocketProblem,
    annexEStatusWouldBlock,
    annexEStatusAddressAlreadyInUse,
    annexEStatusMustBeStopped,
    annexEStatusMustBeStarted,
    annexEStatusBadParameter
} annexEStatus;

/* Event Handler Function Prototypes */
typedef annexEStatus (RVCALLCONV* annexEEvRestartT)(
    IN  HANNEXE                 hAnnexE,
    IN  HAPPANNEXE              hAppAnnexE,
    IN  cmTransportAddress*     pSourceAddress
);

typedef annexEStatus (RVCALLCONV* annexEEvNewMessageT)(
    IN  HANNEXE     hAnnexE,
    IN  HAPPANNEXE  hAppAnnexE,
    IN  RvUint32    nIP,
    IN  RvUint16    nPort,
    IN  void*       pMessage,
    IN  int         nSize
);

typedef annexEStatus (RVCALLCONV* annexEEvConnectionBrokenT)(
    IN  HANNEXE     hAnnexE,
    IN  HAPPANNEXE  hAppAnnexE,
    IN  RvUint32    nIP,
    IN  RvUint16    nPort
);

typedef annexEStatus (RVCALLCONV* annexEEvUseOtherAddressT)(
    IN  HANNEXE                 hAnnexE,
    IN  HAPPANNEXE              hAppAnnexE,
    IN  RvUint32                nIP,
    IN  RvUint16                nPort,
    IN  cmTransportAddress*     pNewAddress
);

typedef annexEStatus (RVCALLCONV* annexEEvNotSupportedT)(
    IN  HANNEXE     hAnnexE,
    IN  HAPPANNEXE  hAppAnnexE,
    IN  RvUint32    nIP,
    IN  RvUint16    nPort
);

typedef annexEStatus (RVCALLCONV* annexEEvWriteableT)(
    IN  HANNEXE     hAnnexE,
    IN  HAPPANNEXE  hAppAnnexE,
    IN  RvUint32    nIP,
    IN  RvUint16    nPort
);

/* Callback Structure Definition */
typedef struct {
    annexEEvRestartT            AnnexEEvRestart;
    annexEEvNewMessageT         AnnexEEvNewMessage;
    annexEEvConnectionBrokenT   AnnexEEvConnectionBroken;
    annexEEvUseOtherAddressT    AnnexEEvUseOtherAddress;
    annexEEvNotSupportedT       AnnexEEvNotSupported;
    annexEEvWriteableT          AnnexEEvWriteable;
} annexEEvents;

/* package init & done functions
****************************************************************************
***************************************************************************/

annexEStatus annexEInit(
    OUT HANNEXE*                hAnnexE,
    IN  HAPPANNEXE              hAppAnnexE,
    IN  int                     nMaxNodes,
    IN  int                     nMaxSupportedMessageSize,
    IN  int                     nMaxStoredPackets,
    IN  RvH323TimerPoolHandle   timersPool,
    IN  RvSelectEngine*         selEngine,
    IN  RvPortRange*            portRange);

annexEStatus annexEEnd(
    IN  HANNEXE                 hAnnexE
);

/* event handler & protocol parameter functions
****************************************************************************
***************************************************************************/

annexEStatus annexESetProtocolParams(
    IN  HANNEXE                 hAnnexE,
    IN  int                     t_R1,
    IN  int                     t_R2,
    IN  int                     n_R1,
    IN  int                     t_IMA1,
    IN  int                     n_IMA1,
    IN  int                     t_DT
);

annexEStatus annexESetLocalAddress(
    IN  HANNEXE                 hAnnexE,
    IN  cmTransportAddress*     pLocalAddress
);

annexEStatus annexEGetLocalAddress(
    IN  HANNEXE                 hAnnexE,
    IN  cmTransportAddress*     pLocalAddress
);

annexEStatus annexESetEventHandler(
    IN  HANNEXE                 hAnnexE,
    IN  annexEEvents*           pAnnexEEventHandler
);

RvH323Connection* annexEGetConnection(
    IN  HANNEXE                 hAnnexE
);

HRPOOLELEM annexESwapLastMessageToSend(
    IN  HANNEXE                 hAnnexE,
    IN  HRPOOLELEM              message
);

HRPOOLELEM annexEGetMessageToSend(
    IN  HANNEXE                 hAnnexE
);

/* package start & stop functions
****************************************************************************
***************************************************************************/

annexEStatus annexEStart(
    IN  HANNEXE                 hAnnexE
);

annexEStatus annexEStop(
    IN  HANNEXE                 hAnnexE
);

/* package state functions
****************************************************************************
***************************************************************************/

annexEStatus annexEGetHAStateSize(
    IN  HANNEXE                 hAnnexE,
    OUT RvUint32*               pnSize
);

annexEStatus annexEGetHAState(
    IN  HANNEXE                 hAnnexE,
    OUT void*                   pState,
    IN  int                     nSize
);

annexEStatus annexESetHAState(
    IN  HANNEXE                 hAnnexE,
    IN  void*                   pState,
    IN  int                     nSize
);

/* send 'Restart' message
****************************************************************************
***************************************************************************/

annexEStatus annexERestart(
    IN  HANNEXE                 hAnnexE,
    IN  cmTransportAddress*     pDestAddress
);

/* AnnexE API functions
****************************************************************************
***************************************************************************/


annexEStatus annexESendMessage(
    IN  HANNEXE                 hAnnexE,
    IN  RvUint32                ip,
    IN  RvUint16                port,
    IN  RvUint16                CRV,
    IN  void*                   message,
    IN  int                     size,
    IN  RvBool                  fAckHint,
    IN  RvBool                  fReplyHint,
    IN  RvBool                  fSendHint
);

annexEStatus annexECloseNode(
    IN  HANNEXE                 hAnnexE,
    IN  RvUint32                ip,
    IN  RvUint16                port
);

#ifdef __cplusplus
}
#endif /* __cplusplus */

#endif /* _AnnexE_H_ */

⌨️ 快捷键说明

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