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"
34 class JackClientInterface;
35 struct JackEngineControl;
36 class JackExternalClient;
54 jack_time_t fLastSwitchUsecs;
56 int fSessionPendingReplies;
59 std::map<int,std::string> fReservationMap;
63 void CheckXRun(jack_time_t callback_usecs);
66 void NotifyRemoveClient(
const char* name,
int refnum);
68 void ProcessNext(jack_time_t callback_usecs);
69 void ProcessCurrent(jack_time_t callback_usecs);
71 bool ClientCheckName(
const char* name);
72 bool GenerateUniqueName(
char* name);
75 void ReleaseRefnum(
int ref);
77 void NotifyClient(
int refnum,
int event,
int sync,
const char* message,
int value1,
int value2);
78 void NotifyClients(
int event,
int sync,
const char* message,
int value1,
int value2);
80 void NotifyPortRegistation(jack_port_id_t port_index,
bool onoff);
81 void NotifyPortConnect(jack_port_id_t src, jack_port_id_t dst,
bool onoff);
82 void NotifyPortRename(jack_port_id_t src,
const char* old_name);
83 void NotifyActivate(
int refnum);
86 void EnsureUUID(
int uuid);
88 bool CheckClient(
int refnum)
90 return (refnum >= 0 && refnum < CLIENT_NUM && fClientTable[refnum] != NULL);
102 int ClientCheck(
const char* name,
int uuid,
char* name_res,
int protocol,
int options,
int* status);
103 int ClientExternalOpen(
const char* name,
int pid,
int uuid,
int* ref,
int* shared_engine,
int* shared_client,
int* shared_graph_manager);
106 int ClientExternalClose(
int refnum);
107 int ClientInternalClose(
int refnum,
bool wait);
109 int ClientActivate(
int refnum,
bool is_real_time);
110 int ClientDeactivate(
int refnum);
112 int GetClientPID(
const char* name);
113 int GetClientRefNum(
const char* name);
116 int GetInternalClientName(
int int_ref,
char* name_res);
117 int InternalClientHandle(
const char* client_name,
int* status,
int* int_ref);
118 int InternalClientUnload(
int refnum,
int* status);
121 int PortRegister(
int refnum,
const char* name,
const char *type,
unsigned int flags,
unsigned int buffer_size, jack_port_id_t* port);
122 int PortUnRegister(
int refnum, jack_port_id_t port);
124 int PortConnect(
int refnum,
const char* src,
const char* dst);
125 int PortDisconnect(
int refnum,
const char* src,
const char* dst);
127 int PortConnect(
int refnum, jack_port_id_t src, jack_port_id_t dst);
128 int PortDisconnect(
int refnum, jack_port_id_t src, jack_port_id_t dst);
130 int PortRename(
int refnum, jack_port_id_t port,
const char* name);
132 int ComputeTotalLatencies();
135 bool Process(jack_time_t cur_cycle_begin, jack_time_t prev_cycle_end);
138 void NotifyXRun(jack_time_t callback_usecs,
float delayed_usecs);
139 void NotifyFailure(
int code,
const char* reason);
140 void NotifyXRun(
int refnum);
141 void NotifyGraphReorder();
142 void NotifyBufferSize(jack_nframes_t buffer_size);
143 void NotifySampleRate(jack_nframes_t sample_rate);
144 void NotifyFreewheel(
bool onoff);
149 void SessionReply(
int refnum);
151 void GetUUIDForClientName(
const char *client_name,
char *uuid_res,
int *result);
152 void GetClientNameForUUID(
const char *uuid,
char *name_res,
int *result);
153 void ReserveClientName(
const char *name,
const char *uuid,
int *result);
154 void ClientHasSessionCallback(
const char *name,
int *result);