JackTrip
|
Base class that defines the transmission protocol. More...
#include <DataProtocol.h>
Classes | |
struct | PktStat |
Public Types | |
enum | packetHeaderTypeT { DEFAULT, JAMLINK, EMPTY } |
Enum to define packet header types. More... | |
enum | runModeT { SENDER, RECEIVER } |
Enum to define class modes, SENDER or RECEIVER. More... | |
Signals | |
void | signalError (const char *error_message) |
void | signalReceivedConnectionFromPeer () |
void | signalCeaseTransmission (const QString &reason="") |
Public Member Functions | |
DataProtocol (JackTrip *jacktrip, const runModeT runmode, int bind_port, int peer_port) | |
The class constructor. More... | |
virtual | ~DataProtocol () |
The class destructor. More... | |
virtual void | run ()=0 |
Implements the thread loop. More... | |
virtual void | stop () |
Stops the execution of the Thread. More... | |
void | setAudioPacketSize (const size_t size_bytes) |
Sets the size of the audio part of the packets. More... | |
size_t | getAudioPacketSizeInBites () |
Get the size of the audio part of the packets. More... | |
virtual void | setPeerAddress (const char *peerHostOrIP)=0 |
Set the peer address. More... | |
virtual void | setPeerPort (int port)=0 |
Set the peer incomming (receiving) port number. More... | |
virtual void | setSocket (int &socket)=0 |
virtual bool | getStats (PktStat *) |
virtual void | setIssueSimulation (double, double, double) |
void | setUseRtPriority (bool use) |
Protected Member Functions | |
runModeT | getRunMode () const |
Get the Run Mode of the object. More... | |
Protected Attributes | |
volatile bool | mStopped |
Boolean stop the execution of the thread. More... | |
volatile bool | mHasPeerAddress |
Boolean to indicate if the RECEIVER is waiting to obtain peer address. More... | |
volatile bool | mHasPacketsToReceive |
Boolean that indicates if a packet was received. More... | |
QMutex | mMutex |
JackTrip * | mJackTrip |
JackTrip mediator class. More... | |
bool | mUseRtPriority |
Base class that defines the transmission protocol.
This base class defines most of the common method to setup and connect sockets using the individual protocols (UDP, TCP, SCTP, etc).
The class has to be constructed using one of two modes (runModeT):
This has to be specified as a constructor argument. When using, create two instances of the class, one to receive and one to send packets. Each instance will run on a separate thread.
Redundancy and forward error correction should be implemented on each Transport protocol, cause they depend on the protocol itself
Even if the underlined transmission protocol is stream oriented (as in TCP), we send packets that are the size of the audio processing buffer. Use AudioInterface::getBufferSize to obtain this value.
Each transmission (i.e., inputs and outputs) run on its own thread.
DataProtocol::DataProtocol | ( | JackTrip * | jacktrip, |
const runModeT | runmode, | ||
int | bind_port, | ||
int | peer_port | ||
) |
The class constructor.
jacktrip | Pointer to the JackTrip class that connects all classes (mediator) |
runmode | Sets the run mode, use either DataProtocol::SENDER or DataProtocol::RECEIVER |
headertype | packetHeaderTypeT header type to use for packets |
bind_port | Port number to bind for this socket (this is the receive or send port depending on the runmode) |
peer_port | Peer port number (this is the receive or send port depending on the runmode) |
|
virtual |
The class destructor.
|
inline |
Get the size of the audio part of the packets.
|
inlineprotected |
Get the Run Mode of the object.
|
inlinevirtual |
Reimplemented in UdpDataProtocol.
|
pure virtual |
Implements the thread loop.
Depending on the runmode, with will run a DataProtocol::SENDER thread or DataProtocol::RECEIVER thread
Implemented in UdpDataProtocol.
|
inline |
Sets the size of the audio part of the packets.
size_bytes | Size in bytes |
|
inlinevirtual |
Reimplemented in UdpDataProtocol.
|
pure virtual |
Set the peer address.
peerHostOrIP | IPv4 number or host name |
Implemented in UdpDataProtocol.
|
pure virtual |
Set the peer incomming (receiving) port number.
port | Port number |
Implemented in UdpDataProtocol.
|
pure virtual |
Implemented in UdpDataProtocol.
|
inline |
|
signal |
|
signal |
|
signal |
|
inlinevirtual |
Stops the execution of the Thread.
|
protected |
Boolean that indicates if a packet was received.
|
protected |
Boolean to indicate if the RECEIVER is waiting to obtain peer address.
|
protected |
|
protected |
|
protected |
Boolean stop the execution of the thread.
|
protected |