JackTrip
|
Base class that defines the transmission protocol. More...
#include <DataProtocol.h>
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... |
Public Member Functions | |
DataProtocol (JackTrip *jacktrip, const runModeT runmode, int bind_port, int peer_port) | |
The class constructor. | |
virtual | ~DataProtocol () |
The class destructor. | |
virtual void | run ()=0 |
Implements the thread loop. | |
virtual void | stop () |
Stops the execution of the Thread. | |
void | setAudioPacketSize (const size_t size_bytes) |
Sets the size of the audio part of the packets. | |
size_t | getAudioPacketSizeInBites () |
Get the size of the audio part of the packets. | |
virtual void | setPeerAddress (const char *peerHostOrIP)=0 |
Set the peer address. | |
virtual void | setPeerPort (int port)=0 |
Set the peer incomming (receiving) port number. |
Protected Member Functions | |
runModeT | getRunMode () const |
Get the Run Mode of the object. |
Protected Attributes | |
volatile bool | mStopped |
Boolean stop the execution of the thread. | |
volatile bool | mHasPeerAddress |
Boolean to indicate if the RECEIVER is waiting to obtain peer address. | |
volatile bool | mHasPacketsToReceive |
Boolean that indicates if a packet was received. | |
JackTrip * | mJackTrip |
JackTrip mediator class. |
Private Attributes | |
int | mLocalPort |
Local Port number to Bind. | |
int | mPeerPort |
Peer Port number to Bind. | |
const runModeT | mRunMode |
Run mode, either SENDER or RECEIVER. | |
struct sockaddr_in | mLocalIPv4Addr |
Local IPv4 Address struct. | |
struct sockaddr_in | mPeerIPv4Addr |
Peer IPv4 Address struct. | |
size_t | mAudioPacketSize |
Packet audio part size. |
Static Private Attributes | |
static int | sClientsRunning |
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.
|
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 |
|
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.
|
inlinevirtual |
Stops the execution of the Thread.
|
private |
Packet audio part size.
|
protected |
Boolean that indicates if a packet was received.
|
protected |
Boolean to indicate if the RECEIVER is waiting to obtain peer address.
|
protected |
|
private |
Local IPv4 Address struct.
|
private |
Local Port number to Bind.
|
private |
Peer IPv4 Address struct.
|
private |
Peer Port number to Bind.
|
private |
Run mode, either SENDER or RECEIVER.
|
protected |
Boolean stop the execution of the thread.
|
staticprivate |
Number of clients running to check for ports already used