D:/Storage/CVS_Head/h323plus/include/h323t120.h

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 1.1  2007/08/06 20:50:49  shorne
00028  * First commit of h323plus
00029  *
00030  * Revision 1.8  2005/11/30 13:05:01  csoutheren
00031  * Changed tags for Doxygen
00032  *
00033  * Revision 1.7  2002/09/16 01:14:15  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 1.6  2002/09/03 06:19:37  robertj
00038  * Normalised the multi-include header prevention ifdef/define symbol.
00039  *
00040  * Revision 1.5  2002/08/05 10:03:47  robertj
00041  * Cosmetic changes to normalise the usage of pragma interface/implementation.
00042  *
00043  * Revision 1.4  2002/05/10 05:47:37  robertj
00044  * Added session ID to the data logical channel class.
00045  *
00046  * Revision 1.3  2002/02/01 01:46:50  robertj
00047  * Some more fixes for T.120 channel establishment, more to do!
00048  *
00049  * Revision 1.2  2002/01/09 00:21:36  robertj
00050  * Changes to support outgoing H.245 RequstModeChange.
00051  *
00052  * Revision 1.1  2001/07/17 04:44:29  robertj
00053  * Partial implementation of T.120 and T.38 logical channels.
00054  *
00055  */
00056 
00057 #ifndef __OPAL_H323T120_H
00058 #define __OPAL_H323T120_H
00059 
00060 #ifdef P_USE_PRAGMA
00061 #pragma interface
00062 #endif
00063 
00064 
00065 #include "h323caps.h"
00066 #include "channels.h"
00067 
00068 
00069 class OpalT120Protocol;
00070 
00071 
00073 
00076 class H323_T120Capability : public H323DataCapability
00077 {
00078     PCLASSINFO(H323_T120Capability, H323DataCapability);
00079   public:
00084     H323_T120Capability();
00086 
00091     virtual PObject * Clone() const;
00093 
00102     virtual unsigned GetSubType() const;
00103 
00106     virtual PString GetFormatName() const;
00108 
00113     virtual H323Channel * CreateChannel(
00114       H323Connection & connection,    
00115       H323Channel::Directions dir,    
00116       unsigned sessionID,             
00117       const H245_H2250LogicalChannelParameters * param
00119     ) const;
00121 
00132     virtual BOOL OnSendingPDU(
00133       H245_DataApplicationCapability & pdu
00134     ) const;
00135 
00144     virtual BOOL OnSendingPDU(
00145       H245_DataMode & pdu  
00146     ) const;
00147 
00154     virtual BOOL OnSendingPDU(
00155       H245_DataProtocolCapability & pdu  
00156     ) const;
00157 
00165     virtual BOOL OnReceivedPDU(
00166       const H245_DataApplicationCapability & pdu  
00167     );
00169 
00175     BOOL GetDynamicPortCapability() const { return dynamicPortCapability; }
00176 
00180     void SetDynamicPortCapability(BOOL dynamic) { dynamicPortCapability = dynamic; }
00182 
00183   protected:
00184     BOOL dynamicPortCapability;
00185 };
00186 
00187 
00190 class H323_T120Channel : public H323DataChannel
00191 {
00192     PCLASSINFO(H323_T120Channel, H323DataChannel);
00193   public:
00198     H323_T120Channel(
00199       H323Connection & connection,        
00200       const H323Capability & capability,  
00201       Directions direction,               
00202       unsigned sessionID                  
00203     );
00205 
00215     virtual void Receive();
00216 
00225     virtual void Transmit();
00226 
00229     virtual BOOL OnSendingPDU(
00230       H245_OpenLogicalChannel & openPDU  
00231     ) const;
00232 
00236     virtual void OnSendOpenAck(
00237       const H245_OpenLogicalChannel & open,   
00238       H245_OpenLogicalChannelAck & ack        
00239     ) const;
00240 
00248     virtual BOOL OnReceivedPDU(
00249       const H245_OpenLogicalChannel & pdu,    
00250       unsigned & errorCode                    
00251     );
00252 
00260     virtual BOOL OnReceivedAckPDU(
00261       const H245_OpenLogicalChannelAck & pdu 
00262     );
00264 
00265     virtual void HandleChannel();
00266 
00267   protected:
00268     OpalT120Protocol * t120handler;
00269 };
00270 
00271 
00272 #endif // __OPAL_H323T120_H
00273 
00274 

Generated on Thu Oct 25 13:42:27 2007 for h323plus by  doxygen 1.5.2