20 #ifndef __JackEngine__    21 #define __JackEngine__    23 #include "JackConstants.h"    24 #include "JackGraphManager.h"    25 #include "JackSynchro.h"    26 #include "JackMutex.h"    27 #include "JackTransportEngine.h"    28 #include "JackPlatformPlug.h"    29 #include "JackRequest.h"    30 #include "JackChannel.h"    36 class JackClientInterface;
    37 struct JackEngineControl;
    38 class JackExternalClient;
    52         char fSelfConnectMode;
    57         jack_time_t fLastSwitchUsecs;
    59         int fSessionPendingReplies;
    62         std::map<int,std::string> fReservationMap;
    65         int ClientCloseAux(
int refnum, 
bool wait);
    66         void CheckXRun(jack_time_t callback_usecs);
    69         void NotifyRemoveClient(
const char* name, 
int refnum);
    71         void ProcessNext(jack_time_t callback_usecs);
    72         void ProcessCurrent(jack_time_t callback_usecs);
    74         bool ClientCheckName(
const char* name);
    75         bool GenerateUniqueName(
char* name);
    78         void ReleaseRefnum(
int refnum);
    80         int ClientNotify(
JackClientInterface* client, 
int refnum, 
const char* name, 
int notify, 
int sync, 
const char* message, 
int value1, 
int value2);
    82         void NotifyClient(
int refnum, 
int event, 
int sync, 
const char*  message, 
int value1, 
int value2);
    83         void NotifyClients(
int event, 
int sync, 
const char*  message,  
int value1, 
int value2);
    85         void NotifyPortRegistation(jack_port_id_t port_index, 
bool onoff);
    86         void NotifyPortConnect(jack_port_id_t src, jack_port_id_t dst, 
bool onoff);
    87         void NotifyPortRename(jack_port_id_t src, 
const char* old_name);
    88         void NotifyActivate(
int refnum);
    91         void EnsureUUID(
int uuid);
    93         bool CheckClient(
int refnum)
    95             return (refnum >= 0 && refnum < CLIENT_NUM && fClientTable[refnum] != NULL);
    98         int CheckPortsConnect(
int refnum, jack_port_id_t src, jack_port_id_t dst);
   109         int ClientCheck(
const char* name, 
int uuid, 
char* name_res, 
int protocol, 
int options, 
int* status);
   111         int ClientExternalOpen(
const char* name, 
int pid, 
int uuid, 
int* ref, 
int* shared_engine, 
int* shared_client, 
int* shared_graph_manager);
   114         int ClientExternalClose(
int refnum);
   115         int ClientInternalClose(
int refnum, 
bool wait);
   117         int ClientActivate(
int refnum, 
bool is_real_time);
   118         int ClientDeactivate(
int refnum);
   120         void ClientKill(
int refnum);
   122         int GetClientPID(
const char* name);
   123         int GetClientRefNum(
const char* name);
   126         int GetInternalClientName(
int int_ref, 
char* name_res);
   127         int InternalClientHandle(
const char* client_name, 
int* status, 
int* int_ref);
   128         int InternalClientUnload(
int refnum, 
int* status);
   131         int PortRegister(
int refnum, 
const char* name, 
const char *type, 
unsigned int flags, 
unsigned int buffer_size, jack_port_id_t* port);
   132         int PortUnRegister(
int refnum, jack_port_id_t port);
   134         int PortConnect(
int refnum, 
const char* src, 
const char* dst);
   135         int PortDisconnect(
int refnum, 
const char* src, 
const char* dst);
   137         int PortConnect(
int refnum, jack_port_id_t src, jack_port_id_t dst);
   138         int PortDisconnect(
int refnum, jack_port_id_t src, jack_port_id_t dst);
   140         int PortRename(
int refnum, jack_port_id_t port, 
const char* name);
   142         int ComputeTotalLatencies();
   145         bool Process(jack_time_t cur_cycle_begin, jack_time_t prev_cycle_end);
   148         void NotifyDriverXRun();
   149         void NotifyClientXRun(
int refnum);
   150         void NotifyFailure(
int code, 
const char* reason);
   151         void NotifyGraphReorder();
   152         void NotifyBufferSize(jack_nframes_t buffer_size);
   153         void NotifySampleRate(jack_nframes_t sample_rate);
   154         void NotifyFreewheel(
bool onoff);
   159         int SessionReply(
int refnum);
   161         int GetUUIDForClientName(
const char *client_name, 
char *uuid_res);
   162         int GetClientNameForUUID(
const char *uuid, 
char *name_res);
   163         int ReserveClientName(
const char *name, 
const char *uuid);
   164         int ClientHasSessionCallback(
const char *name);
 
Locked Engine, access to methods is serialized using a mutex. 
A synchronization primitive built using a condition variable. 
Inter process synchronization using POSIX semaphore. 
Base class for "lockable" objects. 
Graph manager: contains the connection manager and the port array. 
JackServerNotifyChannel using sockets. 
Engine control in shared memory.