20 #ifndef __JackNetInterface__
21 #define __JackNetInterface__
23 #include "JackNetTool.h"
28 #define DEFAULT_MULTICAST_IP "225.3.19.154"
29 #define DEFAULT_PORT 19000
30 #define DEFAULT_MTU 1500
32 #define SLAVE_SETUP_RETRY 5
34 #define MANAGER_INIT_TIMEOUT 2000000 // in usec
35 #define MASTER_INIT_TIMEOUT 1000000 // in usec
36 #define SLAVE_INIT_TIMEOUT 1000000 // in usec
38 #define NETWORK_MAX_LATENCY 20
53 char fMulticastIP[32];
76 int SetNetBufferSize();
77 void FreeNetworkBuffers();
80 virtual bool SetParams();
81 virtual bool Init() = 0;
84 virtual void EncodeTransportData() = 0;
85 virtual void DecodeTransportData() = 0;
88 virtual void EncodeSyncPacket() = 0;
89 virtual void DecodeSyncPacket() = 0;
91 virtual int SyncRecv() = 0;
92 virtual int SyncSend() = 0;
93 virtual int DataRecv() = 0;
94 virtual int DataSend() = 0;
96 virtual int Send(
size_t size,
int flags) = 0;
97 virtual int Recv(
size_t size,
int flags) = 0;
99 virtual void FatalRecvError() = 0;
100 virtual void FatalSendError() = 0;
102 int MidiSend(
NetMidiBuffer* buffer,
int midi_channnels,
int audio_channels);
133 int fCurrentCycleOffset;
135 int fLastfCycleOffset;
150 void EncodeSyncPacket();
151 void DecodeSyncPacket();
153 int Send(
size_t size,
int flags);
154 int Recv(
size_t size,
int flags);
158 void FatalRecvError();
159 void FatalSendError();
182 static uint fSlaveCounter;
185 bool InitConnection(
int time_out_sec);
186 bool InitRendering();
188 net_status_t SendAvailableToMaster(
long count = LONG_MAX);
189 net_status_t SendStartToMaster();
200 void EncodeSyncPacket();
201 void DecodeSyncPacket();
203 int Recv(
size_t size,
int flags);
204 int Send(
size_t size,
int flags);
206 void FatalRecvError();
207 void FatalSendError();
212 if (fSlaveCounter++ == 0) {
213 if (SocketAPIInit() < 0) {
214 jack_error(
"Can't init Socket API, exiting...");
215 throw std::bad_alloc();
235 if (--fSlaveCounter == 0) {