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);
90 void setPeerAddress(
const char* peerHostOrIP)
throw(std::invalid_argument);
92 #if defined (__WIN_32__)
93 void setSocket(SOCKET &socket)
throw(std::runtime_error);
95 void setSocket(
int &socket)
throw(std::runtime_error);
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); }
147 void printUdpWaitedTooLong(
int wait_msec);
162 #if defined (__WIN_32__)
163 SOCKET
bindSocket() throw(std::runtime_error);
177 void waitForReady(QUdpSocket& UdpSocket,
int timeout_msec);
182 int8_t* full_redundant_packet,
183 int full_redundant_packet_size,
184 int full_packet_size,
192 int full_redundant_packet_size,
193 int full_packet_size);
203 QHostAddress mPeerAddress;
204 struct sockaddr_in mPeerAddr;
205 struct sockaddr_in6 mPeerAddr6;
206 #if defined (__WIN_32__)
215 unsigned int mUdpRedundancyFactor;
216 static QMutex sUdpMutex;
219 #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.
Definition: moc_UdpDataProtocol.cpp:138
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:93
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:67
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:641
UDP implementation of DataProtocol class.
Definition: UdpDataProtocol.h:66
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
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:600
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:688
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 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