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);
101 virtual int receivePacket(QUdpSocket& UdpSocket,
char* buf,
const size_t n);
111 virtual int sendPacket(QUdpSocket& UdpSocket,
const QHostAddress& PeerAddress,
112 const char* buf,
const size_t n);
120 QHostAddress& peerHostAddress,
126 { mBindPort = port; }
131 { mPeerPort = port; }
142 void printUdpWaitedTooLong(
int wait_msec);
157 void bindSocket(QUdpSocket& UdpSocket)
throw(std::runtime_error);
168 bool waitForReady(QUdpSocket& UdpSocket,
int timeout_msec);
173 int8_t* full_redundant_packet,
174 int full_redundant_packet_size,
175 int full_packet_size,
183 QHostAddress& PeerAddress,
184 int8_t* full_redundant_packet,
185 int full_redundant_packet_size,
186 int full_packet_size);
195 QHostAddress mPeerAddress;
200 unsigned int mUdpRedundancyFactor;
201 static QMutex sUdpMutex;
204 #endif // __UDPDATAPROTOCOL_H__
virtual int sendPacket(QUdpSocket &UdpSocket, const QHostAddress &PeerAddress, const char *buf, const size_t n)
Sends a packet.
Definition: UdpDataProtocol.cpp:293
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:302
void setPeerAddress(const char *peerHostOrIP)
Set the Peer address to connect to.
Definition: UdpDataProtocol.cpp:93
UDP implementation of DataProtocol class.
Definition: UdpDataProtocol.h:66
virtual void run()
Implements the Thread Loop. To start the thread, call start() ( DO NOT CALL run() ) ...
Definition: UdpDataProtocol.cpp:315
void setPeerPort(int port)
Sets the peer port number.
Definition: UdpDataProtocol.h:130
UdpDataProtocol(JackTrip *jacktrip, const runModeT runmode, int bind_port, int peer_port, unsigned int udp_redundancy_factor=1)
The class constructor.
Definition: UdpDataProtocol.cpp:66
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:495
void bindSocket(QUdpSocket &UdpSocket)
Binds the UDP socket to the available address and specified port.
Definition: UdpDataProtocol.cpp:126
Base class that defines the transmission protocol.
Definition: DataProtocol.h:92
virtual ~UdpDataProtocol()
The class destructor.
Definition: UdpDataProtocol.cpp:84
virtual int receivePacket(QUdpSocket &UdpSocket, char *buf, const size_t n)
Receives a packet. It blocks until a packet is received.
Definition: UdpDataProtocol.cpp:283
bool 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:457
runModeT
Enum to define class modes, SENDER or RECEIVER.
Definition: DataProtocol.h:107
void setBindPort(int port)
Sets the bind port number.
Definition: UdpDataProtocol.h:125
virtual void sendPacketRedundancy(QUdpSocket &UdpSocket, QHostAddress &PeerAddress, int8_t *full_redundant_packet, int full_redundant_packet_size, int full_packet_size)
Redundancy algorythm at the sender's end.
Definition: UdpDataProtocol.cpp:542
Main class to creates a SERVER (to listen) or a CLIENT (to connect to a listening server) to send aud...
Definition: JackTrip.h:67
void signalWatingTooLong(int wait_msec)
Signals when waiting every 10 milliseconds, with the total wait on wait_msec.
Definition: moc_UdpDataProtocol.cpp:138
quint16 uint16_t
Typedef for unsigned short. This type is guaranteed to be 16-bit.
Definition: jacktrip_types.h:71