原文网址 http://blog.csdn.net/modena/archive/2005/06/16/395705.aspx
同PWLIB指引目的一样,提供OpenH323的一个简单描述和大部分类结构说明,具体蓝色的部分可以通过链接查看继承表及详细介绍
OpenH323
1.17.0
概述
在整体继承表中最基本的对象是H323Endpoint 类。应用程序通常应该包含继承于该类的子类的实例,并为不同的H323 参数定义缺省的参数值(超时等)。当然最重要的是那些定义编解码和程序能够处理信道类型这些能力表的内容。
使用H323Endpoint 的应用程序海需要构建继承于H323Listener 类的一个或者更多子类的实例。为每种协议制定一个H323Listener 的子类是允许的,比如H323ListenerIP 将转为Internet 使用。每一个侦听着产生一个线程监视自己的协议以及何时会有一个新的呼叫传入,然后创建一个H323Transport 类(子类)的实例。对应H323Listener 类,每种支持的协议都有一个对应的子类,比如H323TransportIP 。
在H323Transport 中,当第一个使用Q.931 和H.225 协议的协议数据单元PDU (Protocol Data Units )到达时,一个用来识别连接的呼叫连接将被创建。这些连接在H323Connection 中被具体实现,在H323Connection 中,包含了所有H323 端点间的状态信息。H323Endpoint 实例维持着这些活动的连接路径。如果呼叫连接的序号已经失去连接,H323 会自动创建一条新的连接并通过信号协商生成新的连接。
应用程序一般不直接使用H323Connection 类,而继承于H323Connection 生 成自己的子类,并实例化。因此,大量的虚方法将被重写。这些虚方法都是库提供的回调函数,用来允许应用程序可以获得信息或者修改协议间协商的不同处理机 制。例如,当一个呼叫传入时,提供一个回调函数以通知应用程序应该发出“警报”,很多应用程序会在这里弹出一个带有响铃声或者提示声音的窗口,而不是仅仅 是默认提供的简单提示音。
H323Negotiator 类用来维持由H.245 协议定义的每个命令和变量的状态和功能实现。事实上,他们存在的最主要目的只是减少h225.h 和h.245.h 文件的范围。仅仅这些文件就定义了成百条的类。一个使用H323Connection 类的用户将因此而不需要在每个编译单元都包含所有这些类。
在H.245 的一些协商过程中,逻辑频道可以通过远程端点,也可以通过本地应用程序创建。这将通过H323Channel 类的继承子类实现。比如,在对这些类的应用中,一个最典型的应用是打开一个编码后音频数据流:H323Channel 类将根据在协议协商过程中传递的H323Capability 来创建一个H323Codec 。
类继承表
OpenH323 提供了丰富的类继承关系,能够实现绝大部分H.323 端点需要的功能。下面的列表并不能一览无遗的列出所有包含的类,本列表只是作为发掘更多功能的一个很好的起点
端点类
- H323EndPoint – 实现一个能够呼叫和接收呼叫的H.323 端点
- H323Connection – 为每个输出和输入呼叫建立的类的实例
- H323Channel – 所有H.323 物理频道的基类
- H323Codec – 所有编解码器的基类,请参考H323AudioCode 和H323VideoCodec
- H323SignalPDU - 所有H.323 协议数据单元PDU (Protocol Data Units) 的基类
- H323DataPDU - 所有H.323 协议数据单元PDU (Protocol Data Units) 的基类
- H323GatekeeperServer – 实现一个H.323 网守。例如,一个H.225 RAS 协议的网守
数据类型
- H225_AliasAddress – 定义H.225 名称地址对象
- H323TransportAddress – 以字符串方式定义IPv4 或IPv6 传输地址
H.225 协议类
这些类根据H.225 ASN 原语定义构建
- H225_Setup_UUIE
- H225_CallProceeding_UUIE
- H225_Connect_UUIE
- H225_Alerting_UUIE
- H225_Information_UUIE
- H225_ReleaseComplete_UUIE
- H225_Facility_UUIE
- H225_Progress_UUIE
- H225_Status_UUIE
- H225_StatusInquiry_UUIE
- H225_SetupAcknowledge_UUIE
- H225_Notify_UUIE
- H225_GatekeeperRequest ,
- H225_GatekeeperConfirm ,
- H225_GatekeeperReject ,
- H225_RegistrationRequest ,
- H225_RegistrationConfirm ,
- H225_RegistrationReject ,
- H225_UnregistrationRequest ,
- H225_UnregistrationConfirm ,
- H225_UnregistrationReject ,
- H225_AdmissionRequest ,
- H225_AdmissionConfirm ,
- H225_AdmissionReject ,
- H225_BandwidthRequest ,
- H225_BandwidthConfirm ,
- H225_BandwidthReject ,
- H225_DisengageRequest ,
- H225_DisengageConfirm ,
- H225_DisengageReject ,
- H225_LocationRequest ,
- H225_LocationConfirm ,
- H225_LocationReject ,
- H225_InfoRequest ,
- H225_InfoRequestResponse ,
- H225_NonStandardMessage ,
- H225_UnknownMessageResponse ,
- H225_RequestInProgress ,
- H225_ResourcesAvailableIndicate ,
- H225_ResourcesAvailableConfirm ,
- H225_InfoRequestAck ,
- H225_InfoRequestNak ,
- H225_ServiceControlIndication ,
- H225_ServiceControlResponse ,
H.245 协议类
这些类根据H.245 ASN 原语定义创建
- H245_NonStandardMessage
- H245_MasterSlaveDetermination
- H245_TerminalCapabilitySet
- H245_OpenLogicalChannel
- H245_CloseLogicalChannel
- H245_RequestChannelClose
- H245_MultiplexEntrySend
- H245_RequestMultiplexEntry
- H245_RequestMode
- H245_RoundTripDelayRequest
- H245_MaintenanceLoopRequest
- H245_CommunicationModeRequest
- H245_ConferenceRequest
- H245_MultilinkRequest
- H245_LogicalChannelRateRequest
- H245_MasterSlaveDeterminationAck
- H245_MasterSlaveDeterminationReject
- H245_TerminalCapabilitySetAck
- H245_TerminalCapabilitySetReject
- H245_OpenLogicalChannelAck
- H245_OpenLogicalChannelReject
- H245_CloseLogicalChannelAck
- H245_RequestChannelCloseAck
- H245_RequestChannelCloseReject
- H245_MultiplexEntrySendAck
- H245_MultiplexEntrySendReject
- H245_RequestMultiplexEntryAck
- H245_RequestMultiplexEntryReject
- H245_RequestModeAck
- H245_RequestModeReject
- H245_RoundTripDelayResponse
- H245_MaintenanceLoopAck
- H245_MaintenanceLoopReject
- H245_CommunicationModeResponse
- H245_ConferenceResponse
- H245_MultilinkResponse
- H245_LogicalChannelRateAcknowledge
- H245_LogicalChannelRateReject
- H245_MaintenanceLoopOffCommand
- H245_SendTerminalCapabilitySet
- H245_EncryptionCommand
- H245_FlowControlCommand
- H245_EndSessionCommand
- H245_MiscellaneousCommand
- H245_CommunicationModeCommand
- H245_ConferenceCommand
- H245_H223MultiplexReconfiguration
- H245_NewATMVCCommand
- H245_MobileMultilinkReconfigurationCommand
- H245_FunctionNotUnderstood
- H245_MasterSlaveDeterminationRelease
- H245_TerminalCapabilitySetRelease
- H245_OpenLogicalChannelConfirm
- H245_RequestChannelCloseRelease
- H245_MultiplexEntrySendRelease
- H245_RequestMultiplexEntryRelease
- H245_RequestModeRelease
- H245_MiscellaneousIndication
- H245_JitterIndication
- H245_H223SkewIndication
- H245_NewATMVCIndication
- H245_UserInputIndication
- H245_H2250MaximumSkewIndication
- H245_MCLocationIndication
- H245_ConferenceIndication
- H245_VendorIdentification
- H245_FunctionNotSupported
- H245_MultilinkIndication
- H245_LogicalChannelRateRelease
- H245_FlowControlIndication
- H245_MobileMultilinkReconfigurationIndication