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(
00091 H225_ArrayOf_TransportAddress & pdu,
00092 const OpalTransport & associatedTransport
00093 );
00094 PBoolean SetPDU(H225_TransportAddress & pdu, WORD defPort = 0) const;
00095 PBoolean SetPDU(H245_TransportAddress & pdu, WORD defPort = 0) const;
00096 };
00097
00098
00099 PDECLARE_ARRAY(H323TransportAddressArray, H323TransportAddress)
00100 public:
00101 H323TransportAddressArray(
00102 const OpalTransportAddress & address
00103 ) { AppendAddress(address); }
00104 H323TransportAddressArray(
00105 const H323TransportAddress & address
00106 ) { AppendAddress(address); }
00107 H323TransportAddressArray(
00108 const H225_ArrayOf_TransportAddress & addresses
00109 );
00110 H323TransportAddressArray(
00111 const OpalTransportAddressArray & array
00112 ) { AppendStringCollection(array); }
00113 H323TransportAddressArray(
00114 const PStringArray & array
00115 ) { AppendStringCollection(array); }
00116 H323TransportAddressArray(
00117 const PStringList & list
00118 ) { AppendStringCollection(list); }
00119 H323TransportAddressArray(
00120 const PSortedStringList & list
00121 ) { AppendStringCollection(list); }
00122
00123 void AppendString(
00124 const char * address
00125 );
00126 void AppendString(
00127 const PString & address
00128 );
00129 void AppendAddress(
00130 const H323TransportAddress & address
00131 );
00132
00133 protected:
00134 void AppendStringCollection(
00135 const PCollection & coll
00136 );
00137 };
00138
00139
00142 void H323SetTransportAddresses(
00143 const H323Transport & associatedTransport,
00144 const H323TransportAddressArray & addresses,
00145 H225_ArrayOf_TransportAddress & pdu
00146 );
00147
00148
00149 #endif // OPAL_H323
00150
00151 #endif // OPAL_H323_TRANSADDR_H
00152
00153