00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034 #ifndef OPAL_H323_TRANSADDR_H
00035 #define OPAL_H323_TRANSADDR_H
00036
00037 #ifdef P_USE_PRAGMA
00038 #pragma interface
00039 #endif
00040
00041 #include <opal/buildopts.h>
00042
00043 #if OPAL_H323
00044
00045 #include <ptlib/sockets.h>
00046 #include <opal/transports.h>
00047
00048
00049 class H225_TransportAddress;
00050 class H245_TransportAddress;
00051 class H225_ArrayOf_TransportAddress;
00052
00053
00054 typedef OpalListener H323Listener;
00055 typedef PList<H323Listener> H323ListenerList;
00056 typedef OpalTransport H323Transport;
00057 typedef OpalTransportUDP H323TransportUDP;
00058
00059
00061
00066 class H323TransportAddress : public OpalTransportAddress
00067 {
00068 PCLASSINFO(H323TransportAddress, OpalTransportAddress);
00069 public:
00070 H323TransportAddress()
00071 { }
00072 H323TransportAddress(const char * addr, WORD port = 0, const char * proto = NULL)
00073 : OpalTransportAddress(addr, port, proto) { }
00074 H323TransportAddress(const PString & addr, WORD port = 0, const char * proto = NULL)
00075 : OpalTransportAddress(addr, port, proto) { }
00076 H323TransportAddress(const OpalTransportAddress & addr)
00077 : OpalTransportAddress(addr) { }
00078 H323TransportAddress(PIPSocket::Address ip, WORD port, const char * proto = NULL)
00079 : OpalTransportAddress(ip, port, proto) { }
00080
00081 H323TransportAddress(
00082 const H225_TransportAddress & pdu,
00083 const char * proto = NULL
00084 );
00085 H323TransportAddress(
00086 const H245_TransportAddress & pdu,
00087 const char * proto = NULL
00088 );
00089
00090 PBoolean SetPDU(H225_TransportAddress & pdu, WORD defPort = 0) const;
00091 PBoolean SetPDU(H245_TransportAddress & pdu, WORD defPort = 0) const;
00092 };
00093
00094
00095 class H323TransportAddressArray : public PArray<H323TransportAddress>
00096 {
00097 typedef PArray<H323TransportAddress> ParentClass;
00098 PCLASSINFO(H323TransportAddressArray, ParentClass);
00099
00100 protected:
00101 inline H323TransportAddressArray(int dummy, const H323TransportAddressArray * c)
00102 : ParentClass(dummy, c) { }
00103
00104 public:
00105 H323TransportAddressArray(PINDEX initialSize = 0)
00106 : ParentClass(initialSize) { }
00107 H323TransportAddressArray(
00108 const OpalTransportAddress & address
00109 ) { AppendAddress(address); }
00110 H323TransportAddressArray(
00111 const H323TransportAddress & address
00112 ) { AppendAddress(address); }
00113 H323TransportAddressArray(
00114 const H225_ArrayOf_TransportAddress & addresses
00115 );
00116 H323TransportAddressArray(
00117 const OpalTransportAddressArray & array
00118 ) { AppendStringCollection(array); }
00119 H323TransportAddressArray(
00120 const PStringArray & array
00121 ) { AppendStringCollection(array); }
00122 H323TransportAddressArray(
00123 const PStringList & list
00124 ) { AppendStringCollection(list); }
00125 H323TransportAddressArray(
00126 const PSortedStringList & list
00127 ) { AppendStringCollection(list); }
00128
00129 void AppendString(
00130 const char * address
00131 );
00132 void AppendString(
00133 const PString & address
00134 );
00135 void AppendAddress(
00136 const H323TransportAddress & address
00137 );
00138
00139 virtual PObject * Clone() const
00140 {
00141 return new H323TransportAddressArray(0, this);
00142 }
00143
00144 protected:
00145 void AppendStringCollection(
00146 const PCollection & coll
00147 );
00148 };
00149
00150
00153 void H323SetTransportAddresses(
00154 const H323Transport & associatedTransport,
00155 const H323TransportAddressArray & addresses,
00156 H225_ArrayOf_TransportAddress & pdu
00157 );
00158
00159
00160 #endif // OPAL_H323
00161
00162 #endif // OPAL_H323_TRANSADDR_H
00163
00164