Go to the documentation of this file.
38 #ifndef __UDPDATAPROTOCOL_H__
39 #define __UDPDATAPROTOCOL_H__
45 #include <QHostAddress>
80 int bind_port,
int peer_port,
81 unsigned int udp_redundancy_factor = 1);
92 #if defined (__WIN_32__)
107 virtual int receivePacket(QUdpSocket& UdpSocket,
char* buf,
const size_t n);
117 virtual int sendPacket(
const char* buf,
const size_t n);
125 QHostAddress& peerHostAddress,
131 { mBindPort = port; }
136 { mPeerPort = port; mPeerAddr.sin_port = htons(mPeerPort); mPeerAddr6.sin6_port = htons(mPeerPort); }
145 virtual bool getStats(PktStat* stat);
148 void printUdpWaitedTooLong(
int wait_msec);
163 #if defined (__WIN_32__)
178 void waitForReady(QUdpSocket& UdpSocket,
int timeout_msec);
183 int8_t* full_redundant_packet,
184 int full_redundant_packet_size,
185 int full_packet_size,
193 int full_redundant_packet_size,
194 int full_packet_size);
204 QHostAddress mPeerAddress;
205 struct sockaddr_in mPeerAddr;
206 struct sockaddr_in6 mPeerAddr6;
207 #if defined (__WIN_32__)
216 unsigned int mUdpRedundancyFactor;
217 static QMutex sUdpMutex;
219 std::atomic<uint32_t> mTotCount;
220 std::atomic<uint32_t> mLostCount;
221 std::atomic<uint32_t> mOutOfOrderCount;
222 std::atomic<uint32_t> mRevivedCount;
226 #endif // __UDPDATAPROTOCOL_H__
void setBindPort(int port)
Sets the bind port number.
Definition: UdpDataProtocol.h:130
void signalWaitingTooLong(int wait_msec)
Signals when waiting every 10 milliseconds, with the total wait on wait_msec.
virtual void run()
Implements the Thread Loop. To start the thread, call start() ( DO NOT CALL run() )
Definition: UdpDataProtocol.cpp:374
Base class that defines the transmission protocol.
Definition: DataProtocol.h:94
quint16 uint16_t
Typedef for unsigned short. This type is guaranteed to be 16-bit.
Definition: jacktrip_types.h:71
Main class to creates a SERVER (to listen) or a CLIENT (to connect to a listening server) to send aud...
Definition: JackTrip.h:68
qint8 int8_t
Typedef for unsigned long long int. This type is guaranteed to be 64-bit.
Definition: jacktrip_types.h:78
virtual void receivePacketRedundancy(QUdpSocket &UdpSocket, int8_t *full_redundant_packet, int full_redundant_packet_size, int full_packet_size, uint16_t ¤t_seq_num, uint16_t &last_seq_num, uint16_t &newer_seq_num)
Redundancy algorythm at the receiving end.
Definition: UdpDataProtocol.cpp:643
UDP implementation of DataProtocol class.
Definition: UdpDataProtocol.h:67
void setSocket(int &socket)
Definition: UdpDataProtocol.cpp:156
virtual int receivePacket(QUdpSocket &UdpSocket, char *buf, const size_t n)
Receives a packet. It blocks until a packet is received.
Definition: UdpDataProtocol.cpp:319
int bindSocket()
Binds the UDP socket to the available address and specified port.
Definition: UdpDataProtocol.cpp:181
virtual ~UdpDataProtocol()
The class destructor.
Definition: UdpDataProtocol.cpp:92
UdpDataProtocol(JackTrip *jacktrip, const runModeT runmode, int bind_port, int peer_port, unsigned int udp_redundancy_factor=1)
The class constructor.
Definition: UdpDataProtocol.cpp:68
quint32 uint32_t
Typedef for unsigned int. This type is guaranteed to be 32-bit.
Definition: jacktrip_types.h:73
runModeT
Enum to define class modes, SENDER or RECEIVER.
Definition: DataProtocol.h:108
void waitForReady(QUdpSocket &UdpSocket, int timeout_msec)
This function blocks until data is available for reading in the QUdpSocket. The function will timeout...
Definition: UdpDataProtocol.cpp:602
virtual int sendPacket(const char *buf, const size_t n)
Sends a packet.
Definition: UdpDataProtocol.cpp:329
virtual void sendPacketRedundancy(int8_t *full_redundant_packet, int full_redundant_packet_size, int full_packet_size)
Redundancy algorythm at the sender's end.
Definition: UdpDataProtocol.cpp:719
void setPeerPort(int port)
Sets the peer port number.
Definition: UdpDataProtocol.h:135
void setPeerAddress(const char *peerHostOrIP)
Set the Peer address to connect to.
Definition: UdpDataProtocol.cpp:101
virtual bool getStats(PktStat *stat)
Definition: UdpDataProtocol.cpp:703
virtual void getPeerAddressFromFirstPacket(QUdpSocket &UdpSocket, QHostAddress &peerHostAddress, uint16_t &port)
Obtains the peer address from the first UDP packet received. This address is used by the SERVER mode ...
Definition: UdpDataProtocol.cpp:361