h323t120.h

Go to the documentation of this file.
00001 /*
00002  * h323t120.h
00003  *
00004  * H.323 T.120 logical channel establishment
00005  *
00006  * Open H323 Library
00007  *
00008  * Copyright (c) 2001 Equivalence Pty. Ltd.
00009  *
00010  * The contents of this file are subject to the Mozilla Public License
00011  * Version 1.0 (the "License"); you may not use this file except in
00012  * compliance with the License. You may obtain a copy of the License at
00013  * http://www.mozilla.org/MPL/
00014  *
00015  * Software distributed under the License is distributed on an "AS IS"
00016  * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
00017  * the License for the specific language governing rights and limitations
00018  * under the License.
00019  *
00020  * The Original Code is Open H323 Library.
00021  *
00022  * The Initial Developer of the Original Code is Equivalence Pty. Ltd.
00023  *
00024  * Contributor(s): ______________________________________.
00025  *
00026  * $Log: h323t120.h,v $
00027  * Revision 2.8  2005/11/30 13:35:27  csoutheren
00028  * Changed tags for Doxygen
00029  *
00030  * Revision 2.7  2002/11/10 11:33:17  robertj
00031  * Updated to OpenH323 v1.10.3
00032  *
00033  * Revision 2.6  2002/09/16 02:52:35  robertj
00034  * Added #define so can select if #pragma interface/implementation is used on
00035  *   platform basis (eg MacOS) rather than compiler, thanks Robert Monaghan.
00036  *
00037  * Revision 2.5  2002/09/04 06:01:47  robertj
00038  * Updated to OpenH323 v1.9.6
00039  *
00040  * Revision 2.4  2002/07/01 04:56:31  robertj
00041  * Updated to OpenH323 v1.9.1
00042  *
00043  * Revision 2.3  2002/02/11 09:32:12  robertj
00044  * Updated to openH323 v1.8.0
00045  *
00046  * Revision 2.2  2002/01/14 06:35:57  robertj
00047  * Updated to OpenH323 v1.7.9
00048  *
00049  * Revision 2.1  2001/08/01 05:06:10  robertj
00050  * Major changes to H.323 capabilities, uses OpalMediaFormat for base name.
00051  *
00052  * Revision 2.0  2001/07/27 15:48:24  robertj
00053  * Conversion of OpenH323 to Open Phone Abstraction Library (OPAL)
00054  *
00055  * Revision 1.7  2002/09/16 01:14:15  robertj
00056  * Added #define so can select if #pragma interface/implementation is used on
00057  *   platform basis (eg MacOS) rather than compiler, thanks Robert Monaghan.
00058  *
00059  * Revision 1.6  2002/09/03 06:19:37  robertj
00060  * Normalised the multi-include header prevention ifdef/define symbol.
00061  *
00062  * Revision 1.5  2002/08/05 10:03:47  robertj
00063  * Cosmetic changes to normalise the usage of pragma interface/implementation.
00064  *
00065  * Revision 1.4  2002/05/10 05:47:37  robertj
00066  * Added session ID to the data logical channel class.
00067  *
00068  * Revision 1.3  2002/02/01 01:46:50  robertj
00069  * Some more fixes for T.120 channel establishment, more to do!
00070  *
00071  * Revision 1.2  2002/01/09 00:21:36  robertj
00072  * Changes to support outgoing H.245 RequstModeChange.
00073  *
00074  * Revision 1.1  2001/07/17 04:44:29  robertj
00075  * Partial implementation of T.120 and T.38 logical channels.
00076  *
00077  */
00078 
00079 #ifndef __OPAL_H323T120_H
00080 #define __OPAL_H323T120_H
00081 
00082 #ifdef P_USE_PRAGMA
00083 #pragma interface
00084 #endif
00085 
00086 
00087 #include <h323/h323caps.h>
00088 
00089 
00090 class OpalT120Protocol;
00091 
00092 
00094 
00097 class H323_T120Capability : public H323DataCapability
00098 {
00099     PCLASSINFO(H323_T120Capability, H323DataCapability);
00100   public:
00105     H323_T120Capability();
00107 
00112     virtual PObject * Clone() const;
00114 
00123     virtual unsigned GetSubType() const;
00124 
00127     virtual PString GetFormatName() const;
00129 
00134     virtual H323Channel * CreateChannel(
00135       H323Connection & connection,    
00136       H323Channel::Directions dir,    
00137       unsigned sessionID,             
00138       const H245_H2250LogicalChannelParameters * param
00140     ) const;
00142 
00153     virtual BOOL OnSendingPDU(
00154       H245_DataApplicationCapability & pdu
00155     ) const;
00156 
00165     virtual BOOL OnSendingPDU(
00166       H245_DataMode & pdu  
00167     ) const;
00168 
00175     virtual BOOL OnSendingPDU(
00176       H245_DataProtocolCapability & pdu  
00177     ) const;
00178 
00186     virtual BOOL OnReceivedPDU(
00187       const H245_DataApplicationCapability & pdu  
00188     );
00190 
00196     BOOL GetDynamicPortCapability() const { return dynamicPortCapability; }
00197 
00201     void SetDynamicPortCapability(BOOL dynamic) { dynamicPortCapability = dynamic; }
00203 
00204   protected:
00205     BOOL dynamicPortCapability;
00206 };
00207 
00208 
00211 class H323_T120Channel : public H323DataChannel
00212 {
00213     PCLASSINFO(H323_T120Channel, H323DataChannel);
00214   public:
00219     H323_T120Channel(
00220       H323Connection & connection,        
00221       const H323Capability & capability,  
00222       Directions direction,               
00223       unsigned sessionID                  
00224     );
00226 
00236     virtual void Receive();
00237 
00246     virtual void Transmit();
00247 
00250     virtual BOOL OnSendingPDU(
00251       H245_OpenLogicalChannel & openPDU  
00252     ) const;
00253 
00257     virtual void OnSendOpenAck(
00258       const H245_OpenLogicalChannel & open,   
00259       H245_OpenLogicalChannelAck & ack        
00260     ) const;
00261 
00269     virtual BOOL OnReceivedPDU(
00270       const H245_OpenLogicalChannel & pdu,    
00271       unsigned & errorCode                    
00272     );
00273 
00281     virtual BOOL OnReceivedAckPDU(
00282       const H245_OpenLogicalChannelAck & pdu 
00283     );
00285 
00286     virtual void HandleChannel();
00287 
00288   protected:
00289     OpalT120Protocol * t120handler;
00290 };
00291 
00292 
00293 #endif // __OPAL_H323T120_H
00294 
00295 

Generated on Fri Mar 7 06:33:31 2008 for OPAL by  doxygen 1.5.1