JackTrip
DataProtocol.h
Go to the documentation of this file.
1 //*****************************************************************
2 /*
3  JackTrip: A System for High-Quality Audio Network Performance
4  over the Internet
5 
6  Copyright (c) 2008 Juan-Pablo Caceres, Chris Chafe.
7  SoundWIRE group at CCRMA, Stanford University.
8 
9  Permission is hereby granted, free of charge, to any person
10  obtaining a copy of this software and associated documentation
11  files (the "Software"), to deal in the Software without
12  restriction, including without limitation the rights to use,
13  copy, modify, merge, publish, distribute, sublicense, and/or sell
14  copies of the Software, and to permit persons to whom the
15  Software is furnished to do so, subject to the following
16  conditions:
17 
18  The above copyright notice and this permission notice shall be
19  included in all copies or substantial portions of the Software.
20 
21  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
22  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
23  OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
24  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
25  HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
26  WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
27  FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
28  OTHER DEALINGS IN THE SOFTWARE.
29 */
30 //*****************************************************************
31 
38 #ifndef __DATAPROTOCOL_H__
39 #define __DATAPROTOCOL_H__
40 
41 //#include <sys/socket.h> //basic socket definitions
42 #include <netinet/in.h> //sockaddr_in{} and other Internet defns
43 #include <arpa/inet.h> //inet(3) functions
44 #include <netdb.h>
45 #include <tr1/memory> //for shared_ptr
46 
47 #include <QThread>
48 #include <QHostAddress>
49 
50 class JackTrip; // forward declaration
51 
52 
83 class DataProtocol : public QThread
84 {
85 public:
86 
87  //----------ENUMS------------------------------------------
93  };
94 
96  enum runModeT {
99  };
100  //---------------------------------------------------------
101 
102 
111  DataProtocol(JackTrip* jacktrip,
112  const runModeT runmode,
113  int bind_port, int peer_port);
114 
116  virtual ~DataProtocol();
117 
123  virtual void run() = 0;
124 
126  virtual void stop() { mStopped = true; };
127 
131  void setAudioPacketSize(const size_t size_bytes){ mAudioPacketSize = size_bytes; };
132 
137 
142  virtual void setPeerAddress(const char* peerHostOrIP) = 0;
143 
148  virtual void setPeerPort(int port) = 0;
149 
150  //virtual void getPeerAddressFromFirstPacket(QHostAddress& peerHostAddress,
151  // uint16_t& port) = 0;
152 
153 protected:
154 
158  runModeT getRunMode() const { return mRunMode; };
159 
161  volatile bool mStopped;
163  volatile bool mHasPeerAddress;
165  volatile bool mHasPacketsToReceive;
166 
167 
168 private:
169 
171  int mPeerPort;
173 
174  struct sockaddr_in mLocalIPv4Addr;
175  struct sockaddr_in mPeerIPv4Addr;
176 
179  static int sClientsRunning;
180 
182 
183 
185 protected:
186  //PacketHeader* mHeader; ///< Packet Header
188 
189 };
190 
191 #endif
Empty Header.
Definition: DataProtocol.h:92
Set class as a Sender (send packets)
Definition: DataProtocol.h:97
volatile bool mHasPeerAddress
Boolean to indicate if the RECEIVER is waiting to obtain peer address.
Definition: DataProtocol.h:163
int mPeerPort
Peer Port number to Bind.
Definition: DataProtocol.h:171
virtual void setPeerAddress(const char *peerHostOrIP)=0
Set the peer address.
JackTrip * mJackTrip
JackTrip mediator class.
Definition: DataProtocol.h:187
int mLocalPort
Local Port number to Bind.
Definition: DataProtocol.h:170
packetHeaderTypeT
Enum to define packet header types.
Definition: DataProtocol.h:89
virtual void setPeerPort(int port)=0
Set the peer incomming (receiving) port number.
Header to use with Jamlinks.
Definition: DataProtocol.h:91
DataProtocol(JackTrip *jacktrip, const runModeT runmode, int bind_port, int peer_port)
The class constructor.
Definition: DataProtocol.cpp:52
volatile bool mHasPacketsToReceive
Boolean that indicates if a packet was received.
Definition: DataProtocol.h:165
virtual ~DataProtocol()
The class destructor.
Definition: DataProtocol.cpp:60
void setAudioPacketSize(const size_t size_bytes)
Sets the size of the audio part of the packets.
Definition: DataProtocol.h:131
Base class that defines the transmission protocol.
Definition: DataProtocol.h:83
virtual void stop()
Stops the execution of the Thread.
Definition: DataProtocol.h:126
virtual void run()=0
Implements the thread loop.
size_t getAudioPacketSizeInBites()
Get the size of the audio part of the packets.
Definition: DataProtocol.h:136
Default application header.
Definition: DataProtocol.h:90
runModeT getRunMode() const
Get the Run Mode of the object.
Definition: DataProtocol.h:158
static int sClientsRunning
Definition: DataProtocol.h:179
struct sockaddr_in mLocalIPv4Addr
Local IPv4 Address struct.
Definition: DataProtocol.h:174
size_t mAudioPacketSize
Packet audio part size.
Definition: DataProtocol.h:181
runModeT
Enum to define class modes, SENDER or RECEIVER.
Definition: DataProtocol.h:96
volatile bool mStopped
Boolean stop the execution of the thread.
Definition: DataProtocol.h:158
struct sockaddr_in mPeerIPv4Addr
Peer IPv4 Address struct.
Definition: DataProtocol.h:175
Main class to creates a SERVER (to listen) or a CLIENT (to connect to a listening server) to send aud...
Definition: JackTrip.h:59
Set class as a Receiver (receives packets)
Definition: DataProtocol.h:98
const runModeT mRunMode
Run mode, either SENDER or RECEIVER.
Definition: DataProtocol.h:172