20 #ifndef __JACKNETMANAGER_H__
21 #define __JACKNETMANAGER_H__
23 #include "JackNetInterface.h"
30 class JackNetMasterManager;
36 typedef std::list<std::pair<std::string, std::string> > connections_list_t;
44 static int SetProcess(jack_nframes_t nframes,
void* arg);
45 static int SetBufferSize(jack_nframes_t nframes,
void* arg);
46 static int SetSampleRate(jack_nframes_t nframes,
void* arg);
47 static void SetTimebaseCallback(jack_transport_state_t state, jack_nframes_t nframes,
jack_position_t* pos,
int new_pos,
void* arg);
48 static void SetConnectCallback(jack_port_id_t a, jack_port_id_t b,
int connect,
void* arg);
49 static void LatencyCallback(jack_latency_callback_mode_t mode,
void* arg);
52 jack_client_t* fClient;
56 jack_port_t** fAudioCapturePorts;
57 jack_port_t** fAudioPlaybackPorts;
58 jack_port_t** fMidiCapturePorts;
59 jack_port_t** fMidiPlaybackPorts;
62 int fLastTransportState;
66 jack_time_t fPeriodUsecs;
70 bool Init(
bool auto_connect);
75 void EncodeTransportData();
76 void DecodeTransportData();
81 void ConnectCallback(jack_port_id_t a, jack_port_id_t b,
int connect);
83 void SaveConnections(connections_list_t& connections);
84 void LoadConnections(
const connections_list_t& connections);
91 bool IsSlaveReadyToRoll();
94 typedef std::list<JackNetMaster*> master_list_t;
95 typedef master_list_t::iterator master_list_it_t;
96 typedef std::map <std::string, connections_list_t> master_connections_list_t;
108 static void SetShutDown(
void* arg);
109 static int SetSyncCallback(jack_transport_state_t state,
jack_position_t* pos,
void* arg);
110 static void* NetManagerThread(
void* arg);
112 jack_client_t* fClient;
114 char fMulticastIP[32];
116 jack_native_thread_t fThread;
117 master_list_t fMasterList;
118 master_connections_list_t fMasterConnectionList;
126 master_list_it_t FindMaster(uint32_t client_id);
129 int CountIO(
const char* type,
int flags);
Generic monitoring class. Saves data to GnuPlot files ('.plt' and '.log' datafile) ...
This structure containes master/slave connection parameters, it's used to setup the whole system...