36 #ifndef OPAL_H460_STD19_H
37 #define OPAL_H460_STD19_H
71 bool IsRemoteServer()
const {
return m_remoteIsServer; }
74 PNatMethod * m_natMethod;
75 bool m_disabledByH46024;
76 bool m_remoteSupportsMux;
77 bool m_remoteIsServer;
83 class H46019Server :
public PObject
85 PCLASSINFO(H46019Server, PObject)
90 const PIPSocket::Address & localInterface
94 unsigned GetKeepAliveTTL()
const {
return m_keepAliveTTL; }
95 void SetKeepAliveTTL(
unsigned val) { m_keepAliveTTL = val; }
101 unsigned CreateMultiplexID(
102 const PIPSocketAddressAndPort & rtp,
103 const PIPSocketAddressAndPort & rtcp
108 unsigned m_keepAliveTTL;
110 PUDPSocket * m_keepAliveSocket;
111 PUDPSocket * m_rtpSocket;
112 PUDPSocket * m_rtcpSocket;
115 SocketPair(
const PIPSocketAddressAndPort & rtp,
const PIPSocketAddressAndPort & rtcp) : m_rtp(rtp), m_rtcp(rtcp) { }
116 PIPSocketAddressAndPort m_rtp;
117 PIPSocketAddressAndPort m_rtcp;
119 typedef map<uint32_t, SocketPair> MuxMap;
120 MuxMap m_multiplexedSockets;
122 PThread * m_multiplexThread;
123 void MultiplexThread();
124 bool Multiplex(
bool rtcp);
130 class PNatMethod_H46019 :
public PNatMethod
132 PCLASSINFO(PNatMethod_H46019, PNatMethod);
134 enum { DefaultPriority = 20 };
135 PNatMethod_H46019(
unsigned priority = DefaultPriority);
142 virtual PCaselessString GetMethodName()
const;
143 static const char * MethodName();
147 virtual PString GetServer()
const;
157 virtual bool IsAvailable(
const PIPSocket::Address & address, PObject * userData);
161 virtual bool InternalGetServerAddress(PIPSocketAddressAndPort & ap)
const;
162 virtual PNATUDPSocket * InternalCreateSocket(Component component, PObject * context);
163 virtual void InternalUpdate(
bool);
169 class H46019UDPSocket :
public PNATUDPSocket
171 PCLASSINFO(H46019UDPSocket, PNATUDPSocket);
179 PNatMethod::Component component,
188 virtual const char * GetNatName()
const;
192 void ActivateKeepAliveRTP(
197 void ActivateKeepAliveRTCP(
unsigned ttl);
199 void SetMultiplexID(
unsigned multiplexID) { m_multiplexedTransmit =
true; m_multiplexID = multiplexID; }
204 bool InternalWriteTo(
const Slice * slices,
size_t sliceCount,
const PIPSocketAddressAndPort & ipAndPort);
210 PIPSocketAddressAndPort m_keepAliveAddress;
212 PTimeInterval m_keepAliveTTL;
213 WORD m_keepAliveSequence;
215 PDECLARE_NOTIFIER(PTimer, H46019UDPSocket, KeepAliveTimeout);
216 PTimer m_keepAliveTimer;
217 void SendKeepAliveRTP(
const PIPSocketAddressAndPort & ipAndPort);
220 bool m_multiplexedTransmit;
221 PUInt32b m_multiplexID;
225 #endif // OPAL_H460_NAT
227 #endif // OPAL_H460_STD19_H
virtual bool OnSendPDU(H460_MessageType pduType, H460_FeatureDescriptor &pdu)
virtual void OnReceivePDU(H460_MessageType pduType, const H460_FeatureDescriptor &pdu)
virtual void OnReceiveOLCGenericInformation(unsigned, const H245_ArrayOf_GenericParameter &, bool)
Definition: h4601.h:592
PayloadTypes
Definition: rtp.h:556
virtual bool Initialise(H323EndPoint &ep, H323Connection *con)
Definition: rtp_session.h:90
Definition: h323con.h:137
virtual bool OnSendingOLCGenericInformation(unsigned, H245_ArrayOf_GenericParameter &, bool)
Definition: h4601.h:591
Definition: transaddr.h:62