21 #ifndef __JackClient__    22 #define __JackClient__    24 #include "JackClientInterface.h"    25 #include "JackThread.h"    26 #include "JackConstants.h"    27 #include "JackSynchro.h"    28 #include "JackPlatformPlug.h"    29 #include "JackChannel.h"    30 #include "JackRequest.h"    37 class JackGraphManager;
    40 struct JackClientControl;
    41 struct JackEngineControl;
    53         JackProcessCallback fProcess;
    54         JackGraphOrderCallback fGraphOrder;
    55         JackXRunCallback fXrun;
    56         JackShutdownCallback fShutdown;
    57         JackInfoShutdownCallback fInfoShutdown;
    58         JackThreadInitCallback fInit;
    59         JackBufferSizeCallback fBufferSize;
    60         JackSampleRateCallback fSampleRate;
    61         JackClientRegistrationCallback fClientRegistration;
    62         JackFreewheelCallback fFreewheel;
    63         JackPortRegistrationCallback fPortRegistration;
    64         JackPortConnectCallback fPortConnect;
    65         JackPortRenameCallback fPortRename;
    66         JackTimebaseCallback fTimebase;
    67         JackSyncCallback fSync;
    68         JackThreadCallback fThreadFun;
    70         JackLatencyCallback fLatency;
    76         void* fInfoShutdownArg;
    80         void* fClientRegistrationArg;
    82         void* fPortRegistrationArg;
    83         void* fPortConnectArg;
    90         char fServerName[JACK_SERVER_NAME_SIZE+1];
    95         std::list<jack_port_id_t> fPortList;
    97         JackSessionReply fSessionReply;
   100         void SetupDriverSync(
bool freewheel);
   103         void CallSyncCallback();
   104         void CallTimebaseCallback();
   106         virtual int ClientNotifyImp(
int refnum, 
const char* name, 
int notify, 
int sync, 
const char* message, 
int value1, 
int value);
   108         inline void DummyCycle();
   109         inline void ExecuteThread();
   110         inline bool WaitSync();
   111         inline void SignalSync();
   112         inline int CallProcessCallback();
   115         inline jack_nframes_t CycleWaitAux();
   116         inline void CycleSignalAux(
int status);
   117         inline void CallSyncCallbackAux();
   118         inline void CallTimebaseCallbackAux();
   119         inline int ActivateAux();
   120         inline void InitAux();
   121         inline void SetupRealTime();
   123         int HandleLatencyCallback(
int status);
   130         virtual int Open(
const char* server_name, 
const char* name, 
int uuid, jack_options_t options, jack_status_t* status) = 0;
   137         virtual int ClientNotify(
int refnum, 
const char* name, 
int notify, 
int sync, 
const char* message, 
int value1, 
int value2);
   139         virtual int Activate();
   140         virtual int Deactivate();
   143         virtual int SetBufferSize(jack_nframes_t buffer_size);
   144         virtual int SetFreeWheel(
int onoff);
   145         virtual int ComputeTotalLatencies();
   146         virtual void ShutDown(jack_status_t code, 
const char* message);
   147         virtual jack_native_thread_t GetThreadID();
   150         virtual int PortRegister(
const char* port_name, 
const char* port_type, 
unsigned long flags, 
unsigned long buffer_size);
   151         virtual int PortUnRegister(jack_port_id_t port);
   153         virtual int PortConnect(
const char* src, 
const char* dst);
   154         virtual int PortDisconnect(
const char* src, 
const char* dst);
   155         virtual int PortDisconnect(jack_port_id_t src);
   157         virtual int PortIsMine(jack_port_id_t port_index);
   158         virtual int PortRename(jack_port_id_t port_index, 
const char* name);
   161         virtual int ReleaseTimebase();
   162         virtual int SetSyncCallback(JackSyncCallback sync_callback, 
void* arg);
   163         virtual int SetSyncTimeout(jack_time_t timeout);
   164         virtual int SetTimebaseCallback(
int conditional, JackTimebaseCallback timebase_callback, 
void* arg);
   165         virtual void TransportLocate(jack_nframes_t frame);
   167         virtual jack_nframes_t GetCurrentTransportFrame();
   169         virtual void TransportStart();
   170         virtual void TransportStop();
   173         virtual void OnShutdown(JackShutdownCallback callback, 
void *arg);
   174         virtual void OnInfoShutdown(JackInfoShutdownCallback callback, 
void *arg);
   175         virtual int SetProcessCallback(JackProcessCallback callback, 
void* arg);
   176         virtual int SetXRunCallback(JackXRunCallback callback, 
void* arg);
   177         virtual int SetInitCallback(JackThreadInitCallback callback, 
void* arg);
   178         virtual int SetGraphOrderCallback(JackGraphOrderCallback callback, 
void* arg);
   179         virtual int SetBufferSizeCallback(JackBufferSizeCallback callback, 
void* arg);
   180         virtual int SetSampleRateCallback(JackBufferSizeCallback callback, 
void* arg);
   181         virtual int SetClientRegistrationCallback(JackClientRegistrationCallback callback, 
void* arg);
   182         virtual int SetFreewheelCallback(JackFreewheelCallback callback, 
void* arg);
   183         virtual int SetPortRegistrationCallback(JackPortRegistrationCallback callback, 
void* arg);
   184         virtual int SetPortConnectCallback(JackPortConnectCallback callback, 
void *arg);
   185         virtual int SetPortRenameCallback(JackPortRenameCallback callback, 
void *arg);
   187         virtual int SetLatencyCallback(JackLatencyCallback callback, 
void *arg);
   190         virtual char* GetInternalClientName(
int ref);
   191         virtual int InternalClientHandle(
const char* client_name, jack_status_t* status);
   192         virtual int InternalClientLoad(
const char* client_name, jack_options_t options, jack_status_t* status, 
jack_varargs_t* va);
   193         virtual void InternalClientUnload(
int ref, jack_status_t* status);
   196         jack_nframes_t CycleWait();
   197         void CycleSignal(
int status);
   198         virtual int SetProcessThread(JackThreadCallback fun, 
void *arg);
   201         virtual jack_session_command_t* SessionNotify(
const char* target, jack_session_event_type_t type, 
const char* path);
   203         virtual char* GetUUIDForClientName(
const char* client_name);
   204         virtual char* GetClientNameByUUID(
const char* uuid);
   205         virtual int ReserveClientName(
const char* client_name, 
const char* uuid);
   206         virtual int ClientHasSessionCallback(
const char* client_name);
 
Inter process channel for server/client bidirectionnal communication : request and (receiving) notifi...
The base class for runnable objects, that have an  Init  and  Execute  method to be called in a threa...
Inter process synchronization using POSIX semaphore.
Graph manager: contains the connection manager and the port array.
A "decorator" debug client to validate API use.
Engine control in shared memory.
detail::JackClientChannelInterface * fChannel
void(* JackSessionCallback)(jack_session_event_t *event, void *arg)
The base class for clients: share part of the implementation for JackInternalClient and JackLibClient...
Darwin threads. Real-time threads are actually "time constraint" threads.