Switch commoncpp2 to ucommon to solve dependency conflicts.
libccrtp was depending on commoncpp2, and have been replaced by a version
depending on ucommon as well.
diff --git a/jni/libccrtp/sources/src/ccrtp/rtp.h b/jni/libccrtp/sources/src/ccrtp/rtp.h
old mode 100755
new mode 100644
index a3e2861..b08e762
--- a/jni/libccrtp/sources/src/ccrtp/rtp.h
+++ b/jni/libccrtp/sources/src/ccrtp/rtp.h
@@ -46,15 +46,13 @@
* profile specific functionality (following RFC 3551).
**/
-#ifndef CCXX_RTP_RTP_H_
+#ifndef CCXX_RTP_RTP_H_
#define CCXX_RTP_RTP_H_
#include <ccrtp/cqueue.h>
#include <ccrtp/channel.h>
-#ifdef CCXX_NAMESPACES
-namespace ost {
-#endif
+NAMESPACE_COMMONCPP
/**
* @defgroup sessions RTP sessions.
@@ -82,325 +80,325 @@
* @author David Sugar <dyfet@ostel.com>
* @short RTP protocol stack based on Common C++.
**/
- template <class RTPDataChannel = DualRTPUDPIPv4Channel,
- class RTCPChannel = DualRTPUDPIPv4Channel,
- class ServiceQueue = AVPQueue>
- class __EXPORT TRTPSessionBase : public ServiceQueue
- {
- public:
- /**
- * Builds a session waiting for packets in a host address.
- *
- * @param ia Network address this socket is to be bound.
- * @param dataPort Transport port the data socket is to be bound.
- * @param controlPort Transport port the control socket is to be bound.
- * @param membersSize Initial size of the membership table.
- * @param app Application this session is associated to.
- * */
- TRTPSessionBase(const InetHostAddress& ia, tpport_t dataPort,
- tpport_t controlPort, uint32 membersSize,
- RTPApplication& app) :
- ServiceQueue(membersSize,app)
- { build(ia,dataPort,controlPort); }
+ template <class RTPDataChannel = DualRTPUDPIPv4Channel,
+ class RTCPChannel = DualRTPUDPIPv4Channel,
+ class ServiceQueue = AVPQueue>
+ class __EXPORT TRTPSessionBase : public ServiceQueue
+ {
+ public:
+ /**
+ * Builds a session waiting for packets in a host address.
+ *
+ * @param ia Network address this socket is to be bound.
+ * @param dataPort Transport port the data socket is to be bound.
+ * @param controlPort Transport port the control socket is to be bound.
+ * @param membersSize Initial size of the membership table.
+ * @param app Application this session is associated to.
+ * */
+ TRTPSessionBase(const InetHostAddress& ia, tpport_t dataPort,
+ tpport_t controlPort, uint32 membersSize,
+ RTPApplication& app) :
+ ServiceQueue(membersSize,app)
+ { build(ia,dataPort,controlPort); }
- /**
- * Builds a session with the specified ssrc identifier for the
- * local source.
- *
- * @param ssrc SSRC identifier for the local source.
- * @param ia Network address this socket is to be bound.
- * @param dataPort Transport port the data socket is to be bound.
- * @param controlPort Transport port the control socket is to be bound.
- * @param membersSize Initial size of the membership table.
- * @param app Application this session is associated to.
- **/
- TRTPSessionBase(uint32 ssrc,
- const InetHostAddress& ia,
- tpport_t dataPort, tpport_t controlPort,
- uint32 membersSize, RTPApplication& app):
- ServiceQueue(ssrc,membersSize,app)
- { build(ia,dataPort,controlPort); }
+ /**
+ * Builds a session with the specified ssrc identifier for the
+ * local source.
+ *
+ * @param ssrc SSRC identifier for the local source.
+ * @param ia Network address this socket is to be bound.
+ * @param dataPort Transport port the data socket is to be bound.
+ * @param controlPort Transport port the control socket is to be bound.
+ * @param membersSize Initial size of the membership table.
+ * @param app Application this session is associated to.
+ **/
+ TRTPSessionBase(uint32 ssrc,
+ const InetHostAddress& ia,
+ tpport_t dataPort, tpport_t controlPort,
+ uint32 membersSize, RTPApplication& app):
+ ServiceQueue(ssrc,membersSize,app)
+ { build(ia,dataPort,controlPort); }
- /**
- * Builds a session waiting for packets in a multicast address.
- * TODO: ssrc constructor for multicast!
- *
- * @param ia Multicast address this socket is to be bound.
- * @param dataPort Transport port the data socket is to be bound.
- * @param controlPort Transport port the control socket is to be bound.
- * @param membersSize Initial size of the membership table.
- * @param app Application this session is associated to.
- * @param iface Index (from 0 to n) of network interface to join to
- * multicast group.
- **/
- TRTPSessionBase(const InetMcastAddress& ia, tpport_t dataPort,
- tpport_t controlPort, uint32 membersSize,
- RTPApplication& app, uint32 iface) :
- ServiceQueue(membersSize,app)
- { build(ia,dataPort,controlPort,iface); }
+ /**
+ * Builds a session waiting for packets in a multicast address.
+ * TODO: ssrc constructor for multicast!
+ *
+ * @param ia Multicast address this socket is to be bound.
+ * @param dataPort Transport port the data socket is to be bound.
+ * @param controlPort Transport port the control socket is to be bound.
+ * @param membersSize Initial size of the membership table.
+ * @param app Application this session is associated to.
+ * @param iface Index (from 0 to n) of network interface to join to
+ * multicast group.
+ **/
+ TRTPSessionBase(const InetMcastAddress& ia, tpport_t dataPort,
+ tpport_t controlPort, uint32 membersSize,
+ RTPApplication& app, uint32 iface) :
+ ServiceQueue(membersSize,app)
+ { build(ia,dataPort,controlPort,iface); }
- /**
- * Builds a session waiting for packets in a multicast
- * address, with the specified ssrc identifier for the local
- * source.
- *
- * @param ssrc SSRC identifier for the local source.
- * @param ia Multicast address this socket is to be bound.
- * @param dataPort Transport port the data socket is to be bound.
- * @param controlPort Transport port the control socket is to be bound.
- * @param membersSize Initial size of the membership table.
- * @param app Application this session is associated to.
- * @param iface Index (from 0 to n) of network interface to join to
- * multicast group.
- **/
- TRTPSessionBase(uint32 ssrc,
- const InetMcastAddress& ia, tpport_t dataPort,
- tpport_t controlPort, uint32 membersSize,
- RTPApplication& app, uint32 iface) :
- ServiceQueue(ssrc,membersSize,app)
- { build(ia,dataPort,controlPort,iface); }
+ /**
+ * Builds a session waiting for packets in a multicast
+ * address, with the specified ssrc identifier for the local
+ * source.
+ *
+ * @param ssrc SSRC identifier for the local source.
+ * @param ia Multicast address this socket is to be bound.
+ * @param dataPort Transport port the data socket is to be bound.
+ * @param controlPort Transport port the control socket is to be bound.
+ * @param membersSize Initial size of the membership table.
+ * @param app Application this session is associated to.
+ * @param iface Index (from 0 to n) of network interface to join to
+ * multicast group.
+ **/
+ TRTPSessionBase(uint32 ssrc,
+ const InetMcastAddress& ia, tpport_t dataPort,
+ tpport_t controlPort, uint32 membersSize,
+ RTPApplication& app, uint32 iface) :
+ ServiceQueue(ssrc,membersSize,app)
+ { build(ia,dataPort,controlPort,iface); }
- virtual size_t dispatchBYE(const std::string &str)
- {
- return QueueRTCPManager::dispatchBYE(str);
- }
+ virtual size_t dispatchBYE(const std::string &str)
+ {
+ return QueueRTCPManager::dispatchBYE(str);
+ }
- /**
- * Set the value of the TTL field in the sent packets.
- *
- * @param ttl Time To Live
- * @return error code from the socket operation
- */
- inline Socket::Error
- setMcastTTL(uint8 ttl)
- {
- Socket::Error error = dso->setMulticast(true);
- if ( error ) return error;
- error = dso->setTimeToLive(ttl);
- if ( error ) return error;
- error = cso->setMulticast(true);
- if ( error ) return error;
- return cso->setTimeToLive(ttl);
- }
+ /**
+ * Set the value of the TTL field in the sent packets.
+ *
+ * @param ttl Time To Live
+ * @return error code from the socket operation
+ */
+ inline Socket::Error
+ setMcastTTL(uint8 ttl)
+ {
+ Socket::Error error = dso->setMulticast(true);
+ if ( error ) return error;
+ error = dso->setTimeToLive(ttl);
+ if ( error ) return error;
+ error = cso->setMulticast(true);
+ if ( error ) return error;
+ return cso->setTimeToLive(ttl);
+ }
- inline virtual
- ~TRTPSessionBase()
- {
- endSocket();
- }
+ inline virtual
+ ~TRTPSessionBase()
+ {
+ endSocket();
+ }
- inline RTPDataChannel *getDSO(void)
- {return dso;}
+ inline RTPDataChannel *getDSO(void)
+ {return dso;}
- protected:
- /**
- * @param timeout maximum timeout to wait, in microseconds
- */
- inline bool
- isPendingData(microtimeout_t timeout)
- { return dso->isPendingRecv(timeout); }
+ protected:
+ /**
+ * @param timeout maximum timeout to wait, in microseconds
+ */
+ inline bool
+ isPendingData(microtimeout_t timeout)
+ { return dso->isPendingRecv(timeout); }
- InetHostAddress
- getDataSender(tpport_t *port = NULL) const
- { return dso->getSender(port); }
+ InetHostAddress
+ getDataSender(tpport_t *port = NULL) const
+ { return dso->getSender(port); }
- inline size_t
- getNextDataPacketSize() const
- { return dso->getNextPacketSize(); }
+ inline size_t
+ getNextDataPacketSize() const
+ { return dso->getNextPacketSize(); }
- /**
- * Receive data from the data channel/socket.
- *
- * @param buffer Memory region to read to.
- * @param len Maximum number of octets to get.
- * @param na Source network address.
- * @param tp Source transport port.
- * @return Number of octets actually read.
- */
- inline size_t
- recvData(unsigned char* buffer, size_t len,
- InetHostAddress& na, tpport_t& tp)
- { na = dso->getSender(tp); return dso->recv(buffer, len); }
+ /**
+ * Receive data from the data channel/socket.
+ *
+ * @param buffer Memory region to read to.
+ * @param len Maximum number of octets to get.
+ * @param na Source network address.
+ * @param tp Source transport port.
+ * @return Number of octets actually read.
+ */
+ inline size_t
+ recvData(unsigned char* buffer, size_t len,
+ InetHostAddress& na, tpport_t& tp)
+ { na = dso->getSender(tp); return dso->recv(buffer, len); }
- inline void
- setDataPeer(const InetAddress &host, tpport_t port)
- { dso->setPeer(host,port); }
+ inline void
+ setDataPeer(const InetAddress &host, tpport_t port)
+ { dso->setPeer(host,port); }
- /**
- * @param buffer memory region to write from
- * @param len number of octets to write
- */
- inline size_t
- sendData(const unsigned char* const buffer, size_t len)
- { return dso->send(buffer, len); }
+ /**
+ * @param buffer memory region to write from
+ * @param len number of octets to write
+ */
+ inline size_t
+ sendData(const unsigned char* const buffer, size_t len)
+ { return dso->send(buffer, len); }
- inline SOCKET getDataRecvSocket() const
- { return dso->getRecvSocket(); }
+ inline SOCKET getDataRecvSocket() const
+ { return dso->getRecvSocket(); }
- /**
- * @param timeout maximum timeout to wait, in microseconds
- * @return whether there are packets waiting to be picked
- */
- inline bool
- isPendingControl(microtimeout_t timeout)
- { return cso->isPendingRecv(timeout); }
+ /**
+ * @param timeout maximum timeout to wait, in microseconds
+ * @return whether there are packets waiting to be picked
+ */
+ inline bool
+ isPendingControl(microtimeout_t timeout)
+ { return cso->isPendingRecv(timeout); }
- InetHostAddress
- getControlSender(tpport_t *port = NULL) const
- { return cso->getSender(port); }
+ InetHostAddress
+ getControlSender(tpport_t *port = NULL) const
+ { return cso->getSender(port); }
- /**
- * Receive data from the control channel/socket.
- *
- * @param buffer Buffer where to get data.
- * @param len Maximum number of octets to get.
- * @param na Source network address.
- * @param tp Source transport port.
- * @return Number of octets actually read.
- **/
- inline size_t
- recvControl(unsigned char *buffer, size_t len,
- InetHostAddress& na, tpport_t& tp)
- { na = cso->getSender(tp); return cso->recv(buffer,len); }
+ /**
+ * Receive data from the control channel/socket.
+ *
+ * @param buffer Buffer where to get data.
+ * @param len Maximum number of octets to get.
+ * @param na Source network address.
+ * @param tp Source transport port.
+ * @return Number of octets actually read.
+ **/
+ inline size_t
+ recvControl(unsigned char *buffer, size_t len,
+ InetHostAddress& na, tpport_t& tp)
+ { na = cso->getSender(tp); return cso->recv(buffer,len); }
- inline void
- setControlPeer(const InetAddress &host, tpport_t port)
- { cso->setPeer(host,port); }
+ inline void
+ setControlPeer(const InetAddress &host, tpport_t port)
+ { cso->setPeer(host,port); }
- /**
- * @return number of octets actually written
- * @param buffer
- * @param len
- */
- inline size_t
- sendControl(const unsigned char* const buffer, size_t len)
- { return cso->send(buffer,len); }
+ /**
+ * @return number of octets actually written
+ * @param buffer
+ * @param len
+ */
+ inline size_t
+ sendControl(const unsigned char* const buffer, size_t len)
+ { return cso->send(buffer,len); }
- inline SOCKET getControlRecvSocket() const
- { return cso->getRecvSocket(); }
+ inline SOCKET getControlRecvSocket() const
+ { return cso->getRecvSocket(); }
- /**
- * Join a multicast group.
- *
- * @param ia address of the multicast group
- * @return error code from the socket operation
- */
- inline Socket::Error
- joinGroup(const InetMcastAddress& ia, uint32 iface)
- {
- Socket::Error error = dso->setMulticast(true);
- if ( error ) return error;
- error = dso->join(ia,iface);
- if ( error ) return error;
- error = cso->setMulticast(true);
- if ( error ) {
- dso->drop(ia);
- return error;
- }
- error = cso->join(ia,iface);
- if ( error ) {
- dso->drop(ia);
- return error;
- }
- return Socket::errSuccess;
- }
+ /**
+ * Join a multicast group.
+ *
+ * @param ia address of the multicast group
+ * @return error code from the socket operation
+ */
+ inline Socket::Error
+ joinGroup(const InetMcastAddress& ia, uint32 iface)
+ {
+ Socket::Error error = dso->setMulticast(true);
+ if ( error ) return error;
+ error = dso->join(ia,iface);
+ if ( error ) return error;
+ error = cso->setMulticast(true);
+ if ( error ) {
+ dso->drop(ia);
+ return error;
+ }
+ error = cso->join(ia,iface);
+ if ( error ) {
+ dso->drop(ia);
+ return error;
+ }
+ return Socket::errSuccess;
+ }
- /**
- * Leave a multicast group.
- *
- * @param ia address of the multicast group
- * @return error code from the socket operation
- */
- inline Socket::Error
- leaveGroup(const InetMcastAddress& ia)
- {
- Socket::Error error = dso->setMulticast(false);
- if ( error ) return error;
- error = dso->leaveGroup(ia);
- if ( error ) return error;
- error = cso->setMulticast(false);
- if ( error ) return error;
- return cso->leaveGroup(ia);
- }
+ /**
+ * Leave a multicast group.
+ *
+ * @param ia address of the multicast group
+ * @return error code from the socket operation
+ */
+ inline Socket::Error
+ leaveGroup(const InetMcastAddress& ia)
+ {
+ Socket::Error error = dso->setMulticast(false);
+ if ( error ) return error;
+ error = dso->leaveGroup(ia);
+ if ( error ) return error;
+ error = cso->setMulticast(false);
+ if ( error ) return error;
+ return cso->leaveGroup(ia);
+ }
- inline void
- endSocket()
- {
- if (dso) {
- dso->endSocket();
- delete dso;
- }
- dso = NULL;
- if (cso) {
- cso->endSocket();
- delete cso;
- }
- cso = NULL;
- }
+ inline void
+ endSocket()
+ {
+ if (dso) {
+ dso->endSocket();
+ delete dso;
+ }
+ dso = NULL;
+ if (cso) {
+ cso->endSocket();
+ delete cso;
+ }
+ cso = NULL;
+ }
- private:
- void
- build(const InetHostAddress& ia, tpport_t dataPort,
- tpport_t controlPort)
- {
- if ( 0 == controlPort ) {
- dataBasePort = even_port(dataPort);
- controlBasePort = dataBasePort + 1;
- } else {
- dataBasePort = dataPort;
- controlBasePort = controlPort;
- }
- dso = new RTPDataChannel(ia,dataBasePort);
- cso = new RTCPChannel(ia,controlBasePort);
- }
+ private:
+ void
+ build(const InetHostAddress& ia, tpport_t dataPort,
+ tpport_t controlPort)
+ {
+ if ( 0 == controlPort ) {
+ dataBasePort = even_port(dataPort);
+ controlBasePort = dataBasePort + 1;
+ } else {
+ dataBasePort = dataPort;
+ controlBasePort = controlPort;
+ }
+ dso = new RTPDataChannel(ia,dataBasePort);
+ cso = new RTCPChannel(ia,controlBasePort);
+ }
- void
- build(const InetMcastAddress& ia, tpport_t dataPort,
- tpport_t controlPort, uint32 iface)
- {
- if ( 0 == controlPort ) {
- dataBasePort = even_port(dataPort);
- controlBasePort = dataBasePort + 1;
- } else {
- dataBasePort = dataPort;
- controlBasePort = controlPort;
- }
- dso = new RTPDataChannel(InetHostAddress("0.0.0.0"),dataBasePort);
- cso = new RTCPChannel(InetHostAddress("0.0.0.0"),controlBasePort);
- joinGroup(ia,iface);
- }
+ void
+ build(const InetMcastAddress& ia, tpport_t dataPort,
+ tpport_t controlPort, uint32 iface)
+ {
+ if ( 0 == controlPort ) {
+ dataBasePort = even_port(dataPort);
+ controlBasePort = dataBasePort + 1;
+ } else {
+ dataBasePort = dataPort;
+ controlBasePort = controlPort;
+ }
+ dso = new RTPDataChannel(InetHostAddress("0.0.0.0"),dataBasePort);
+ cso = new RTCPChannel(InetHostAddress("0.0.0.0"),controlBasePort);
+ joinGroup(ia,iface);
+ }
- /**
- * Ensure a port number is odd. If it is an even number, return
- * the next lower (odd) port number.
- *
- * @param port number to filter
- * @return filtered (odd) port number
- */
- inline tpport_t
- odd_port(tpport_t port)
- { return (port & 0x01)? (port) : (port - 1); }
+ /**
+ * Ensure a port number is odd. If it is an even number, return
+ * the next lower (odd) port number.
+ *
+ * @param port number to filter
+ * @return filtered (odd) port number
+ */
+ inline tpport_t
+ odd_port(tpport_t port)
+ { return (port & 0x01)? (port) : (port - 1); }
- /**
- * Ensure a port number is even. If it is an odd number, return
- * the next lower (even) port number.
- *
- * @param port number to filter
- * @return filtered (even) port number
- */
- inline tpport_t
- even_port(tpport_t port)
- { return (port & 0x01)? (port - 1) : (port); }
+ /**
+ * Ensure a port number is even. If it is an odd number, return
+ * the next lower (even) port number.
+ *
+ * @param port number to filter
+ * @return filtered (even) port number
+ */
+ inline tpport_t
+ even_port(tpport_t port)
+ { return (port & 0x01)? (port - 1) : (port); }
- tpport_t dataBasePort;
- tpport_t controlBasePort;
+ tpport_t dataBasePort;
+ tpport_t controlBasePort;
- protected:
- RTPDataChannel* dso;
- RTCPChannel* cso;
- friend class RTPSessionBaseHandler;
- };
+ protected:
+ RTPDataChannel* dso;
+ RTCPChannel* cso;
+ friend class RTPSessionBaseHandler;
+ };
/**
* @class SingleThreadRTPSession
@@ -412,30 +410,30 @@
*
* @author Federico Montesino Pouzols <fedemp@altern.org>
**/
- template
- <class RTPDataChannel = DualRTPUDPIPv4Channel,
- class RTCPChannel = DualRTPUDPIPv4Channel,
- class ServiceQueue = AVPQueue>
- class __EXPORT SingleThreadRTPSession :
- protected Thread,
- public TRTPSessionBase<RTPDataChannel,RTCPChannel,ServiceQueue>
- {
- public:
- SingleThreadRTPSession(const InetHostAddress& ia,
- tpport_t dataPort = DefaultRTPDataPort,
- tpport_t controlPort = 0,
- int pri = 0,
- uint32 memberssize =
- MembershipBookkeeping::defaultMembersHashSize,
- RTPApplication& app = defaultApplication()
+ template
+ <class RTPDataChannel = DualRTPUDPIPv4Channel,
+ class RTCPChannel = DualRTPUDPIPv4Channel,
+ class ServiceQueue = AVPQueue>
+ class __EXPORT SingleThreadRTPSession :
+ protected Thread,
+ public TRTPSessionBase<RTPDataChannel,RTCPChannel,ServiceQueue>
+ {
+ public:
+ SingleThreadRTPSession(const InetHostAddress& ia,
+ tpport_t dataPort = DefaultRTPDataPort,
+ tpport_t controlPort = 0,
+ int pri = 0,
+ uint32 memberssize =
+ MembershipBookkeeping::defaultMembersHashSize,
+ RTPApplication& app = defaultApplication()
#if defined(_MSC_VER) && _MSC_VER >= 1300
- );
+ );
#else
- ):
- Thread(pri),
- TRTPSessionBase<RTPDataChannel,RTCPChannel,ServiceQueue>
- (ia,dataPort,controlPort,memberssize,app)
- { }
+ ):
+ Thread(pri),
+ TRTPSessionBase<RTPDataChannel,RTCPChannel,ServiceQueue>
+ (ia,dataPort,controlPort,memberssize,app)
+ { }
#endif
SingleThreadRTPSession(uint32 ssrc, const InetHostAddress& ia,
@@ -446,25 +444,25 @@
MembershipBookkeeping::defaultMembersHashSize,
RTPApplication& app = defaultApplication()
#if defined(_MSC_VER) && _MSC_VER >= 1300
- );
+ );
#else
- ):
- Thread(pri),
- TRTPSessionBase<RTPDataChannel,RTCPChannel,ServiceQueue>
- (ssrc, ia,dataPort,controlPort,memberssize,app)
+ ):
+ Thread(pri),
+ TRTPSessionBase<RTPDataChannel,RTCPChannel,ServiceQueue>
+ (ssrc, ia,dataPort,controlPort,memberssize,app)
{ }
#endif
SingleThreadRTPSession(const InetMcastAddress& ia,
- tpport_t dataPort = DefaultRTPDataPort,
- tpport_t controlPort = 0,
- int pri = 0,
- uint32 memberssize =
- MembershipBookkeeping::defaultMembersHashSize,
- RTPApplication& app = defaultApplication(),
- uint32 iface = 0
+ tpport_t dataPort = DefaultRTPDataPort,
+ tpport_t controlPort = 0,
+ int pri = 0,
+ uint32 memberssize =
+ MembershipBookkeeping::defaultMembersHashSize,
+ RTPApplication& app = defaultApplication(),
+ uint32 iface = 0
#if defined(_MSC_VER) && _MSC_VER >= 1300
- );
+ );
#else
):
Thread(pri),
@@ -474,13 +472,13 @@
#endif
SingleThreadRTPSession(uint32 ssrc, const InetMcastAddress& ia,
- tpport_t dataPort = DefaultRTPDataPort,
- tpport_t controlPort = 0,
- int pri = 0,
- uint32 memberssize =
- MembershipBookkeeping::defaultMembersHashSize,
- RTPApplication& app = defaultApplication(),
- uint32 iface = 0
+ tpport_t dataPort = DefaultRTPDataPort,
+ tpport_t controlPort = 0,
+ int pri = 0,
+ uint32 memberssize =
+ MembershipBookkeeping::defaultMembersHashSize,
+ RTPApplication& app = defaultApplication(),
+ uint32 iface = 0
#if defined(_MSC_VER) && _MSC_VER >= 1300
);
#else
@@ -553,38 +551,32 @@
**/
virtual void run(void)
{
- microtimeout_t timeout = 0;
- while ( ServiceQueue::isActive() ) {
- if ( timeout < 1000 ){ // !(timeout/1000)
- timeout = getSchedulingTimeout();
- }
- setCancel(cancelDeferred);
- controlReceptionService();
- controlTransmissionService();
- setCancel(cancelImmediate);
- microtimeout_t maxWait =
- timeval2microtimeout(getRTCPCheckInterval());
- // make sure the scheduling timeout is
- // <= the check interval for RTCP
- // packets
- timeout = (timeout > maxWait)? maxWait : timeout;
- if ( timeout < 1000 ) { // !(timeout/1000)
- setCancel(cancelDeferred);
- dispatchDataPacket();
- setCancel(cancelImmediate);
- timerTick();
- } else {
- if ( isPendingData(timeout/1000) ) {
- setCancel(cancelDeferred);
+ microtimeout_t timeout = 0;
+ while ( ServiceQueue::isActive() ) {
+ if ( timeout < 1000 ){ // !(timeout/1000)
+ timeout = getSchedulingTimeout();
+ }
+ controlReceptionService();
+ controlTransmissionService();
+ microtimeout_t maxWait =
+ timeval2microtimeout(getRTCPCheckInterval());
+ // make sure the scheduling timeout is
+ // <= the check interval for RTCP
+ // packets
+ timeout = (timeout > maxWait)? maxWait : timeout;
+ if ( timeout < 1000 ) { // !(timeout/1000)
+ dispatchDataPacket();
+ timerTick();
+ } else {
+ if ( isPendingData(timeout/1000) ) {
if (ServiceQueue::isActive()) { // take in only if active
takeInDataPacket();
}
- setCancel(cancelImmediate);
- }
- timeout = 0;
- }
- }
- dispatchBYE("GNU ccRTP stack finishing.");
+ }
+ timeout = 0;
+ }
+ }
+ dispatchBYE("GNU ccRTP stack finishing.");
// Thread::exit();
}
@@ -623,9 +615,9 @@
* @short Symmetric UDP/IPv4 RTP session scheduled by one thread of execution.
**/
typedef SingleThreadRTPSession<SymmetricRTPChannel,
- SymmetricRTPChannel> SymmetricRTPSession;
+ SymmetricRTPChannel> SymmetricRTPSession;
-#ifdef CCXX_IPV6
+#ifdef CCXX_IPV6
/**
* @class RTPSessionBaseIPV6
@@ -649,8 +641,8 @@
* @short RTP protocol stack based on Common C++.
**/
template <class RTPDataChannel = DualRTPUDPIPv6Channel,
- class RTCPChannel = DualRTPUDPIPv6Channel,
- class ServiceQueue = AVPQueue>
+ class RTCPChannel = DualRTPUDPIPv6Channel,
+ class ServiceQueue = AVPQueue>
class __EXPORT TRTPSessionBaseIPV6 : public ServiceQueue
{
public:
@@ -664,303 +656,303 @@
* @param app Application this session is associated to.
* */
TRTPSessionBaseIPV6(const IPV6Host& ia, tpport_t dataPort,
- tpport_t controlPort, uint32 membersSize,
- RTPApplication& app) :
- ServiceQueue(membersSize,app)
+ tpport_t controlPort, uint32 membersSize,
+ RTPApplication& app) :
+ ServiceQueue(membersSize,app)
{ build(ia,dataPort,controlPort); }
- /**
- * Builds a session with the specified ssrc identifier for the
- * local source.
- *
- * @param ssrc SSRC identifier for the local source.
- * @param ia Network address this socket is to be bound.
- * @param dataPort Transport port the data socket is to be bound.
- * @param controlPort Transport port the control socket is to be bound.
- * @param membersSize Initial size of the membership table.
- * @param app Application this session is associated to.
- **/
- TRTPSessionBaseIPV6(uint32 ssrc,
- const IPV6Host& ia,
- tpport_t dataPort, tpport_t controlPort,
- uint32 membersSize, RTPApplication& app):
- ServiceQueue(ssrc,membersSize,app)
- { build(ia,dataPort,controlPort); }
+ /**
+ * Builds a session with the specified ssrc identifier for the
+ * local source.
+ *
+ * @param ssrc SSRC identifier for the local source.
+ * @param ia Network address this socket is to be bound.
+ * @param dataPort Transport port the data socket is to be bound.
+ * @param controlPort Transport port the control socket is to be bound.
+ * @param membersSize Initial size of the membership table.
+ * @param app Application this session is associated to.
+ **/
+ TRTPSessionBaseIPV6(uint32 ssrc,
+ const IPV6Host& ia,
+ tpport_t dataPort, tpport_t controlPort,
+ uint32 membersSize, RTPApplication& app):
+ ServiceQueue(ssrc,membersSize,app)
+ { build(ia,dataPort,controlPort); }
- /**
- * Builds a session waiting for packets in a multicast address.
- * TODO: ssrc constructor for multicast!
- *
- * @param ia Multicast address this socket is to be bound.
- * @param dataPort Transport port the data socket is to be bound.
- * @param controlPort Transport port the control socket is to be bound.
- * @param membersSize Initial size of the membership table.
- * @param app Application this session is associated to.
- * @param iface Index (from 0 to n) of network interface to join to
- * multicast group.
- **/
- TRTPSessionBaseIPV6(const IPV6Multicast& ia, tpport_t dataPort,
- tpport_t controlPort, uint32 membersSize,
- RTPApplication& app, uint32 iface) :
- ServiceQueue(membersSize,app)
- { build(ia,dataPort,controlPort,iface); }
+ /**
+ * Builds a session waiting for packets in a multicast address.
+ * TODO: ssrc constructor for multicast!
+ *
+ * @param ia Multicast address this socket is to be bound.
+ * @param dataPort Transport port the data socket is to be bound.
+ * @param controlPort Transport port the control socket is to be bound.
+ * @param membersSize Initial size of the membership table.
+ * @param app Application this session is associated to.
+ * @param iface Index (from 0 to n) of network interface to join to
+ * multicast group.
+ **/
+ TRTPSessionBaseIPV6(const IPV6Multicast& ia, tpport_t dataPort,
+ tpport_t controlPort, uint32 membersSize,
+ RTPApplication& app, uint32 iface) :
+ ServiceQueue(membersSize,app)
+ { build(ia,dataPort,controlPort,iface); }
- /**
- * Builds a session waiting for packets in a multicast
- * address, with the specified ssrc identifier for the local
- * source.
- *
- * @param ssrc SSRC identifier for the local source.
- * @param ia Multicast address this socket is to be bound.
- * @param dataPort Transport port the data socket is to be bound.
- * @param controlPort Transport port the control socket is to be bound.
- * @param membersSize Initial size of the membership table.
- * @param app Application this session is associated to.
- * @param iface Index (from 0 to n) of network interface to join to
- * multicast group.
- **/
- TRTPSessionBaseIPV6(uint32 ssrc,
- const IPV6Multicast& ia, tpport_t dataPort,
- tpport_t controlPort, uint32 membersSize,
- RTPApplication& app, uint32 iface) :
- ServiceQueue(ssrc,membersSize,app)
- { build(ia,dataPort,controlPort,iface); }
+ /**
+ * Builds a session waiting for packets in a multicast
+ * address, with the specified ssrc identifier for the local
+ * source.
+ *
+ * @param ssrc SSRC identifier for the local source.
+ * @param ia Multicast address this socket is to be bound.
+ * @param dataPort Transport port the data socket is to be bound.
+ * @param controlPort Transport port the control socket is to be bound.
+ * @param membersSize Initial size of the membership table.
+ * @param app Application this session is associated to.
+ * @param iface Index (from 0 to n) of network interface to join to
+ * multicast group.
+ **/
+ TRTPSessionBaseIPV6(uint32 ssrc,
+ const IPV6Multicast& ia, tpport_t dataPort,
+ tpport_t controlPort, uint32 membersSize,
+ RTPApplication& app, uint32 iface) :
+ ServiceQueue(ssrc,membersSize,app)
+ { build(ia,dataPort,controlPort,iface); }
- virtual size_t dispatchBYE(const std::string &str)
- {
- return QueueRTCPManager::dispatchBYE(str);
- }
+ virtual size_t dispatchBYE(const std::string &str)
+ {
+ return QueueRTCPManager::dispatchBYE(str);
+ }
- inline virtual
- ~TRTPSessionBaseIPV6()
- {
- endSocket();
- }
+ inline virtual
+ ~TRTPSessionBaseIPV6()
+ {
+ endSocket();
+ }
- inline RTPDataChannel *getDSO(void)
- {return dso;}
+ inline RTPDataChannel *getDSO(void)
+ {return dso;}
protected:
- /**
- * @param timeout maximum timeout to wait, in microseconds
- */
- inline bool
- isPendingData(microtimeout_t timeout)
- { return dso->isPendingRecv(timeout); }
+ /**
+ * @param timeout maximum timeout to wait, in microseconds
+ */
+ inline bool
+ isPendingData(microtimeout_t timeout)
+ { return dso->isPendingRecv(timeout); }
- inline IPV6Host
- getDataSender(tpport_t *port = NULL) const
- { return dso->getSender(port); }
+ inline IPV6Host
+ getDataSender(tpport_t *port = NULL) const
+ { return dso->getSender(port); }
- inline size_t
- getNextDataPacketSize() const
- { return dso->getNextPacketSize(); }
+ inline size_t
+ getNextDataPacketSize() const
+ { return dso->getNextPacketSize(); }
- /**
- * Receive data from the data channel/socket.
- *
- * @param buffer Memory region to read to.
- * @param len Maximum number of octets to get.
- * @param na Source network address.
- * @param tp Source transport port.
- * @return Number of octets actually read.
- */
- inline size_t
- recvData(unsigned char* buffer, size_t len,
- IPV6Host& na, tpport_t& tp)
- { na = dso->getSender(tp); return dso->recv(buffer, len); }
+ /**
+ * Receive data from the data channel/socket.
+ *
+ * @param buffer Memory region to read to.
+ * @param len Maximum number of octets to get.
+ * @param na Source network address.
+ * @param tp Source transport port.
+ * @return Number of octets actually read.
+ */
+ inline size_t
+ recvData(unsigned char* buffer, size_t len,
+ IPV6Host& na, tpport_t& tp)
+ { na = dso->getSender(tp); return dso->recv(buffer, len); }
inline void
setDataPeerIPV6(const IPV6Host &host, tpport_t port)
- { dso->setPeer(host,port); }
+ { dso->setPeer(host,port); }
- /**
- * @param buffer memory region to write from
- * @param len number of octets to write
- */
- inline size_t
- sendDataIPV6(const unsigned char* const buffer, size_t len)
- { return dso->send(buffer, len); }
+ /**
+ * @param buffer memory region to write from
+ * @param len number of octets to write
+ */
+ inline size_t
+ sendDataIPV6(const unsigned char* const buffer, size_t len)
+ { return dso->send(buffer, len); }
- inline SOCKET getDataRecvSocket() const
- { return dso->getRecvSocket(); }
+ inline SOCKET getDataRecvSocket() const
+ { return dso->getRecvSocket(); }
- /**
- * @param timeout maximum timeout to wait, in microseconds
- * @return whether there are packets waiting to be picked
- */
+ /**
+ * @param timeout maximum timeout to wait, in microseconds
+ * @return whether there are packets waiting to be picked
+ */
inline bool
- isPendingControl(microtimeout_t timeout)
- { return cso->isPendingRecv(timeout); }
+ isPendingControl(microtimeout_t timeout)
+ { return cso->isPendingRecv(timeout); }
- inline IPV6Host
- getControlSender(tpport_t *port = NULL) const
- { return cso->getSender(port); }
+ inline IPV6Host
+ getControlSender(tpport_t *port = NULL) const
+ { return cso->getSender(port); }
- /**
- * Receive data from the control channel/socket.
- *
- * @param buffer Buffer where to get data.
- * @param len Maximum number of octets to get.
- * @param na Source network address.
- * @param tp Source transport port.
- * @return Number of octets actually read.
- **/
+ /**
+ * Receive data from the control channel/socket.
+ *
+ * @param buffer Buffer where to get data.
+ * @param len Maximum number of octets to get.
+ * @param na Source network address.
+ * @param tp Source transport port.
+ * @return Number of octets actually read.
+ **/
inline size_t
- recvControl(unsigned char *buffer, size_t len,
- IPV6Host& na, tpport_t& tp)
- { na = cso->getSender(tp); return cso->recv(buffer,len); }
+ recvControl(unsigned char *buffer, size_t len,
+ IPV6Host& na, tpport_t& tp)
+ { na = cso->getSender(tp); return cso->recv(buffer,len); }
inline void
setControlPeerIPV6(const IPV6Host &host, tpport_t port)
- { cso->setPeer(host,port); }
+ { cso->setPeer(host,port); }
- /**
- * @return number of octets actually written
- * @param buffer
- * @param len
- */
+ /**
+ * @return number of octets actually written
+ * @param buffer
+ * @param len
+ */
inline size_t
- sendControl(const unsigned char* const buffer, size_t len)
- { return cso->send(buffer,len); }
+ sendControl(const unsigned char* const buffer, size_t len)
+ { return cso->send(buffer,len); }
- inline SOCKET getControlRecvSocket() const
- { return cso->getRecvSocket(); }
+ inline SOCKET getControlRecvSocket() const
+ { return cso->getRecvSocket(); }
- inline void
- endSocket()
- {
- dso->endSocket();
- cso->endSocket();
- if (dso) delete dso;
- dso = NULL;
- if (cso) delete cso;
- cso = NULL;
- }
+ inline void
+ endSocket()
+ {
+ dso->endSocket();
+ cso->endSocket();
+ if (dso) delete dso;
+ dso = NULL;
+ if (cso) delete cso;
+ cso = NULL;
+ }
private:
- void
- build(const IPV6Host& ia, tpport_t dataPort,
- tpport_t controlPort)
- {
- if ( 0 == controlPort ) {
- dataBasePort = even_port(dataPort);
- controlBasePort = dataBasePort + 1;
- } else {
- dataBasePort = dataPort;
- controlBasePort = controlPort;
- }
- dso = new RTPDataChannel(ia,dataBasePort);
- cso = new RTCPChannel(ia,controlBasePort);
- }
+ void
+ build(const IPV6Host& ia, tpport_t dataPort,
+ tpport_t controlPort)
+ {
+ if ( 0 == controlPort ) {
+ dataBasePort = even_port(dataPort);
+ controlBasePort = dataBasePort + 1;
+ } else {
+ dataBasePort = dataPort;
+ controlBasePort = controlPort;
+ }
+ dso = new RTPDataChannel(ia,dataBasePort);
+ cso = new RTCPChannel(ia,controlBasePort);
+ }
- void
- build(const IPV6Multicast& ia, tpport_t dataPort,
- tpport_t controlPort, uint32 iface)
- {
- if ( 0 == controlPort ) {
- dataBasePort = even_port(dataPort);
- controlBasePort = dataBasePort + 1;
- } else {
- dataBasePort = dataPort;
- controlBasePort = controlPort;
- }
- dso = new RTPDataChannel(IPV6Host("0.0.0.0"),dataBasePort);
- cso = new RTCPChannel(IPV6Host("0.0.0.0"),controlBasePort);
- joinGroup(ia,iface);
- }
+ void
+ build(const IPV6Multicast& ia, tpport_t dataPort,
+ tpport_t controlPort, uint32 iface)
+ {
+ if ( 0 == controlPort ) {
+ dataBasePort = even_port(dataPort);
+ controlBasePort = dataBasePort + 1;
+ } else {
+ dataBasePort = dataPort;
+ controlBasePort = controlPort;
+ }
+ dso = new RTPDataChannel(IPV6Host("0.0.0.0"),dataBasePort);
+ cso = new RTCPChannel(IPV6Host("0.0.0.0"),controlBasePort);
+ joinGroup(ia,iface);
+ }
- /**
- * Join a multicast group.
- *
- * @param ia address of the multicast group
- * @return error code from the socket operation
- */
- inline Socket::Error
- joinGroup(const IPV6Multicast& ia, uint32 iface)
- {
- Socket::Error error = dso->setMulticast(true);
- if ( error ) return error;
- error = dso->join(ia,iface);
- if ( error ) return error;
- error = cso->setMulticast(true);
- if ( error ) {
- dso->drop(ia);
- return error;
- }
- error = cso->join(ia,iface);
- if ( error ) {
- dso->drop(ia);
- return error;
- }
- return Socket::errSuccess;
- }
+ /**
+ * Join a multicast group.
+ *
+ * @param ia address of the multicast group
+ * @return error code from the socket operation
+ */
+ inline Socket::Error
+ joinGroup(const IPV6Multicast& ia, uint32 iface)
+ {
+ Socket::Error error = dso->setMulticast(true);
+ if ( error ) return error;
+ error = dso->join(ia,iface);
+ if ( error ) return error;
+ error = cso->setMulticast(true);
+ if ( error ) {
+ dso->drop(ia);
+ return error;
+ }
+ error = cso->join(ia,iface);
+ if ( error ) {
+ dso->drop(ia);
+ return error;
+ }
+ return Socket::errSuccess;
+ }
- /**
- * Leave a multicast group.
- *
- * @param ia address of the multicast group
- * @return error code from the socket operation
- */
- inline Socket::Error
- leaveGroup(const IPV6Multicast& ia)
- {
- Socket::Error error = dso->setMulticast(false);
- if ( error ) return error;
- error = dso->leaveGroup(ia);
- if ( error ) return error;
- error = cso->setMulticast(false);
- if ( error ) return error;
- return cso->leaveGroup(ia);
- }
+ /**
+ * Leave a multicast group.
+ *
+ * @param ia address of the multicast group
+ * @return error code from the socket operation
+ */
+ inline Socket::Error
+ leaveGroup(const IPV6Multicast& ia)
+ {
+ Socket::Error error = dso->setMulticast(false);
+ if ( error ) return error;
+ error = dso->leaveGroup(ia);
+ if ( error ) return error;
+ error = cso->setMulticast(false);
+ if ( error ) return error;
+ return cso->leaveGroup(ia);
+ }
- /**
- * Set the value of the TTL field in the sent packets.
- *
- * @param ttl Time To Live
- * @return error code from the socket operation
- */
- inline Socket::Error
- setMcastTTL(uint8 ttl)
- {
- Socket::Error error = dso->setMulticast(true);
- if ( error ) return error;
- error = dso->setTimeToLive(ttl);
- if ( error ) return error;
- error = cso->setMulticast(true);
- if ( error ) return error;
- return cso->setTimeToLive(ttl);
- }
+ /**
+ * Set the value of the TTL field in the sent packets.
+ *
+ * @param ttl Time To Live
+ * @return error code from the socket operation
+ */
+ inline Socket::Error
+ setMcastTTL(uint8 ttl)
+ {
+ Socket::Error error = dso->setMulticast(true);
+ if ( error ) return error;
+ error = dso->setTimeToLive(ttl);
+ if ( error ) return error;
+ error = cso->setMulticast(true);
+ if ( error ) return error;
+ return cso->setTimeToLive(ttl);
+ }
- /**
- * Ensure a port number is odd. If it is an even number, return
- * the next lower (odd) port number.
- *
- * @param port number to filter
- * @return filtered (odd) port number
- */
- inline tpport_t
- odd_port(tpport_t port)
- { return (port & 0x01)? (port) : (port - 1); }
+ /**
+ * Ensure a port number is odd. If it is an even number, return
+ * the next lower (odd) port number.
+ *
+ * @param port number to filter
+ * @return filtered (odd) port number
+ */
+ inline tpport_t
+ odd_port(tpport_t port)
+ { return (port & 0x01)? (port) : (port - 1); }
- /**
- * Ensure a port number is even. If it is an odd number, return
- * the next lower (even) port number.
- *
- * @param port number to filter
- * @return filtered (even) port number
- */
- inline tpport_t
- even_port(tpport_t port)
- { return (port & 0x01)? (port - 1) : (port); }
+ /**
+ * Ensure a port number is even. If it is an odd number, return
+ * the next lower (even) port number.
+ *
+ * @param port number to filter
+ * @return filtered (even) port number
+ */
+ inline tpport_t
+ even_port(tpport_t port)
+ { return (port & 0x01)? (port - 1) : (port); }
- tpport_t dataBasePort;
- tpport_t controlBasePort;
+ tpport_t dataBasePort;
+ tpport_t controlBasePort;
protected:
- RTPDataChannel* dso;
- RTCPChannel* cso;
- friend class RTPSessionBaseHandler;
+ RTPDataChannel* dso;
+ RTCPChannel* cso;
+ friend class RTPSessionBaseHandler;
};
/**
@@ -978,37 +970,37 @@
class RTCPChannel = DualRTPUDPIPv6Channel,
class ServiceQueue = AVPQueue>
class __EXPORT SingleThreadRTPSessionIPV6 :
- protected Thread,
- public TRTPSessionBaseIPV6<RTPDataChannel,RTCPChannel,ServiceQueue>
+ protected Thread,
+ public TRTPSessionBaseIPV6<RTPDataChannel,RTCPChannel,ServiceQueue>
{
public:
- SingleThreadRTPSessionIPV6(const IPV6Host& ia,
- tpport_t dataPort = DefaultRTPDataPort,
- tpport_t controlPort = 0,
- int pri = 0,
- uint32 memberssize =
- MembershipBookkeeping::defaultMembersHashSize,
- RTPApplication& app = defaultApplication()
+ SingleThreadRTPSessionIPV6(const IPV6Host& ia,
+ tpport_t dataPort = DefaultRTPDataPort,
+ tpport_t controlPort = 0,
+ int pri = 0,
+ uint32 memberssize =
+ MembershipBookkeeping::defaultMembersHashSize,
+ RTPApplication& app = defaultApplication()
#if defined(_MSC_VER) && _MSC_VER >= 1300
- );
+ );
#else
- ):
- Thread(pri),
- TRTPSessionBaseIPV6<RTPDataChannel,RTCPChannel,ServiceQueue>
- (ia,dataPort,controlPort,memberssize,app)
+ ):
+ Thread(pri),
+ TRTPSessionBaseIPV6<RTPDataChannel,RTCPChannel,ServiceQueue>
+ (ia,dataPort,controlPort,memberssize,app)
{ }
#endif
SingleThreadRTPSessionIPV6(const IPV6Multicast& ia,
- tpport_t dataPort = DefaultRTPDataPort,
- tpport_t controlPort = 0,
- int pri = 0,
- uint32 memberssize =
- MembershipBookkeeping::defaultMembersHashSize,
- RTPApplication& app = defaultApplication(),
- uint32 iface = 0
+ tpport_t dataPort = DefaultRTPDataPort,
+ tpport_t controlPort = 0,
+ int pri = 0,
+ uint32 memberssize =
+ MembershipBookkeeping::defaultMembersHashSize,
+ RTPApplication& app = defaultApplication(),
+ uint32 iface = 0
#if defined(_MSC_VER) && _MSC_VER >= 1300
- );
+ );
#else
):
Thread(pri),
@@ -1038,25 +1030,25 @@
protected:
inline void enableStack(void)
-{TRTPSessionBase<RTPDataChannel,RTCPChannel,ServiceQueue>::enableStack();}
+{TRTPSessionBaseIPV6<RTPDataChannel,RTCPChannel,ServiceQueue>::enableStack();}
inline void disableStack(void)
-{TRTPSessionBase<RTPDataChannel,RTCPChannel,ServiceQueue>::disableStack();}
+{TRTPSessionBaseIPV6<RTPDataChannel,RTCPChannel,ServiceQueue>::disableStack();}
inline microtimeout_t getSchedulingTimeout(void)
-{return TRTPSessionBase<RTPDataChannel,RTCPChannel,ServiceQueue>::getSchedulingTimeout();}
+{return TRTPSessionBaseIPV6<RTPDataChannel,RTCPChannel,ServiceQueue>::getSchedulingTimeout();}
inline void controlReceptionService(void)
-{TRTPSessionBase<RTPDataChannel,RTCPChannel,ServiceQueue>::controlReceptionService();}
+{TRTPSessionBaseIPV6<RTPDataChannel,RTCPChannel,ServiceQueue>::controlReceptionService();}
inline void controlTransmissionService(void)
-{TRTPSessionBase<RTPDataChannel,RTCPChannel,ServiceQueue>::controlTransmissionService();}
+{TRTPSessionBaseIPV6<RTPDataChannel,RTCPChannel,ServiceQueue>::controlTransmissionService();}
inline timeval getRTCPCheckInterval(void)
-{return TRTPSessionBase<RTPDataChannel,RTCPChannel,ServiceQueue>::getRTCPCheckInterval();}
+{return TRTPSessionBaseIPV6<RTPDataChannel,RTCPChannel,ServiceQueue>::getRTCPCheckInterval();}
inline size_t dispatchDataPacket(void)
-{return TRTPSessionBase<RTPDataChannel,RTCPChannel,ServiceQueue>::dispatchDataPacket();}
+{return TRTPSessionBaseIPV6<RTPDataChannel,RTCPChannel,ServiceQueue>::dispatchDataPacket();}
#if defined(_MSC_VER) && _MSC_VER >= 1300
virtual void run(void);
@@ -1070,7 +1062,7 @@
{return;}
virtual bool isPendingData(microtimeout_t timeout)
-{return TRTPSessionBase<RTPDataChannel,RTCPChannel,ServiceQueue>::isPendingData(timeout);}
+{return TRTPSessionBaseIPV6<RTPDataChannel,RTCPChannel,ServiceQueue>::isPendingData(timeout);}
/**
* Single runnable method for this RTP stacks, schedules
@@ -1078,46 +1070,40 @@
**/
virtual void run(void)
{
- microtimeout_t timeout = 0;
- while ( ServiceQueue::isActive() ) {
- if ( timeout < 1000 ){ // !(timeout/1000)
- timeout = getSchedulingTimeout();
- }
- setCancel(cancelDeferred);
- controlReceptionService();
- controlTransmissionService();
- setCancel(cancelImmediate);
- microtimeout_t maxWait =
- timeval2microtimeout(getRTCPCheckInterval());
- // make sure the scheduling timeout is
- // <= the check interval for RTCP
- // packets
- timeout = (timeout > maxWait)? maxWait : timeout;
- if ( timeout < 1000 ) { // !(timeout/1000)
- setCancel(cancelDeferred);
- dispatchDataPacket();
- setCancel(cancelImmediate);
- timerTick();
- } else {
- if ( isPendingData(timeout/1000) ) {
- setCancel(cancelDeferred);
- takeInDataPacket();
- setCancel(cancelImmediate);
- }
- timeout = 0;
- }
- }
- dispatchBYE("GNU ccRTP stack finishing.");
+ microtimeout_t timeout = 0;
+ while ( ServiceQueue::isActive() ) {
+ if ( timeout < 1000 ){ // !(timeout/1000)
+ timeout = getSchedulingTimeout();
+ }
+ controlReceptionService();
+ controlTransmissionService();
+ microtimeout_t maxWait =
+ timeval2microtimeout(getRTCPCheckInterval());
+ // make sure the scheduling timeout is
+ // <= the check interval for RTCP
+ // packets
+ timeout = (timeout > maxWait)? maxWait : timeout;
+ if ( timeout < 1000 ) { // !(timeout/1000)
+ dispatchDataPacket();
+ timerTick();
+ } else {
+ if ( isPendingData(timeout/1000) ) {
+ takeInDataPacket();
+ }
+ timeout = 0;
+ }
+ }
+ dispatchBYE("GNU ccRTP stack finishing.");
Thread::exit();
}
#endif
inline size_t takeInDataPacket(void)
-{return TRTPSessionBase<RTPDataChannel,RTCPChannel,ServiceQueue>::takeInDataPacket();}
+{return TRTPSessionBaseIPV6<RTPDataChannel,RTCPChannel,ServiceQueue>::takeInDataPacket();}
inline size_t dispatchBYE(const std::string &str)
-{return TRTPSessionBase<RTPDataChannel,RTCPChannel,ServiceQueue>::dispatchBYE(str);}
+{return TRTPSessionBaseIPV6<RTPDataChannel,RTCPChannel,ServiceQueue>::dispatchBYE(str);}
};
/**
@@ -1146,16 +1132,14 @@
* @short Symmetric UDP/IPv6 RTP session scheduled by one thread of execution.
**/
typedef SingleThreadRTPSessionIPV6<SymmetricRTPChannelIPV6,
- SymmetricRTPChannelIPV6> SymmetricRTPSessionIPV6;
+ SymmetricRTPChannelIPV6> SymmetricRTPSessionIPV6;
#endif
/** @}*/ // sessions
-#ifdef CCXX_NAMESPACES
-}
-#endif
+END_NAMESPACE
#endif //CCXX_RTP_RTP_H_