git-svn-id: http://subversion.jackaudio.org/jack/jack2/trunk/jackmp@3653 0c269be4-1314-0410-8aa9-9f06e86f4224tags/v1.9.4
@@ -24,6 +24,10 @@ Paul Davis | |||
--------------------------- | |||
Jackdmp changes log | |||
--------------------------- | |||
2009-10-20 Stephane Letz <letz@grame.fr> | |||
* Add a string parameter to server ==> client notification, add a new "InfoShutdown" callback. | |||
2009-10-17 Stephane Letz <letz@grame.fr> | |||
@@ -72,6 +72,8 @@ extern "C" | |||
EXPORT int jack_is_realtime (jack_client_t *client); | |||
EXPORT void jack_on_shutdown (jack_client_t *client, | |||
JackShutdownCallback shutdown_callback, void *arg); | |||
EXPORT void jack_on_info_shutdown (jack_client_t *client, | |||
JackInfoShutdownCallback shutdown_callback, void *arg); | |||
EXPORT int jack_set_process_callback (jack_client_t *client, | |||
JackProcessCallback process_callback, | |||
void *arg); | |||
@@ -812,6 +814,7 @@ EXPORT void jack_on_shutdown(jack_client_t* ext_client, JackShutdownCallback cal | |||
JackLibGlobals::CheckContext(); | |||
#endif | |||
JackClient* client = (JackClient*)ext_client; | |||
jack_error("jack_on_shutdown: deprecated, use jack_on_info_shutdown"); | |||
if (client == NULL) { | |||
jack_error("jack_on_shutdown called with a NULL client"); | |||
} else { | |||
@@ -819,6 +822,19 @@ EXPORT void jack_on_shutdown(jack_client_t* ext_client, JackShutdownCallback cal | |||
} | |||
} | |||
EXPORT void jack_on_info_shutdown(jack_client_t* ext_client, JackInfoShutdownCallback callback, void* arg) | |||
{ | |||
#ifdef __CLIENTDEBUG__ | |||
JackLibGlobals::CheckContext(); | |||
#endif | |||
JackClient* client = (JackClient*)ext_client; | |||
if (client == NULL) { | |||
jack_error("jack_on_info_shutdown called with a NULL client"); | |||
} else { | |||
client->OnInfoShutdown(callback, arg); | |||
} | |||
} | |||
EXPORT int jack_set_process_callback(jack_client_t* ext_client, JackProcessCallback callback, void* arg) | |||
{ | |||
#ifdef __CLIENTDEBUG__ | |||
@@ -49,6 +49,7 @@ JackClient::JackClient(JackSynchro* table):fThread(this) | |||
fGraphOrder = NULL; | |||
fXrun = NULL; | |||
fShutdown = NULL; | |||
fInfoShutdown = NULL; | |||
fInit = NULL; | |||
fBufferSize = NULL; | |||
fClientRegistration = NULL; | |||
@@ -63,6 +64,7 @@ JackClient::JackClient(JackSynchro* table):fThread(this) | |||
fGraphOrderArg = NULL; | |||
fXrunArg = NULL; | |||
fShutdownArg = NULL; | |||
fInfoShutdownArg = NULL; | |||
fInitArg = NULL; | |||
fBufferSizeArg = NULL; | |||
fFreewheelArg = NULL; | |||
@@ -132,12 +134,12 @@ void JackClient::SetupDriverSync(bool freewheel) | |||
\brief Notification received from the server. | |||
*/ | |||
int JackClient::ClientNotifyImp(int refnum, const char* name, int notify, int sync, int value1, int value2) | |||
int JackClient::ClientNotifyImp(int refnum, const char* name, int notify, int sync, const char* message, int value1, int value2) | |||
{ | |||
return 0; | |||
} | |||
int JackClient::ClientNotify(int refnum, const char* name, int notify, int sync, int value1, int value2) | |||
int JackClient::ClientNotify(int refnum, const char* name, int notify, int sync, const char* message, int value1, int value2) | |||
{ | |||
int res = 0; | |||
@@ -145,11 +147,11 @@ int JackClient::ClientNotify(int refnum, const char* name, int notify, int sync, | |||
switch (notify) { | |||
case kAddClient: | |||
res = ClientNotifyImp(refnum, name, notify, sync, value1, value2); | |||
res = ClientNotifyImp(refnum, name, notify, sync, message, value1, value2); | |||
break; | |||
case kRemoveClient: | |||
res = ClientNotifyImp(refnum, name, notify, sync, value1, value2); | |||
res = ClientNotifyImp(refnum, name, notify, sync, message, value1, value2); | |||
break; | |||
case kActivateClient: | |||
@@ -247,6 +249,12 @@ int JackClient::ClientNotify(int refnum, const char* name, int notify, int sync, | |||
if (fXrun) | |||
res = fXrun(fXrunArg); | |||
break; | |||
case kShutDownCallback: | |||
jack_log("JackClient::kShutDownCallback"); | |||
if (fInfoShutdown) | |||
fInfoShutdown(message, fInfoShutdownArg); | |||
break; | |||
} | |||
} | |||
@@ -582,7 +590,10 @@ void JackClient::ShutDown() | |||
jack_log("ShutDown"); | |||
JackGlobals::fServerRunning = false; | |||
if (fShutdown) { | |||
if (fInfoShutdown) { | |||
fInfoShutdown("JACK server has been closed", fInfoShutdownArg); | |||
fInfoShutdown = NULL; | |||
} else if (fShutdown) { | |||
fShutdown(fShutdownArg); | |||
fShutdown = NULL; | |||
} | |||
@@ -772,6 +783,16 @@ void JackClient::OnShutdown(JackShutdownCallback callback, void *arg) | |||
fShutdown = callback; | |||
} | |||
} | |||
void JackClient::OnInfoShutdown(JackInfoShutdownCallback callback, void *arg) | |||
{ | |||
if (IsActive()) { | |||
jack_error("You cannot set callbacks on an active client"); | |||
} else { | |||
fInfoShutdownArg = arg; | |||
fInfoShutdown = callback; | |||
} | |||
} | |||
int JackClient::SetProcessCallback(JackProcessCallback callback, void *arg) | |||
{ | |||
@@ -54,6 +54,7 @@ class JackClient : public JackClientInterface, public JackRunnableInterface | |||
JackGraphOrderCallback fGraphOrder; | |||
JackXRunCallback fXrun; | |||
JackShutdownCallback fShutdown; | |||
JackInfoShutdownCallback fInfoShutdown; | |||
JackThreadInitCallback fInit; | |||
JackBufferSizeCallback fBufferSize; | |||
JackSampleRateCallback fSampleRate; | |||
@@ -70,6 +71,7 @@ class JackClient : public JackClientInterface, public JackRunnableInterface | |||
void* fGraphOrderArg; | |||
void* fXrunArg; | |||
void* fShutdownArg; | |||
void* fInfoShutdownArg; | |||
void* fInitArg; | |||
void* fBufferSizeArg; | |||
void* fSampleRateArg; | |||
@@ -95,7 +97,7 @@ class JackClient : public JackClientInterface, public JackRunnableInterface | |||
void CallSyncCallback(); | |||
void CallTimebaseCallback(); | |||
virtual int ClientNotifyImp(int refnum, const char* name, int notify, int sync, int value1, int value); | |||
virtual int ClientNotifyImp(int refnum, const char* name, int notify, int sync, const char* message, int value1, int value); | |||
inline void DummyCycle(); | |||
inline void ExecuteThread(); | |||
@@ -123,7 +125,7 @@ class JackClient : public JackClientInterface, public JackRunnableInterface | |||
virtual JackEngineControl* GetEngineControl() const = 0; | |||
// Notifications | |||
virtual int ClientNotify(int refnum, const char* name, int notify, int sync, int value1, int value2); | |||
virtual int ClientNotify(int refnum, const char* name, int notify, int sync, const char* message, int value1, int value2); | |||
virtual int Activate(); | |||
virtual int Deactivate(); | |||
@@ -159,6 +161,7 @@ class JackClient : public JackClientInterface, public JackRunnableInterface | |||
// Callbacks | |||
virtual void OnShutdown(JackShutdownCallback callback, void *arg); | |||
virtual void OnInfoShutdown(JackInfoShutdownCallback callback, void *arg); | |||
virtual int SetProcessCallback(JackProcessCallback callback, void* arg); | |||
virtual int SetXRunCallback(JackXRunCallback callback, void* arg); | |||
virtual int SetInitCallback(JackThreadInitCallback callback, void* arg); | |||
@@ -44,7 +44,7 @@ class SERVER_EXPORT JackClientInterface | |||
virtual int Close() = 0; | |||
virtual int ClientNotify(int refnum, const char* name, int notify, int sync, int value1, int value2) = 0; | |||
virtual int ClientNotify(int refnum, const char* name, int notify, int sync, const char* message, int value1, int value2) = 0; | |||
virtual JackClientControl* GetClientControl() const = 0; | |||
}; | |||
@@ -32,6 +32,7 @@ | |||
#define JACK_PORT_TYPE_SIZE 32 | |||
#define JACK_CLIENT_NAME_SIZE 64 | |||
#define JACK_MESSAGE_SIZE 512 | |||
#ifndef PORT_NUM | |||
#define PORT_NUM 1024 | |||
@@ -139,10 +139,10 @@ JackEngineControl* JackDebugClient::GetEngineControl() const | |||
\brief Notification received from the server. | |||
*/ | |||
int JackDebugClient::ClientNotify(int refnum, const char* name, int notify, int sync, int value1, int value2) | |||
int JackDebugClient::ClientNotify(int refnum, const char* name, int notify, int sync, const char* message, int value1, int value2) | |||
{ | |||
CheckClient(); | |||
return fClient->ClientNotify( refnum, name, notify, sync, value1, value2); | |||
return fClient->ClientNotify( refnum, name, notify, sync, message, value1, value2); | |||
} | |||
int JackDebugClient::Activate() | |||
@@ -416,6 +416,12 @@ void JackDebugClient::OnShutdown(JackShutdownCallback callback, void *arg) | |||
fClient->OnShutdown(callback, arg); | |||
} | |||
void JackDebugClient::OnInfoShutdown(JackInfoShutdownCallback callback, void *arg) | |||
{ | |||
CheckClient(); | |||
fClient->OnInfoShutdown(callback, arg); | |||
} | |||
int JackDebugClient::TimeCallback(jack_nframes_t nframes, void *arg) | |||
{ | |||
JackDebugClient* client = (JackDebugClient*)arg; | |||
@@ -75,7 +75,7 @@ class JackDebugClient : public JackClient | |||
virtual JackEngineControl* GetEngineControl() const; | |||
// Notifications | |||
int ClientNotify(int refnum, const char* name, int notify, int sync, int value1, int value2); | |||
int ClientNotify(int refnum, const char* name, int notify, int sync, const char* message, int value1, int value2); | |||
int Activate(); | |||
int Deactivate(); | |||
@@ -110,6 +110,7 @@ class JackDebugClient : public JackClient | |||
// Callbacks | |||
void OnShutdown(JackShutdownCallback callback, void *arg); | |||
void OnInfoShutdown(JackInfoShutdownCallback callback, void *arg); | |||
int SetProcessCallback(JackProcessCallback callback, void* arg); | |||
int SetXRunCallback(JackXRunCallback callback, void* arg); | |||
int SetInitCallback(JackThreadInitCallback callback, void* arg); | |||
@@ -190,7 +190,7 @@ void JackDriver::SetupDriverSync(int ref, bool freewheel) | |||
} | |||
} | |||
int JackDriver::ClientNotify(int refnum, const char* name, int notify, int sync, int value1, int value2) | |||
int JackDriver::ClientNotify(int refnum, const char* name, int notify, int sync, const char* message, int value1, int value2) | |||
{ | |||
switch (notify) { | |||
@@ -199,7 +199,7 @@ class SERVER_EXPORT JackDriver : public JackDriverClientInterface | |||
virtual int SetBufferSize(jack_nframes_t buffer_size); | |||
virtual int SetSampleRate(jack_nframes_t sample_rate); | |||
virtual int ClientNotify(int refnum, const char* name, int notify, int sync, int value1, int value2); | |||
virtual int ClientNotify(int refnum, const char* name, int notify, int sync, const char* message, int value1, int value2); | |||
virtual JackClientControl* GetClientControl() const; | |||
virtual bool IsRealTime() const; | |||
@@ -203,7 +203,7 @@ void JackEngine::CheckXRun(jack_time_t callback_usecs) // REVOIR les conditions | |||
// Notifications | |||
//--------------- | |||
void JackEngine::NotifyClient(int refnum, int event, int sync, int value1, int value2) | |||
void JackEngine::NotifyClient(int refnum, int event, int sync, const char* message, int value1, int value2) | |||
{ | |||
JackClientInterface* client = fClientTable[refnum]; | |||
@@ -211,20 +211,20 @@ void JackEngine::NotifyClient(int refnum, int event, int sync, int value1, int v | |||
if (!client) { | |||
jack_log("JackEngine::NotifyClient: client not available anymore"); | |||
} else if (client->GetClientControl()->fCallback[event]) { | |||
if (client->ClientNotify(refnum, client->GetClientControl()->fName, event, sync, value1, value2) < 0) | |||
if (client->ClientNotify(refnum, client->GetClientControl()->fName, event, sync, message, value1, value2) < 0) | |||
jack_error("NotifyClient fails name = %s event = %ld val1 = %ld val2 = %ld", client->GetClientControl()->fName, event, value1, value2); | |||
} else { | |||
jack_log("JackEngine::NotifyClient: no callback for event = %ld", event); | |||
} | |||
} | |||
void JackEngine::NotifyClients(int event, int sync, int value1, int value2) | |||
void JackEngine::NotifyClients(int event, int sync, const char* message, int value1, int value2) | |||
{ | |||
for (int i = 0; i < CLIENT_NUM; i++) { | |||
JackClientInterface* client = fClientTable[i]; | |||
if (client) { | |||
if (client->GetClientControl()->fCallback[event]) { | |||
if (client->ClientNotify(i, client->GetClientControl()->fName, event, sync, value1, value2) < 0) | |||
if (client->ClientNotify(i, client->GetClientControl()->fName, event, sync, message, value1, value2) < 0) | |||
jack_error("NotifyClient fails name = %s event = %ld val1 = %ld val2 = %ld", client->GetClientControl()->fName, event, value1, value2); | |||
} else { | |||
jack_log("JackEngine::NotifyClients: no callback for event = %ld", event); | |||
@@ -240,11 +240,11 @@ int JackEngine::NotifyAddClient(JackClientInterface* new_client, const char* nam | |||
for (int i = 0; i < CLIENT_NUM; i++) { | |||
JackClientInterface* old_client = fClientTable[i]; | |||
if (old_client) { | |||
if (old_client->ClientNotify(refnum, name, kAddClient, true, 0, 0) < 0) { | |||
if (old_client->ClientNotify(refnum, name, kAddClient, true, "", 0, 0) < 0) { | |||
jack_error("NotifyAddClient old_client fails name = %s", old_client->GetClientControl()->fName); | |||
return -1; | |||
} | |||
if (new_client->ClientNotify(i, old_client->GetClientControl()->fName, kAddClient, true, 0, 0) < 0) { | |||
if (new_client->ClientNotify(i, old_client->GetClientControl()->fName, kAddClient, true, "", 0, 0) < 0) { | |||
jack_error("NotifyAddClient new_client fails name = %s", name); | |||
return -1; | |||
} | |||
@@ -260,7 +260,7 @@ void JackEngine::NotifyRemoveClient(const char* name, int refnum) | |||
for (int i = 0; i < CLIENT_NUM; i++) { | |||
JackClientInterface* client = fClientTable[i]; | |||
if (client) { | |||
client->ClientNotify(refnum, name, kRemoveClient, true, 0, 0); | |||
client->ClientNotify(refnum, name, kRemoveClient, true, "",0, 0); | |||
} | |||
} | |||
} | |||
@@ -277,51 +277,51 @@ void JackEngine::NotifyXRun(jack_time_t callback_usecs, float delayed_usecs) | |||
void JackEngine::NotifyXRun(int refnum) | |||
{ | |||
if (refnum == ALL_CLIENTS) { | |||
NotifyClients(kXRunCallback, false, 0, 0); | |||
NotifyClients(kXRunCallback, false, "", 0, 0); | |||
} else { | |||
NotifyClient(refnum, kXRunCallback, false, 0, 0); | |||
NotifyClient(refnum, kXRunCallback, false, "", 0, 0); | |||
} | |||
} | |||
void JackEngine::NotifyGraphReorder() | |||
{ | |||
NotifyClients(kGraphOrderCallback, false, 0, 0); | |||
NotifyClients(kGraphOrderCallback, false, "", 0, 0); | |||
} | |||
void JackEngine::NotifyBufferSize(jack_nframes_t buffer_size) | |||
{ | |||
NotifyClients(kBufferSizeCallback, true, buffer_size, 0); | |||
NotifyClients(kBufferSizeCallback, true, "", buffer_size, 0); | |||
} | |||
void JackEngine::NotifySampleRate(jack_nframes_t sample_rate) | |||
{ | |||
NotifyClients(kSampleRateCallback, true, sample_rate, 0); | |||
NotifyClients(kSampleRateCallback, true, "", sample_rate, 0); | |||
} | |||
void JackEngine::NotifyFreewheel(bool onoff) | |||
{ | |||
fEngineControl->fRealTime = !onoff; | |||
NotifyClients((onoff ? kStartFreewheelCallback : kStopFreewheelCallback), true, 0, 0); | |||
NotifyClients((onoff ? kStartFreewheelCallback : kStopFreewheelCallback), true, "", 0, 0); | |||
} | |||
void JackEngine::NotifyPortRegistation(jack_port_id_t port_index, bool onoff) | |||
{ | |||
NotifyClients((onoff ? kPortRegistrationOnCallback : kPortRegistrationOffCallback), false, port_index, 0); | |||
NotifyClients((onoff ? kPortRegistrationOnCallback : kPortRegistrationOffCallback), false, "", port_index, 0); | |||
} | |||
void JackEngine::NotifyPortRename(jack_port_id_t port) | |||
{ | |||
NotifyClients(kPortRenameCallback, false, port, 0); | |||
NotifyClients(kPortRenameCallback, false, "", port, 0); | |||
} | |||
void JackEngine::NotifyPortConnect(jack_port_id_t src, jack_port_id_t dst, bool onoff) | |||
{ | |||
NotifyClients((onoff ? kPortConnectCallback : kPortDisconnectCallback), false, src, dst); | |||
NotifyClients((onoff ? kPortConnectCallback : kPortDisconnectCallback), false, "", src, dst); | |||
} | |||
void JackEngine::NotifyActivate(int refnum) | |||
{ | |||
NotifyClient(refnum, kActivateClient, true, 0, 0); | |||
NotifyClient(refnum, kActivateClient, true, "", 0, 0); | |||
} | |||
//---------------------------- | |||
@@ -64,8 +64,9 @@ class SERVER_EXPORT JackEngine | |||
int AllocateRefnum(); | |||
void ReleaseRefnum(int ref); | |||
void NotifyClient(int refnum, int event, int sync, int value1, int value2); | |||
void NotifyClients(int event, int sync, int value1, int value2); | |||
void NotifyClient(int refnum, int event, int sync, const char* message, int value1, int value2); | |||
void NotifyClients(int event, int sync, const char* message, int value1, int value2); | |||
void NotifyPortRegistation(jack_port_id_t port_index, bool onoff); | |||
void NotifyPortConnect(jack_port_id_t src, jack_port_id_t dst, bool onoff); | |||
void NotifyPortRename(jack_port_id_t src); | |||
@@ -33,11 +33,11 @@ JackExternalClient::JackExternalClient(): fClientControl(NULL) | |||
JackExternalClient::~JackExternalClient() | |||
{} | |||
int JackExternalClient::ClientNotify(int refnum, const char* name, int notify, int sync, int value1, int value2) | |||
int JackExternalClient::ClientNotify(int refnum, const char* name, int notify, int sync, const char* message, int value1, int value2) | |||
{ | |||
int result = -1; | |||
jack_log("JackExternalClient::ClientNotify ref = %ld name = %s notify = %ld", refnum, name, notify); | |||
fChannel.ClientNotify(refnum, name, notify, sync, value1, value2, &result); | |||
fChannel.ClientNotify(refnum, name, notify, sync, message, value1, value2, &result); | |||
return result; | |||
} | |||
@@ -49,7 +49,7 @@ class JackExternalClient : public JackClientInterface | |||
int Open(const char* name, int pid, int refnum, int* shared_client); | |||
int Close(); | |||
int ClientNotify(int refnum, const char* name, int notify, int sync, int value1, int value2); | |||
int ClientNotify(int refnum, const char* name, int notify, int sync, const char* message, int value1, int value2); | |||
JackClientControl* GetClientControl() const; | |||
}; | |||
@@ -128,7 +128,7 @@ error: | |||
// Notifications received from the server | |||
// TODO this should be done once for all clients in the process, when a shared notification channel | |||
// will be shared by all clients... | |||
int JackLibClient::ClientNotifyImp(int refnum, const char* name, int notify, int sync, int value1, int value2) | |||
int JackLibClient::ClientNotifyImp(int refnum, const char* name, int notify, int sync, const char* message, int value1, int value2) | |||
{ | |||
int res = 0; | |||
@@ -46,7 +46,7 @@ class JackLibClient : public JackClient | |||
int Open(const char* server_name, const char* name, jack_options_t options, jack_status_t* status); | |||
int ClientNotifyImp(int refnum, const char* name, int notify, int sync, int value1, int value2); | |||
int ClientNotifyImp(int refnum, const char* name, int notify, int sync, const char* message, int value1, int value2); | |||
JackGraphManager* GetGraphManager() const; | |||
JackEngineControl* GetEngineControl() const; | |||
@@ -43,6 +43,7 @@ enum NotificationType { | |||
kPortDisconnectCallback = 12, | |||
kPortRenameCallback = 13, | |||
kRealTimeCallback = 14, | |||
kShutDownCallback = 15, | |||
kMaxNotification | |||
}; | |||
@@ -1079,13 +1079,15 @@ struct JackClientNotification | |||
int fValue1; | |||
int fValue2; | |||
int fSync; | |||
char fMessage[JACK_MESSAGE_SIZE + 1]; | |||
JackClientNotification(): fNotify(-1), fValue1(-1), fValue2(-1) | |||
{} | |||
JackClientNotification(const char* name, int refnum, int notify, int sync, int value1, int value2) | |||
JackClientNotification(const char* name, int refnum, int notify, int sync, const char* message, int value1, int value2) | |||
: fRefNum(refnum), fNotify(notify), fValue1(value1), fValue2(value2), fSync(sync) | |||
{ | |||
snprintf(fName, sizeof(fName), "%s", name); | |||
snprintf(fMessage, sizeof(fMessage), "%s", message); | |||
} | |||
int Read(JackChannelTransaction* trans) | |||
@@ -1096,6 +1098,7 @@ struct JackClientNotification | |||
CheckRes(trans->Read(&fValue1, sizeof(int))); | |||
CheckRes(trans->Read(&fValue2, sizeof(int))); | |||
CheckRes(trans->Read(&fSync, sizeof(int))); | |||
CheckRes(trans->Read(&fMessage, JACK_MESSAGE_SIZE + 1)); | |||
return 0; | |||
} | |||
@@ -1107,6 +1110,7 @@ struct JackClientNotification | |||
CheckRes(trans->Write(&fValue1, sizeof(int))); | |||
CheckRes(trans->Write(&fValue2, sizeof(int))); | |||
CheckRes(trans->Write(&fSync, sizeof(int))); | |||
CheckRes(trans->Write(&fMessage, JACK_MESSAGE_SIZE + 1)); | |||
return 0; | |||
} | |||
@@ -137,9 +137,9 @@ std::list<JackDriverInterface*> JackThreadedDriver::GetSlaves() | |||
return fDriver->GetSlaves(); | |||
} | |||
int JackThreadedDriver::ClientNotify(int refnum, const char* name, int notify, int sync, int value1, int value2) | |||
int JackThreadedDriver::ClientNotify(int refnum, const char* name, int notify, int sync, const char* message, int value1, int value2) | |||
{ | |||
return fDriver->ClientNotify(refnum, name, notify, sync, value1, value2); | |||
return fDriver->ClientNotify(refnum, name, notify, sync, message, value1, value2); | |||
} | |||
JackClientControl* JackThreadedDriver::GetClientControl() const | |||
@@ -94,7 +94,7 @@ class SERVER_EXPORT JackThreadedDriver : public JackDriverClientInterface, publi | |||
virtual std::list<JackDriverInterface*> GetSlaves(); | |||
virtual int ProcessSlaves(); | |||
virtual int ClientNotify(int refnum, const char* name, int notify, int sync, int value1, int value2); | |||
virtual int ClientNotify(int refnum, const char* name, int notify, int sync, const char* message, int value1, int value2); | |||
virtual JackClientControl* GetClientControl() const; | |||
virtual bool IsRealTime() const; | |||
@@ -282,7 +282,7 @@ int jack_set_thread_init_callback (jack_client_t *client, | |||
* @param function The jack_shutdown function pointer. | |||
* @param arg The arguments for the jack_shutdown function. | |||
* | |||
* Register a function (and argument) to be called if and when the | |||
* @deprecated Register a function (and argument) to be called if and when the | |||
* JACK server shuts down the client thread. The function must | |||
* be written as if it were an asynchonrous POSIX signal | |||
* handler --- use only async-safe functions, and remember that it | |||
@@ -298,6 +298,27 @@ int jack_set_thread_init_callback (jack_client_t *client, | |||
void jack_on_shutdown (jack_client_t *client, | |||
JackShutdownCallback shutdown_callback, void *arg); | |||
/** | |||
* @param client pointer to JACK client structure. | |||
* @param function The jack_shutdown function pointer. | |||
* @param arg The arguments for the jack_shutdown function. | |||
* | |||
* Register a function (and argument) to be called if and when the | |||
* JACK server shuts down the client thread. The function must | |||
* be written as if it were an asynchonrous POSIX signal | |||
* handler --- use only async-safe functions, and remember that it | |||
* is executed from another thread. A typical function might | |||
* set a flag or write to a pipe so that the rest of the | |||
* application knows that the JACK client thread has shut | |||
* down. | |||
* | |||
* NOTE: clients do not need to call this. It exists only | |||
* to help more complex clients understand what is going | |||
* on. It should be called before jack_client_activate(). | |||
*/ | |||
void jack_on_info_shutdown (jack_client_t *client, | |||
JackInfoShutdownCallback shutdown_callback, void *arg); | |||
/** | |||
* Tell the Jack server to call @a process_callback whenever there is | |||
* work be done, passing @a arg as the second argument. | |||
@@ -214,7 +214,7 @@ typedef int (*JackPortRenameCallback)(jack_port_id_t port, const char* new_name, | |||
typedef void (*JackFreewheelCallback)(int starting, void *arg); | |||
/** | |||
* Prototype for the client supplied function that is called | |||
* @deprecated Prototype for the client supplied function that is called | |||
* whenever jackd is shutdown. Note that after server shutdown, | |||
* the client pointer is *not* deallocated by libjack, | |||
* the application is responsible to properly use jack_client_close() | |||
@@ -226,6 +226,21 @@ typedef void (*JackFreewheelCallback)(int starting, void *arg); | |||
*/ | |||
typedef void (*JackShutdownCallback)(void *arg); | |||
/** | |||
* Prototype for the client supplied function that is called | |||
* whenever jackd is shutdown. Note that after server shutdown, | |||
* the client pointer is *not* deallocated by libjack, | |||
* the application is responsible to properly use jack_client_close() | |||
* to release client ressources. Warning: jack_client_close() cannot be | |||
* safely used inside the shutdown callback and has to be called outside of | |||
* the callback context. | |||
* | |||
* @param reason a string discribinh the shuntdown reason (backend failure, server crash... etc...) | |||
* @param arg pointer to a client supplied structure | |||
*/ | |||
typedef void (*JackInfoShutdownCallback)(const char* reason, void *arg); | |||
/** | |||
* Used for the type argument of jack_port_register() for default | |||
* audio ports and midi ports. | |||
@@ -27,21 +27,21 @@ using namespace Jack; | |||
#define rpc_type kern_return_t // for astyle | |||
rpc_type rpc_jack_client_sync_notify(mach_port_t client_port, int refnum, client_name_t name, int notify, int value1, int value2, int* result) | |||
rpc_type rpc_jack_client_sync_notify(mach_port_t client_port, int refnum, client_name_t name, int notify, message_t message, int value1, int value2, int* result) | |||
{ | |||
jack_log("rpc_jack_client_sync_notify ref = %ld name = %s notify = %ld val1 = %ld val2 = %ld", refnum, name, notify, value1, value2); | |||
jack_log("rpc_jack_client_sync_notify ref = %ld name = %s notify = %ld message %s val1 = %ld val2 = %ld", refnum, name, notify, message, value1, value2); | |||
JackClient* client = gClientTable[client_port]; | |||
assert(client); | |||
*result = client->ClientNotify(refnum, name, notify, true, value1, value2); | |||
*result = client->ClientNotify(refnum, name, notify, true, message, value1, value2); | |||
return KERN_SUCCESS; | |||
} | |||
rpc_type rpc_jack_client_async_notify(mach_port_t client_port, int refnum, client_name_t name, int notify, int value1, int value2) | |||
rpc_type rpc_jack_client_async_notify(mach_port_t client_port, int refnum, client_name_t name, int notify, message_t message, int value1, int value2) | |||
{ | |||
jack_log("rpc_jack_client_async_notify ref = %ld name = %s notify = %ld val1 = %ld val2 = %ld", refnum, name, notify, value1, value2); | |||
jack_log("rpc_jack_client_async_notify ref = %ld name = %s notify = %ld message %s val1 = %ld val2 = %ld", refnum, name, notify, message, value1, value2); | |||
JackClient* client = gClientTable[client_port]; | |||
assert(client); | |||
client->ClientNotify(refnum, name, notify, false, value1, value2); | |||
client->ClientNotify(refnum, name, notify, false, message, value1, value2); | |||
return KERN_SUCCESS; | |||
} | |||
@@ -49,11 +49,11 @@ void JackMachNotifyChannel::Close() | |||
fClientPort.DisconnectPort(); | |||
} | |||
void JackMachNotifyChannel::ClientNotify(int refnum, const char* name, int notify, int sync, int value1, int value2, int* result) | |||
void JackMachNotifyChannel::ClientNotify(int refnum, const char* name, int notify, int sync, const char* message, int value1, int value2, int* result) | |||
{ | |||
kern_return_t res = (sync) | |||
? rpc_jack_client_sync_notify(fClientPort.GetPort(), refnum, (char*)name, notify, value1, value2, result) | |||
: rpc_jack_client_async_notify(fClientPort.GetPort(), refnum, (char*)name, notify, value1, value2); | |||
? rpc_jack_client_sync_notify(fClientPort.GetPort(), refnum, (char*)name, notify, (char*)message, value1, value2, result) | |||
: rpc_jack_client_async_notify(fClientPort.GetPort(), refnum, (char*)name, notify, (char*)message, value1, value2); | |||
if (res == KERN_SUCCESS) { | |||
*result = 0; | |||
} else { | |||
@@ -44,7 +44,7 @@ class JackMachNotifyChannel | |||
int Open(const char* name); // Open the Server/Client connection | |||
void Close(); // Close the Server/Client connection | |||
void ClientNotify(int refnum, const char* name, int notify, int sync, int value1, int value2, int* result); | |||
void ClientNotify(int refnum, const char* name, int notify, int sync, const char* message, int value1, int value2, int* result); | |||
}; | |||
} // end of namespace | |||
@@ -26,12 +26,14 @@ waittime 5000; | |||
type client_name_t = c_string[128]; | |||
type client_port_name_t = c_string[128]; | |||
type message_t = c_string[512]; | |||
routine rpc_jack_client_sync_notify( | |||
client_port : mach_port_t; | |||
refnum : int; | |||
client_name : client_name_t; | |||
notify : int; | |||
message : message_t; | |||
value1 : int; | |||
value2 : int; | |||
out result : int); | |||
@@ -41,5 +43,6 @@ simpleroutine rpc_jack_client_async_notify( | |||
refnum : int; | |||
client_name : client_name_t; | |||
notify : int; | |||
message : message_t; | |||
value1 : int; | |||
value2 : int); |
@@ -21,7 +21,7 @@ typedef struct { | |||
char *name; | |||
function_ptr_t function; | |||
} function_table_entry; | |||
typedef function_table_entry *function_table_t; | |||
typedef function_table_entry *function_table_t; | |||
#endif /* FUNCTION_PTR_T */ | |||
#endif /* AUTOTEST */ | |||
@@ -55,6 +55,7 @@ kern_return_t rpc_jack_client_sync_notify | |||
int refnum, | |||
client_name_t client_name, | |||
int notify, | |||
message_t message, | |||
int value1, | |||
int value2, | |||
int *result | |||
@@ -72,6 +73,7 @@ kern_return_t rpc_jack_client_async_notify | |||
int refnum, | |||
client_name_t client_name, | |||
int notify, | |||
message_t message, | |||
int value1, | |||
int value2 | |||
); | |||
@@ -103,6 +105,7 @@ __END_DECLS | |||
int refnum; | |||
client_name_t client_name; | |||
int notify; | |||
message_t message; | |||
int value1; | |||
int value2; | |||
} __Request__rpc_jack_client_sync_notify_t; | |||
@@ -119,6 +122,7 @@ __END_DECLS | |||
int refnum; | |||
client_name_t client_name; | |||
int notify; | |||
message_t message; | |||
int value1; | |||
int value2; | |||
} __Request__rpc_jack_client_async_notify_t; | |||
@@ -1,7 +1,7 @@ | |||
/* | |||
* IDENTIFICATION: | |||
* stub generated Mon Sep 1 17:42:27 2008 | |||
* with a MiG generated Tue Feb 19 02:01:43 PST 2008 by root@b75.local | |||
* stub generated Tue Oct 20 12:13:25 2009 | |||
* with a MiG generated Mon May 18 09:59:33 PDT 2009 by root@sulitlana.apple.com | |||
* OPTIONS: | |||
*/ | |||
@@ -113,6 +113,7 @@ | |||
int refnum; | |||
client_name_t client_name; | |||
int notify; | |||
message_t message; | |||
int value1; | |||
int value2; | |||
} __Request__rpc_jack_client_sync_notify_t; | |||
@@ -129,6 +130,7 @@ | |||
int refnum; | |||
client_name_t client_name; | |||
int notify; | |||
message_t message; | |||
int value1; | |||
int value2; | |||
} __Request__rpc_jack_client_async_notify_t; | |||
@@ -252,6 +254,26 @@ mig_internal novalue _Xrpc_jack_client_async_notify | |||
#endif /* defined(__NDR_convert__*__defined) */ | |||
#endif /* __NDR_convert__int_rep__Request__rpc_jack_client_sync_notify_t__notify__defined */ | |||
#ifndef __NDR_convert__int_rep__Request__rpc_jack_client_sync_notify_t__message__defined | |||
#if defined(__NDR_convert__int_rep__JackRPCClient__message_t__defined) | |||
#define __NDR_convert__int_rep__Request__rpc_jack_client_sync_notify_t__message__defined | |||
#define __NDR_convert__int_rep__Request__rpc_jack_client_sync_notify_t__message(a, f) \ | |||
__NDR_convert__int_rep__JackRPCClient__message_t((message_t *)(a), f) | |||
#elif defined(__NDR_convert__int_rep__message_t__defined) | |||
#define __NDR_convert__int_rep__Request__rpc_jack_client_sync_notify_t__message__defined | |||
#define __NDR_convert__int_rep__Request__rpc_jack_client_sync_notify_t__message(a, f) \ | |||
__NDR_convert__int_rep__message_t((message_t *)(a), f) | |||
#elif defined(__NDR_convert__int_rep__JackRPCClient__string__defined) | |||
#define __NDR_convert__int_rep__Request__rpc_jack_client_sync_notify_t__message__defined | |||
#define __NDR_convert__int_rep__Request__rpc_jack_client_sync_notify_t__message(a, f) \ | |||
__NDR_convert__int_rep__JackRPCClient__string(a, f, 512) | |||
#elif defined(__NDR_convert__int_rep__string__defined) | |||
#define __NDR_convert__int_rep__Request__rpc_jack_client_sync_notify_t__message__defined | |||
#define __NDR_convert__int_rep__Request__rpc_jack_client_sync_notify_t__message(a, f) \ | |||
__NDR_convert__int_rep__string(a, f, 512) | |||
#endif /* defined(__NDR_convert__*__defined) */ | |||
#endif /* __NDR_convert__int_rep__Request__rpc_jack_client_sync_notify_t__message__defined */ | |||
#ifndef __NDR_convert__int_rep__Request__rpc_jack_client_sync_notify_t__value1__defined | |||
#if defined(__NDR_convert__int_rep__JackRPCClient__int__defined) | |||
#define __NDR_convert__int_rep__Request__rpc_jack_client_sync_notify_t__value1__defined | |||
@@ -352,6 +374,26 @@ mig_internal novalue _Xrpc_jack_client_async_notify | |||
#endif /* defined(__NDR_convert__*__defined) */ | |||
#endif /* __NDR_convert__char_rep__Request__rpc_jack_client_sync_notify_t__notify__defined */ | |||
#ifndef __NDR_convert__char_rep__Request__rpc_jack_client_sync_notify_t__message__defined | |||
#if defined(__NDR_convert__char_rep__JackRPCClient__message_t__defined) | |||
#define __NDR_convert__char_rep__Request__rpc_jack_client_sync_notify_t__message__defined | |||
#define __NDR_convert__char_rep__Request__rpc_jack_client_sync_notify_t__message(a, f) \ | |||
__NDR_convert__char_rep__JackRPCClient__message_t((message_t *)(a), f) | |||
#elif defined(__NDR_convert__char_rep__message_t__defined) | |||
#define __NDR_convert__char_rep__Request__rpc_jack_client_sync_notify_t__message__defined | |||
#define __NDR_convert__char_rep__Request__rpc_jack_client_sync_notify_t__message(a, f) \ | |||
__NDR_convert__char_rep__message_t((message_t *)(a), f) | |||
#elif defined(__NDR_convert__char_rep__JackRPCClient__string__defined) | |||
#define __NDR_convert__char_rep__Request__rpc_jack_client_sync_notify_t__message__defined | |||
#define __NDR_convert__char_rep__Request__rpc_jack_client_sync_notify_t__message(a, f) \ | |||
__NDR_convert__char_rep__JackRPCClient__string(a, f, 512) | |||
#elif defined(__NDR_convert__char_rep__string__defined) | |||
#define __NDR_convert__char_rep__Request__rpc_jack_client_sync_notify_t__message__defined | |||
#define __NDR_convert__char_rep__Request__rpc_jack_client_sync_notify_t__message(a, f) \ | |||
__NDR_convert__char_rep__string(a, f, 512) | |||
#endif /* defined(__NDR_convert__*__defined) */ | |||
#endif /* __NDR_convert__char_rep__Request__rpc_jack_client_sync_notify_t__message__defined */ | |||
#ifndef __NDR_convert__char_rep__Request__rpc_jack_client_sync_notify_t__value1__defined | |||
#if defined(__NDR_convert__char_rep__JackRPCClient__int__defined) | |||
#define __NDR_convert__char_rep__Request__rpc_jack_client_sync_notify_t__value1__defined | |||
@@ -452,6 +494,26 @@ mig_internal novalue _Xrpc_jack_client_async_notify | |||
#endif /* defined(__NDR_convert__*__defined) */ | |||
#endif /* __NDR_convert__float_rep__Request__rpc_jack_client_sync_notify_t__notify__defined */ | |||
#ifndef __NDR_convert__float_rep__Request__rpc_jack_client_sync_notify_t__message__defined | |||
#if defined(__NDR_convert__float_rep__JackRPCClient__message_t__defined) | |||
#define __NDR_convert__float_rep__Request__rpc_jack_client_sync_notify_t__message__defined | |||
#define __NDR_convert__float_rep__Request__rpc_jack_client_sync_notify_t__message(a, f) \ | |||
__NDR_convert__float_rep__JackRPCClient__message_t((message_t *)(a), f) | |||
#elif defined(__NDR_convert__float_rep__message_t__defined) | |||
#define __NDR_convert__float_rep__Request__rpc_jack_client_sync_notify_t__message__defined | |||
#define __NDR_convert__float_rep__Request__rpc_jack_client_sync_notify_t__message(a, f) \ | |||
__NDR_convert__float_rep__message_t((message_t *)(a), f) | |||
#elif defined(__NDR_convert__float_rep__JackRPCClient__string__defined) | |||
#define __NDR_convert__float_rep__Request__rpc_jack_client_sync_notify_t__message__defined | |||
#define __NDR_convert__float_rep__Request__rpc_jack_client_sync_notify_t__message(a, f) \ | |||
__NDR_convert__float_rep__JackRPCClient__string(a, f, 512) | |||
#elif defined(__NDR_convert__float_rep__string__defined) | |||
#define __NDR_convert__float_rep__Request__rpc_jack_client_sync_notify_t__message__defined | |||
#define __NDR_convert__float_rep__Request__rpc_jack_client_sync_notify_t__message(a, f) \ | |||
__NDR_convert__float_rep__string(a, f, 512) | |||
#endif /* defined(__NDR_convert__*__defined) */ | |||
#endif /* __NDR_convert__float_rep__Request__rpc_jack_client_sync_notify_t__message__defined */ | |||
#ifndef __NDR_convert__float_rep__Request__rpc_jack_client_sync_notify_t__value1__defined | |||
#if defined(__NDR_convert__float_rep__JackRPCClient__int__defined) | |||
#define __NDR_convert__float_rep__Request__rpc_jack_client_sync_notify_t__value1__defined | |||
@@ -503,9 +565,24 @@ mig_internal kern_return_t __MIG_check__Request__rpc_jack_client_sync_notify_t(_ | |||
return MIG_BAD_ARGUMENTS; | |||
#endif /* __MigTypeCheck */ | |||
#if __MigTypeCheck | |||
{ | |||
char * msg_limit = ((char *) In0P) + In0P->Head.msgh_size; | |||
size_t memchr_limit; | |||
memchr_limit = min((msg_limit - In0P->client_name), 128); | |||
if (( memchr(In0P->client_name, '\0', memchr_limit) == NULL )) | |||
return MIG_BAD_ARGUMENTS; // string length exceeds buffer length! | |||
memchr_limit = min((msg_limit - In0P->message), 512); | |||
if (( memchr(In0P->message, '\0', memchr_limit) == NULL )) | |||
return MIG_BAD_ARGUMENTS; // string length exceeds buffer length! | |||
} | |||
#endif /* __MigTypeCheck */ | |||
#if defined(__NDR_convert__int_rep__Request__rpc_jack_client_sync_notify_t__refnum__defined) || \ | |||
defined(__NDR_convert__int_rep__Request__rpc_jack_client_sync_notify_t__client_name__defined) || \ | |||
defined(__NDR_convert__int_rep__Request__rpc_jack_client_sync_notify_t__notify__defined) || \ | |||
defined(__NDR_convert__int_rep__Request__rpc_jack_client_sync_notify_t__message__defined) || \ | |||
defined(__NDR_convert__int_rep__Request__rpc_jack_client_sync_notify_t__value1__defined) || \ | |||
defined(__NDR_convert__int_rep__Request__rpc_jack_client_sync_notify_t__value2__defined) | |||
if (In0P->NDR.int_rep != NDR_record.int_rep) { | |||
@@ -518,6 +595,9 @@ mig_internal kern_return_t __MIG_check__Request__rpc_jack_client_sync_notify_t(_ | |||
#if defined(__NDR_convert__int_rep__Request__rpc_jack_client_sync_notify_t__notify__defined) | |||
__NDR_convert__int_rep__Request__rpc_jack_client_sync_notify_t__notify(&In0P->notify, In0P->NDR.int_rep); | |||
#endif /* __NDR_convert__int_rep__Request__rpc_jack_client_sync_notify_t__notify__defined */ | |||
#if defined(__NDR_convert__int_rep__Request__rpc_jack_client_sync_notify_t__message__defined) | |||
__NDR_convert__int_rep__Request__rpc_jack_client_sync_notify_t__message(&In0P->message, In0P->NDR.int_rep); | |||
#endif /* __NDR_convert__int_rep__Request__rpc_jack_client_sync_notify_t__message__defined */ | |||
#if defined(__NDR_convert__int_rep__Request__rpc_jack_client_sync_notify_t__value1__defined) | |||
__NDR_convert__int_rep__Request__rpc_jack_client_sync_notify_t__value1(&In0P->value1, In0P->NDR.int_rep); | |||
#endif /* __NDR_convert__int_rep__Request__rpc_jack_client_sync_notify_t__value1__defined */ | |||
@@ -530,6 +610,7 @@ mig_internal kern_return_t __MIG_check__Request__rpc_jack_client_sync_notify_t(_ | |||
#if defined(__NDR_convert__char_rep__Request__rpc_jack_client_sync_notify_t__refnum__defined) || \ | |||
defined(__NDR_convert__char_rep__Request__rpc_jack_client_sync_notify_t__client_name__defined) || \ | |||
defined(__NDR_convert__char_rep__Request__rpc_jack_client_sync_notify_t__notify__defined) || \ | |||
defined(__NDR_convert__char_rep__Request__rpc_jack_client_sync_notify_t__message__defined) || \ | |||
defined(__NDR_convert__char_rep__Request__rpc_jack_client_sync_notify_t__value1__defined) || \ | |||
defined(__NDR_convert__char_rep__Request__rpc_jack_client_sync_notify_t__value2__defined) | |||
if (In0P->NDR.char_rep != NDR_record.char_rep) { | |||
@@ -542,6 +623,9 @@ mig_internal kern_return_t __MIG_check__Request__rpc_jack_client_sync_notify_t(_ | |||
#if defined(__NDR_convert__char_rep__Request__rpc_jack_client_sync_notify_t__notify__defined) | |||
__NDR_convert__char_rep__Request__rpc_jack_client_sync_notify_t__notify(&In0P->notify, In0P->NDR.char_rep); | |||
#endif /* __NDR_convert__char_rep__Request__rpc_jack_client_sync_notify_t__notify__defined */ | |||
#if defined(__NDR_convert__char_rep__Request__rpc_jack_client_sync_notify_t__message__defined) | |||
__NDR_convert__char_rep__Request__rpc_jack_client_sync_notify_t__message(&In0P->message, In0P->NDR.char_rep); | |||
#endif /* __NDR_convert__char_rep__Request__rpc_jack_client_sync_notify_t__message__defined */ | |||
#if defined(__NDR_convert__char_rep__Request__rpc_jack_client_sync_notify_t__value1__defined) | |||
__NDR_convert__char_rep__Request__rpc_jack_client_sync_notify_t__value1(&In0P->value1, In0P->NDR.char_rep); | |||
#endif /* __NDR_convert__char_rep__Request__rpc_jack_client_sync_notify_t__value1__defined */ | |||
@@ -554,6 +638,7 @@ mig_internal kern_return_t __MIG_check__Request__rpc_jack_client_sync_notify_t(_ | |||
#if defined(__NDR_convert__float_rep__Request__rpc_jack_client_sync_notify_t__refnum__defined) || \ | |||
defined(__NDR_convert__float_rep__Request__rpc_jack_client_sync_notify_t__client_name__defined) || \ | |||
defined(__NDR_convert__float_rep__Request__rpc_jack_client_sync_notify_t__notify__defined) || \ | |||
defined(__NDR_convert__float_rep__Request__rpc_jack_client_sync_notify_t__message__defined) || \ | |||
defined(__NDR_convert__float_rep__Request__rpc_jack_client_sync_notify_t__value1__defined) || \ | |||
defined(__NDR_convert__float_rep__Request__rpc_jack_client_sync_notify_t__value2__defined) | |||
if (In0P->NDR.float_rep != NDR_record.float_rep) { | |||
@@ -566,6 +651,9 @@ mig_internal kern_return_t __MIG_check__Request__rpc_jack_client_sync_notify_t(_ | |||
#if defined(__NDR_convert__float_rep__Request__rpc_jack_client_sync_notify_t__notify__defined) | |||
__NDR_convert__float_rep__Request__rpc_jack_client_sync_notify_t__notify(&In0P->notify, In0P->NDR.float_rep); | |||
#endif /* __NDR_convert__float_rep__Request__rpc_jack_client_sync_notify_t__notify__defined */ | |||
#if defined(__NDR_convert__float_rep__Request__rpc_jack_client_sync_notify_t__message__defined) | |||
__NDR_convert__float_rep__Request__rpc_jack_client_sync_notify_t__message(&In0P->message, In0P->NDR.float_rep); | |||
#endif /* __NDR_convert__float_rep__Request__rpc_jack_client_sync_notify_t__message__defined */ | |||
#if defined(__NDR_convert__float_rep__Request__rpc_jack_client_sync_notify_t__value1__defined) | |||
__NDR_convert__float_rep__Request__rpc_jack_client_sync_notify_t__value1(&In0P->value1, In0P->NDR.float_rep); | |||
#endif /* __NDR_convert__float_rep__Request__rpc_jack_client_sync_notify_t__value1__defined */ | |||
@@ -594,6 +682,7 @@ kern_return_t rpc_jack_client_sync_notify | |||
int refnum, | |||
client_name_t client_name, | |||
int notify, | |||
message_t message, | |||
int value1, | |||
int value2, | |||
int *result | |||
@@ -613,6 +702,7 @@ mig_internal novalue _Xrpc_jack_client_sync_notify | |||
int refnum; | |||
client_name_t client_name; | |||
int notify; | |||
message_t message; | |||
int value1; | |||
int value2; | |||
mach_msg_trailer_t trailer; | |||
@@ -646,7 +736,7 @@ mig_internal novalue _Xrpc_jack_client_sync_notify | |||
{ MIG_RETURN_ERROR(OutP, check_result); } | |||
#endif /* defined(__MIG_check__Request__rpc_jack_client_sync_notify_t__defined) */ | |||
OutP->RetCode = rpc_jack_client_sync_notify(In0P->Head.msgh_request_port, In0P->refnum, In0P->client_name, In0P->notify, In0P->value1, In0P->value2, &OutP->result); | |||
OutP->RetCode = rpc_jack_client_sync_notify(In0P->Head.msgh_request_port, In0P->refnum, In0P->client_name, In0P->notify, In0P->message, In0P->value1, In0P->value2, &OutP->result); | |||
if (OutP->RetCode != KERN_SUCCESS) { | |||
MIG_RETURN_ERROR(OutP, OutP->RetCode); | |||
} | |||
@@ -722,6 +812,26 @@ mig_internal novalue _Xrpc_jack_client_sync_notify | |||
#endif /* defined(__NDR_convert__*__defined) */ | |||
#endif /* __NDR_convert__int_rep__Request__rpc_jack_client_async_notify_t__notify__defined */ | |||
#ifndef __NDR_convert__int_rep__Request__rpc_jack_client_async_notify_t__message__defined | |||
#if defined(__NDR_convert__int_rep__JackRPCClient__message_t__defined) | |||
#define __NDR_convert__int_rep__Request__rpc_jack_client_async_notify_t__message__defined | |||
#define __NDR_convert__int_rep__Request__rpc_jack_client_async_notify_t__message(a, f) \ | |||
__NDR_convert__int_rep__JackRPCClient__message_t((message_t *)(a), f) | |||
#elif defined(__NDR_convert__int_rep__message_t__defined) | |||
#define __NDR_convert__int_rep__Request__rpc_jack_client_async_notify_t__message__defined | |||
#define __NDR_convert__int_rep__Request__rpc_jack_client_async_notify_t__message(a, f) \ | |||
__NDR_convert__int_rep__message_t((message_t *)(a), f) | |||
#elif defined(__NDR_convert__int_rep__JackRPCClient__string__defined) | |||
#define __NDR_convert__int_rep__Request__rpc_jack_client_async_notify_t__message__defined | |||
#define __NDR_convert__int_rep__Request__rpc_jack_client_async_notify_t__message(a, f) \ | |||
__NDR_convert__int_rep__JackRPCClient__string(a, f, 512) | |||
#elif defined(__NDR_convert__int_rep__string__defined) | |||
#define __NDR_convert__int_rep__Request__rpc_jack_client_async_notify_t__message__defined | |||
#define __NDR_convert__int_rep__Request__rpc_jack_client_async_notify_t__message(a, f) \ | |||
__NDR_convert__int_rep__string(a, f, 512) | |||
#endif /* defined(__NDR_convert__*__defined) */ | |||
#endif /* __NDR_convert__int_rep__Request__rpc_jack_client_async_notify_t__message__defined */ | |||
#ifndef __NDR_convert__int_rep__Request__rpc_jack_client_async_notify_t__value1__defined | |||
#if defined(__NDR_convert__int_rep__JackRPCClient__int__defined) | |||
#define __NDR_convert__int_rep__Request__rpc_jack_client_async_notify_t__value1__defined | |||
@@ -822,6 +932,26 @@ mig_internal novalue _Xrpc_jack_client_sync_notify | |||
#endif /* defined(__NDR_convert__*__defined) */ | |||
#endif /* __NDR_convert__char_rep__Request__rpc_jack_client_async_notify_t__notify__defined */ | |||
#ifndef __NDR_convert__char_rep__Request__rpc_jack_client_async_notify_t__message__defined | |||
#if defined(__NDR_convert__char_rep__JackRPCClient__message_t__defined) | |||
#define __NDR_convert__char_rep__Request__rpc_jack_client_async_notify_t__message__defined | |||
#define __NDR_convert__char_rep__Request__rpc_jack_client_async_notify_t__message(a, f) \ | |||
__NDR_convert__char_rep__JackRPCClient__message_t((message_t *)(a), f) | |||
#elif defined(__NDR_convert__char_rep__message_t__defined) | |||
#define __NDR_convert__char_rep__Request__rpc_jack_client_async_notify_t__message__defined | |||
#define __NDR_convert__char_rep__Request__rpc_jack_client_async_notify_t__message(a, f) \ | |||
__NDR_convert__char_rep__message_t((message_t *)(a), f) | |||
#elif defined(__NDR_convert__char_rep__JackRPCClient__string__defined) | |||
#define __NDR_convert__char_rep__Request__rpc_jack_client_async_notify_t__message__defined | |||
#define __NDR_convert__char_rep__Request__rpc_jack_client_async_notify_t__message(a, f) \ | |||
__NDR_convert__char_rep__JackRPCClient__string(a, f, 512) | |||
#elif defined(__NDR_convert__char_rep__string__defined) | |||
#define __NDR_convert__char_rep__Request__rpc_jack_client_async_notify_t__message__defined | |||
#define __NDR_convert__char_rep__Request__rpc_jack_client_async_notify_t__message(a, f) \ | |||
__NDR_convert__char_rep__string(a, f, 512) | |||
#endif /* defined(__NDR_convert__*__defined) */ | |||
#endif /* __NDR_convert__char_rep__Request__rpc_jack_client_async_notify_t__message__defined */ | |||
#ifndef __NDR_convert__char_rep__Request__rpc_jack_client_async_notify_t__value1__defined | |||
#if defined(__NDR_convert__char_rep__JackRPCClient__int__defined) | |||
#define __NDR_convert__char_rep__Request__rpc_jack_client_async_notify_t__value1__defined | |||
@@ -922,6 +1052,26 @@ mig_internal novalue _Xrpc_jack_client_sync_notify | |||
#endif /* defined(__NDR_convert__*__defined) */ | |||
#endif /* __NDR_convert__float_rep__Request__rpc_jack_client_async_notify_t__notify__defined */ | |||
#ifndef __NDR_convert__float_rep__Request__rpc_jack_client_async_notify_t__message__defined | |||
#if defined(__NDR_convert__float_rep__JackRPCClient__message_t__defined) | |||
#define __NDR_convert__float_rep__Request__rpc_jack_client_async_notify_t__message__defined | |||
#define __NDR_convert__float_rep__Request__rpc_jack_client_async_notify_t__message(a, f) \ | |||
__NDR_convert__float_rep__JackRPCClient__message_t((message_t *)(a), f) | |||
#elif defined(__NDR_convert__float_rep__message_t__defined) | |||
#define __NDR_convert__float_rep__Request__rpc_jack_client_async_notify_t__message__defined | |||
#define __NDR_convert__float_rep__Request__rpc_jack_client_async_notify_t__message(a, f) \ | |||
__NDR_convert__float_rep__message_t((message_t *)(a), f) | |||
#elif defined(__NDR_convert__float_rep__JackRPCClient__string__defined) | |||
#define __NDR_convert__float_rep__Request__rpc_jack_client_async_notify_t__message__defined | |||
#define __NDR_convert__float_rep__Request__rpc_jack_client_async_notify_t__message(a, f) \ | |||
__NDR_convert__float_rep__JackRPCClient__string(a, f, 512) | |||
#elif defined(__NDR_convert__float_rep__string__defined) | |||
#define __NDR_convert__float_rep__Request__rpc_jack_client_async_notify_t__message__defined | |||
#define __NDR_convert__float_rep__Request__rpc_jack_client_async_notify_t__message(a, f) \ | |||
__NDR_convert__float_rep__string(a, f, 512) | |||
#endif /* defined(__NDR_convert__*__defined) */ | |||
#endif /* __NDR_convert__float_rep__Request__rpc_jack_client_async_notify_t__message__defined */ | |||
#ifndef __NDR_convert__float_rep__Request__rpc_jack_client_async_notify_t__value1__defined | |||
#if defined(__NDR_convert__float_rep__JackRPCClient__int__defined) | |||
#define __NDR_convert__float_rep__Request__rpc_jack_client_async_notify_t__value1__defined | |||
@@ -973,9 +1123,24 @@ mig_internal kern_return_t __MIG_check__Request__rpc_jack_client_async_notify_t( | |||
return MIG_BAD_ARGUMENTS; | |||
#endif /* __MigTypeCheck */ | |||
#if __MigTypeCheck | |||
{ | |||
char * msg_limit = ((char *) In0P) + In0P->Head.msgh_size; | |||
size_t memchr_limit; | |||
memchr_limit = min((msg_limit - In0P->client_name), 128); | |||
if (( memchr(In0P->client_name, '\0', memchr_limit) == NULL )) | |||
return MIG_BAD_ARGUMENTS; // string length exceeds buffer length! | |||
memchr_limit = min((msg_limit - In0P->message), 512); | |||
if (( memchr(In0P->message, '\0', memchr_limit) == NULL )) | |||
return MIG_BAD_ARGUMENTS; // string length exceeds buffer length! | |||
} | |||
#endif /* __MigTypeCheck */ | |||
#if defined(__NDR_convert__int_rep__Request__rpc_jack_client_async_notify_t__refnum__defined) || \ | |||
defined(__NDR_convert__int_rep__Request__rpc_jack_client_async_notify_t__client_name__defined) || \ | |||
defined(__NDR_convert__int_rep__Request__rpc_jack_client_async_notify_t__notify__defined) || \ | |||
defined(__NDR_convert__int_rep__Request__rpc_jack_client_async_notify_t__message__defined) || \ | |||
defined(__NDR_convert__int_rep__Request__rpc_jack_client_async_notify_t__value1__defined) || \ | |||
defined(__NDR_convert__int_rep__Request__rpc_jack_client_async_notify_t__value2__defined) | |||
if (In0P->NDR.int_rep != NDR_record.int_rep) { | |||
@@ -988,6 +1153,9 @@ mig_internal kern_return_t __MIG_check__Request__rpc_jack_client_async_notify_t( | |||
#if defined(__NDR_convert__int_rep__Request__rpc_jack_client_async_notify_t__notify__defined) | |||
__NDR_convert__int_rep__Request__rpc_jack_client_async_notify_t__notify(&In0P->notify, In0P->NDR.int_rep); | |||
#endif /* __NDR_convert__int_rep__Request__rpc_jack_client_async_notify_t__notify__defined */ | |||
#if defined(__NDR_convert__int_rep__Request__rpc_jack_client_async_notify_t__message__defined) | |||
__NDR_convert__int_rep__Request__rpc_jack_client_async_notify_t__message(&In0P->message, In0P->NDR.int_rep); | |||
#endif /* __NDR_convert__int_rep__Request__rpc_jack_client_async_notify_t__message__defined */ | |||
#if defined(__NDR_convert__int_rep__Request__rpc_jack_client_async_notify_t__value1__defined) | |||
__NDR_convert__int_rep__Request__rpc_jack_client_async_notify_t__value1(&In0P->value1, In0P->NDR.int_rep); | |||
#endif /* __NDR_convert__int_rep__Request__rpc_jack_client_async_notify_t__value1__defined */ | |||
@@ -1000,6 +1168,7 @@ mig_internal kern_return_t __MIG_check__Request__rpc_jack_client_async_notify_t( | |||
#if defined(__NDR_convert__char_rep__Request__rpc_jack_client_async_notify_t__refnum__defined) || \ | |||
defined(__NDR_convert__char_rep__Request__rpc_jack_client_async_notify_t__client_name__defined) || \ | |||
defined(__NDR_convert__char_rep__Request__rpc_jack_client_async_notify_t__notify__defined) || \ | |||
defined(__NDR_convert__char_rep__Request__rpc_jack_client_async_notify_t__message__defined) || \ | |||
defined(__NDR_convert__char_rep__Request__rpc_jack_client_async_notify_t__value1__defined) || \ | |||
defined(__NDR_convert__char_rep__Request__rpc_jack_client_async_notify_t__value2__defined) | |||
if (In0P->NDR.char_rep != NDR_record.char_rep) { | |||
@@ -1012,6 +1181,9 @@ mig_internal kern_return_t __MIG_check__Request__rpc_jack_client_async_notify_t( | |||
#if defined(__NDR_convert__char_rep__Request__rpc_jack_client_async_notify_t__notify__defined) | |||
__NDR_convert__char_rep__Request__rpc_jack_client_async_notify_t__notify(&In0P->notify, In0P->NDR.char_rep); | |||
#endif /* __NDR_convert__char_rep__Request__rpc_jack_client_async_notify_t__notify__defined */ | |||
#if defined(__NDR_convert__char_rep__Request__rpc_jack_client_async_notify_t__message__defined) | |||
__NDR_convert__char_rep__Request__rpc_jack_client_async_notify_t__message(&In0P->message, In0P->NDR.char_rep); | |||
#endif /* __NDR_convert__char_rep__Request__rpc_jack_client_async_notify_t__message__defined */ | |||
#if defined(__NDR_convert__char_rep__Request__rpc_jack_client_async_notify_t__value1__defined) | |||
__NDR_convert__char_rep__Request__rpc_jack_client_async_notify_t__value1(&In0P->value1, In0P->NDR.char_rep); | |||
#endif /* __NDR_convert__char_rep__Request__rpc_jack_client_async_notify_t__value1__defined */ | |||
@@ -1024,6 +1196,7 @@ mig_internal kern_return_t __MIG_check__Request__rpc_jack_client_async_notify_t( | |||
#if defined(__NDR_convert__float_rep__Request__rpc_jack_client_async_notify_t__refnum__defined) || \ | |||
defined(__NDR_convert__float_rep__Request__rpc_jack_client_async_notify_t__client_name__defined) || \ | |||
defined(__NDR_convert__float_rep__Request__rpc_jack_client_async_notify_t__notify__defined) || \ | |||
defined(__NDR_convert__float_rep__Request__rpc_jack_client_async_notify_t__message__defined) || \ | |||
defined(__NDR_convert__float_rep__Request__rpc_jack_client_async_notify_t__value1__defined) || \ | |||
defined(__NDR_convert__float_rep__Request__rpc_jack_client_async_notify_t__value2__defined) | |||
if (In0P->NDR.float_rep != NDR_record.float_rep) { | |||
@@ -1036,6 +1209,9 @@ mig_internal kern_return_t __MIG_check__Request__rpc_jack_client_async_notify_t( | |||
#if defined(__NDR_convert__float_rep__Request__rpc_jack_client_async_notify_t__notify__defined) | |||
__NDR_convert__float_rep__Request__rpc_jack_client_async_notify_t__notify(&In0P->notify, In0P->NDR.float_rep); | |||
#endif /* __NDR_convert__float_rep__Request__rpc_jack_client_async_notify_t__notify__defined */ | |||
#if defined(__NDR_convert__float_rep__Request__rpc_jack_client_async_notify_t__message__defined) | |||
__NDR_convert__float_rep__Request__rpc_jack_client_async_notify_t__message(&In0P->message, In0P->NDR.float_rep); | |||
#endif /* __NDR_convert__float_rep__Request__rpc_jack_client_async_notify_t__message__defined */ | |||
#if defined(__NDR_convert__float_rep__Request__rpc_jack_client_async_notify_t__value1__defined) | |||
__NDR_convert__float_rep__Request__rpc_jack_client_async_notify_t__value1(&In0P->value1, In0P->NDR.float_rep); | |||
#endif /* __NDR_convert__float_rep__Request__rpc_jack_client_async_notify_t__value1__defined */ | |||
@@ -1064,6 +1240,7 @@ kern_return_t rpc_jack_client_async_notify | |||
int refnum, | |||
client_name_t client_name, | |||
int notify, | |||
message_t message, | |||
int value1, | |||
int value2 | |||
); | |||
@@ -1082,6 +1259,7 @@ mig_internal novalue _Xrpc_jack_client_async_notify | |||
int refnum; | |||
client_name_t client_name; | |||
int notify; | |||
message_t message; | |||
int value1; | |||
int value2; | |||
mach_msg_trailer_t trailer; | |||
@@ -1115,7 +1293,7 @@ mig_internal novalue _Xrpc_jack_client_async_notify | |||
{ MIG_RETURN_ERROR(OutP, check_result); } | |||
#endif /* defined(__MIG_check__Request__rpc_jack_client_async_notify_t__defined) */ | |||
OutP->RetCode = rpc_jack_client_async_notify(In0P->Head.msgh_request_port, In0P->refnum, In0P->client_name, In0P->notify, In0P->value1, In0P->value2); | |||
OutP->RetCode = rpc_jack_client_async_notify(In0P->Head.msgh_request_port, In0P->refnum, In0P->client_name, In0P->notify, In0P->message, In0P->value1, In0P->value2); | |||
__AfterRcvSimple(1001, "rpc_jack_client_async_notify") | |||
} | |||
@@ -1145,9 +1323,9 @@ const struct JackRPCClient_subsystem { | |||
(vm_address_t)0, | |||
{ | |||
{ (mig_impl_routine_t) 0, | |||
(mig_stub_routine_t) _Xrpc_jack_client_sync_notify, 7, 0, (routine_arg_descriptor_t)0, (mach_msg_size_t)sizeof(__Reply__rpc_jack_client_sync_notify_t)}, | |||
(mig_stub_routine_t) _Xrpc_jack_client_sync_notify, 8, 0, (routine_arg_descriptor_t)0, (mach_msg_size_t)sizeof(__Reply__rpc_jack_client_sync_notify_t)}, | |||
{ (mig_impl_routine_t) 0, | |||
(mig_stub_routine_t) _Xrpc_jack_client_async_notify, 6, 0, (routine_arg_descriptor_t)0, (mach_msg_size_t)sizeof(__Reply__rpc_jack_client_async_notify_t)}, | |||
(mig_stub_routine_t) _Xrpc_jack_client_async_notify, 7, 0, (routine_arg_descriptor_t)0, (mach_msg_size_t)sizeof(__Reply__rpc_jack_client_async_notify_t)}, | |||
} | |||
}; | |||
@@ -1,7 +1,7 @@ | |||
/* | |||
* IDENTIFICATION: | |||
* stub generated Mon Sep 1 17:42:27 2008 | |||
* with a MiG generated Tue Feb 19 02:01:43 PST 2008 by root@b75.local | |||
* stub generated Tue Oct 20 12:13:25 2009 | |||
* with a MiG generated Mon May 18 09:59:33 PDT 2009 by root@sulitlana.apple.com | |||
* OPTIONS: | |||
*/ | |||
#define __MIG_check__Reply__JackRPCClient_subsystem__ 1 | |||
@@ -50,15 +50,15 @@ | |||
#ifndef __MachMsgErrorWithTimeout | |||
#define __MachMsgErrorWithTimeout(_R_) { \ | |||
switch (_R_) { \ | |||
case MACH_SEND_INVALID_REPLY: \ | |||
case MACH_RCV_INVALID_NAME: \ | |||
case MACH_RCV_PORT_DIED: \ | |||
case MACH_RCV_PORT_CHANGED: \ | |||
case MACH_RCV_TIMED_OUT: \ | |||
mig_dealloc_reply_port(InP->Head.msgh_reply_port); \ | |||
case MACH_SEND_INVALID_DATA: \ | |||
case MACH_SEND_INVALID_DEST: \ | |||
case MACH_SEND_INVALID_HEADER: \ | |||
mig_put_reply_port(InP->Head.msgh_reply_port); \ | |||
break; \ | |||
case MACH_SEND_TIMED_OUT: \ | |||
case MACH_RCV_TIMED_OUT: \ | |||
default: \ | |||
mig_put_reply_port(InP->Head.msgh_reply_port); \ | |||
mig_dealloc_reply_port(InP->Head.msgh_reply_port); \ | |||
} \ | |||
} | |||
#endif /* __MachMsgErrorWithTimeout */ | |||
@@ -66,14 +66,13 @@ | |||
#ifndef __MachMsgErrorWithoutTimeout | |||
#define __MachMsgErrorWithoutTimeout(_R_) { \ | |||
switch (_R_) { \ | |||
case MACH_SEND_INVALID_REPLY: \ | |||
case MACH_RCV_INVALID_NAME: \ | |||
case MACH_RCV_PORT_DIED: \ | |||
case MACH_RCV_PORT_CHANGED: \ | |||
mig_dealloc_reply_port(InP->Head.msgh_reply_port); \ | |||
case MACH_SEND_INVALID_DATA: \ | |||
case MACH_SEND_INVALID_DEST: \ | |||
case MACH_SEND_INVALID_HEADER: \ | |||
mig_put_reply_port(InP->Head.msgh_reply_port); \ | |||
break; \ | |||
default: \ | |||
mig_put_reply_port(InP->Head.msgh_reply_port); \ | |||
mig_dealloc_reply_port(InP->Head.msgh_reply_port); \ | |||
} \ | |||
} | |||
#endif /* __MachMsgErrorWithoutTimeout */ | |||
@@ -265,6 +264,7 @@ mig_external kern_return_t rpc_jack_client_sync_notify | |||
int refnum, | |||
client_name_t client_name, | |||
int notify, | |||
message_t message, | |||
int value1, | |||
int value2, | |||
int *result | |||
@@ -280,6 +280,7 @@ mig_external kern_return_t rpc_jack_client_sync_notify | |||
int refnum; | |||
client_name_t client_name; | |||
int notify; | |||
message_t message; | |||
int value1; | |||
int value2; | |||
} Request; | |||
@@ -345,6 +346,8 @@ mig_external kern_return_t rpc_jack_client_sync_notify | |||
InP->notify = notify; | |||
(void) mig_strncpy(InP->message, message, 512); | |||
InP->value1 = value1; | |||
InP->value2 = value2; | |||
@@ -387,6 +390,7 @@ mig_external kern_return_t rpc_jack_client_async_notify | |||
int refnum, | |||
client_name_t client_name, | |||
int notify, | |||
message_t message, | |||
int value1, | |||
int value2 | |||
) | |||
@@ -401,6 +405,7 @@ mig_external kern_return_t rpc_jack_client_async_notify | |||
int refnum; | |||
client_name_t client_name; | |||
int notify; | |||
message_t message; | |||
int value1; | |||
int value2; | |||
} Request; | |||
@@ -437,6 +442,8 @@ mig_external kern_return_t rpc_jack_client_async_notify | |||
InP->notify = notify; | |||
(void) mig_strncpy(InP->message, message, 512); | |||
InP->value1 = value1; | |||
InP->value2 = value2; | |||
@@ -21,7 +21,7 @@ typedef struct { | |||
char *name; | |||
function_ptr_t function; | |||
} function_table_entry; | |||
typedef function_table_entry *function_table_t; | |||
typedef function_table_entry *function_table_t; | |||
#endif /* FUNCTION_PTR_T */ | |||
#endif /* AUTOTEST */ | |||
@@ -1,7 +1,7 @@ | |||
/* | |||
* IDENTIFICATION: | |||
* stub generated Mon Sep 1 17:42:28 2008 | |||
* with a MiG generated Tue Feb 19 02:01:43 PST 2008 by root@b75.local | |||
* stub generated Tue Oct 20 12:13:26 2009 | |||
* with a MiG generated Mon May 18 09:59:33 PDT 2009 by root@sulitlana.apple.com | |||
* OPTIONS: | |||
*/ | |||
@@ -910,6 +910,17 @@ mig_internal kern_return_t __MIG_check__Request__rpc_jack_client_open_t(__attrib | |||
return MIG_BAD_ARGUMENTS; | |||
#endif /* __MigTypeCheck */ | |||
#if __MigTypeCheck | |||
{ | |||
char * msg_limit = ((char *) In0P) + In0P->Head.msgh_size; | |||
size_t memchr_limit; | |||
memchr_limit = min((msg_limit - In0P->client_name), 128); | |||
if (( memchr(In0P->client_name, '\0', memchr_limit) == NULL )) | |||
return MIG_BAD_ARGUMENTS; // string length exceeds buffer length! | |||
} | |||
#endif /* __MigTypeCheck */ | |||
#if defined(__NDR_convert__int_rep__Request__rpc_jack_client_open_t__client_name__defined) || \ | |||
defined(__NDR_convert__int_rep__Request__rpc_jack_client_open_t__pid__defined) | |||
if (In0P->NDR.int_rep != NDR_record.int_rep) { | |||
@@ -1243,6 +1254,17 @@ mig_internal kern_return_t __MIG_check__Request__rpc_jack_client_check_t(__attri | |||
return MIG_BAD_ARGUMENTS; | |||
#endif /* __MigTypeCheck */ | |||
#if __MigTypeCheck | |||
{ | |||
char * msg_limit = ((char *) In0P) + In0P->Head.msgh_size; | |||
size_t memchr_limit; | |||
memchr_limit = min((msg_limit - In0P->client_name), 128); | |||
if (( memchr(In0P->client_name, '\0', memchr_limit) == NULL )) | |||
return MIG_BAD_ARGUMENTS; // string length exceeds buffer length! | |||
} | |||
#endif /* __MigTypeCheck */ | |||
#if defined(__NDR_convert__int_rep__Request__rpc_jack_client_check_t__client_name__defined) || \ | |||
defined(__NDR_convert__int_rep__Request__rpc_jack_client_check_t__protocol__defined) || \ | |||
defined(__NDR_convert__int_rep__Request__rpc_jack_client_check_t__options__defined) | |||
@@ -2283,6 +2305,20 @@ mig_internal kern_return_t __MIG_check__Request__rpc_jack_port_register_t(__attr | |||
return MIG_BAD_ARGUMENTS; | |||
#endif /* __MigTypeCheck */ | |||
#if __MigTypeCheck | |||
{ | |||
char * msg_limit = ((char *) In0P) + In0P->Head.msgh_size; | |||
size_t memchr_limit; | |||
memchr_limit = min((msg_limit - In0P->name), 128); | |||
if (( memchr(In0P->name, '\0', memchr_limit) == NULL )) | |||
return MIG_BAD_ARGUMENTS; // string length exceeds buffer length! | |||
memchr_limit = min((msg_limit - In0P->port_type), 128); | |||
if (( memchr(In0P->port_type, '\0', memchr_limit) == NULL )) | |||
return MIG_BAD_ARGUMENTS; // string length exceeds buffer length! | |||
} | |||
#endif /* __MigTypeCheck */ | |||
#if defined(__NDR_convert__int_rep__Request__rpc_jack_port_register_t__refnum__defined) || \ | |||
defined(__NDR_convert__int_rep__Request__rpc_jack_port_register_t__name__defined) || \ | |||
defined(__NDR_convert__int_rep__Request__rpc_jack_port_register_t__port_type__defined) || \ | |||
@@ -3526,6 +3562,20 @@ mig_internal kern_return_t __MIG_check__Request__rpc_jack_port_connect_name_t(__ | |||
return MIG_BAD_ARGUMENTS; | |||
#endif /* __MigTypeCheck */ | |||
#if __MigTypeCheck | |||
{ | |||
char * msg_limit = ((char *) In0P) + In0P->Head.msgh_size; | |||
size_t memchr_limit; | |||
memchr_limit = min((msg_limit - In0P->src), 128); | |||
if (( memchr(In0P->src, '\0', memchr_limit) == NULL )) | |||
return MIG_BAD_ARGUMENTS; // string length exceeds buffer length! | |||
memchr_limit = min((msg_limit - In0P->dst), 128); | |||
if (( memchr(In0P->dst, '\0', memchr_limit) == NULL )) | |||
return MIG_BAD_ARGUMENTS; // string length exceeds buffer length! | |||
} | |||
#endif /* __MigTypeCheck */ | |||
#if defined(__NDR_convert__int_rep__Request__rpc_jack_port_connect_name_t__refnum__defined) || \ | |||
defined(__NDR_convert__int_rep__Request__rpc_jack_port_connect_name_t__src__defined) || \ | |||
defined(__NDR_convert__int_rep__Request__rpc_jack_port_connect_name_t__dst__defined) | |||
@@ -3848,6 +3898,20 @@ mig_internal kern_return_t __MIG_check__Request__rpc_jack_port_disconnect_name_t | |||
return MIG_BAD_ARGUMENTS; | |||
#endif /* __MigTypeCheck */ | |||
#if __MigTypeCheck | |||
{ | |||
char * msg_limit = ((char *) In0P) + In0P->Head.msgh_size; | |||
size_t memchr_limit; | |||
memchr_limit = min((msg_limit - In0P->src), 128); | |||
if (( memchr(In0P->src, '\0', memchr_limit) == NULL )) | |||
return MIG_BAD_ARGUMENTS; // string length exceeds buffer length! | |||
memchr_limit = min((msg_limit - In0P->dst), 128); | |||
if (( memchr(In0P->dst, '\0', memchr_limit) == NULL )) | |||
return MIG_BAD_ARGUMENTS; // string length exceeds buffer length! | |||
} | |||
#endif /* __MigTypeCheck */ | |||
#if defined(__NDR_convert__int_rep__Request__rpc_jack_port_disconnect_name_t__refnum__defined) || \ | |||
defined(__NDR_convert__int_rep__Request__rpc_jack_port_disconnect_name_t__src__defined) || \ | |||
defined(__NDR_convert__int_rep__Request__rpc_jack_port_disconnect_name_t__dst__defined) | |||
@@ -4170,6 +4234,17 @@ mig_internal kern_return_t __MIG_check__Request__rpc_jack_port_rename_t(__attrib | |||
return MIG_BAD_ARGUMENTS; | |||
#endif /* __MigTypeCheck */ | |||
#if __MigTypeCheck | |||
{ | |||
char * msg_limit = ((char *) In0P) + In0P->Head.msgh_size; | |||
size_t memchr_limit; | |||
memchr_limit = min((msg_limit - In0P->name), 128); | |||
if (( memchr(In0P->name, '\0', memchr_limit) == NULL )) | |||
return MIG_BAD_ARGUMENTS; // string length exceeds buffer length! | |||
} | |||
#endif /* __MigTypeCheck */ | |||
#if defined(__NDR_convert__int_rep__Request__rpc_jack_port_rename_t__refnum__defined) || \ | |||
defined(__NDR_convert__int_rep__Request__rpc_jack_port_rename_t__src__defined) || \ | |||
defined(__NDR_convert__int_rep__Request__rpc_jack_port_rename_t__name__defined) | |||
@@ -5451,6 +5526,17 @@ mig_internal kern_return_t __MIG_check__Request__rpc_jack_internal_clienthandle_ | |||
return MIG_BAD_ARGUMENTS; | |||
#endif /* __MigTypeCheck */ | |||
#if __MigTypeCheck | |||
{ | |||
char * msg_limit = ((char *) In0P) + In0P->Head.msgh_size; | |||
size_t memchr_limit; | |||
memchr_limit = min((msg_limit - In0P->client_name), 128); | |||
if (( memchr(In0P->client_name, '\0', memchr_limit) == NULL )) | |||
return MIG_BAD_ARGUMENTS; // string length exceeds buffer length! | |||
} | |||
#endif /* __MigTypeCheck */ | |||
#if defined(__NDR_convert__int_rep__Request__rpc_jack_internal_clienthandle_t__refnum__defined) || \ | |||
defined(__NDR_convert__int_rep__Request__rpc_jack_internal_clienthandle_t__client_name__defined) | |||
if (In0P->NDR.int_rep != NDR_record.int_rep) { | |||
@@ -5881,6 +5967,23 @@ mig_internal kern_return_t __MIG_check__Request__rpc_jack_internal_clientload_t( | |||
return MIG_BAD_ARGUMENTS; | |||
#endif /* __MigTypeCheck */ | |||
#if __MigTypeCheck | |||
{ | |||
char * msg_limit = ((char *) In0P) + In0P->Head.msgh_size; | |||
size_t memchr_limit; | |||
memchr_limit = min((msg_limit - In0P->client_name), 128); | |||
if (( memchr(In0P->client_name, '\0', memchr_limit) == NULL )) | |||
return MIG_BAD_ARGUMENTS; // string length exceeds buffer length! | |||
memchr_limit = min((msg_limit - In0P->so_name), 1024); | |||
if (( memchr(In0P->so_name, '\0', memchr_limit) == NULL )) | |||
return MIG_BAD_ARGUMENTS; // string length exceeds buffer length! | |||
memchr_limit = min((msg_limit - In0P->objet_data), 1024); | |||
if (( memchr(In0P->objet_data, '\0', memchr_limit) == NULL )) | |||
return MIG_BAD_ARGUMENTS; // string length exceeds buffer length! | |||
} | |||
#endif /* __MigTypeCheck */ | |||
#if defined(__NDR_convert__int_rep__Request__rpc_jack_internal_clientload_t__refnum__defined) || \ | |||
defined(__NDR_convert__int_rep__Request__rpc_jack_internal_clientload_t__client_name__defined) || \ | |||
defined(__NDR_convert__int_rep__Request__rpc_jack_internal_clientload_t__so_name__defined) || \ | |||
@@ -6626,47 +6729,47 @@ const struct server_JackRPCEngine_subsystem { | |||
(vm_address_t)0, | |||
{ | |||
{ (mig_impl_routine_t) 0, | |||
(mig_stub_routine_t) _Xrpc_jack_client_open, 8, 0, (routine_arg_descriptor_t)0, (mach_msg_size_t)sizeof(__Reply__rpc_jack_client_open_t)}, | |||
(mig_stub_routine_t) _Xrpc_jack_client_open, 8, 0, (routine_arg_descriptor_t)0, (mach_msg_size_t)sizeof(__Reply__rpc_jack_client_open_t)}, | |||
{ (mig_impl_routine_t) 0, | |||
(mig_stub_routine_t) _Xrpc_jack_client_check, 7, 0, (routine_arg_descriptor_t)0, (mach_msg_size_t)sizeof(__Reply__rpc_jack_client_check_t)}, | |||
(mig_stub_routine_t) _Xrpc_jack_client_check, 7, 0, (routine_arg_descriptor_t)0, (mach_msg_size_t)sizeof(__Reply__rpc_jack_client_check_t)}, | |||
{ (mig_impl_routine_t) 0, | |||
(mig_stub_routine_t) _Xrpc_jack_client_close, 3, 0, (routine_arg_descriptor_t)0, (mach_msg_size_t)sizeof(__Reply__rpc_jack_client_close_t)}, | |||
(mig_stub_routine_t) _Xrpc_jack_client_close, 3, 0, (routine_arg_descriptor_t)0, (mach_msg_size_t)sizeof(__Reply__rpc_jack_client_close_t)}, | |||
{ (mig_impl_routine_t) 0, | |||
(mig_stub_routine_t) _Xrpc_jack_client_activate, 4, 0, (routine_arg_descriptor_t)0, (mach_msg_size_t)sizeof(__Reply__rpc_jack_client_activate_t)}, | |||
(mig_stub_routine_t) _Xrpc_jack_client_activate, 4, 0, (routine_arg_descriptor_t)0, (mach_msg_size_t)sizeof(__Reply__rpc_jack_client_activate_t)}, | |||
{ (mig_impl_routine_t) 0, | |||
(mig_stub_routine_t) _Xrpc_jack_client_deactivate, 3, 0, (routine_arg_descriptor_t)0, (mach_msg_size_t)sizeof(__Reply__rpc_jack_client_deactivate_t)}, | |||
(mig_stub_routine_t) _Xrpc_jack_client_deactivate, 3, 0, (routine_arg_descriptor_t)0, (mach_msg_size_t)sizeof(__Reply__rpc_jack_client_deactivate_t)}, | |||
{ (mig_impl_routine_t) 0, | |||
(mig_stub_routine_t) _Xrpc_jack_port_register, 8, 0, (routine_arg_descriptor_t)0, (mach_msg_size_t)sizeof(__Reply__rpc_jack_port_register_t)}, | |||
(mig_stub_routine_t) _Xrpc_jack_port_register, 8, 0, (routine_arg_descriptor_t)0, (mach_msg_size_t)sizeof(__Reply__rpc_jack_port_register_t)}, | |||
{ (mig_impl_routine_t) 0, | |||
(mig_stub_routine_t) _Xrpc_jack_port_unregister, 4, 0, (routine_arg_descriptor_t)0, (mach_msg_size_t)sizeof(__Reply__rpc_jack_port_unregister_t)}, | |||
(mig_stub_routine_t) _Xrpc_jack_port_unregister, 4, 0, (routine_arg_descriptor_t)0, (mach_msg_size_t)sizeof(__Reply__rpc_jack_port_unregister_t)}, | |||
{ (mig_impl_routine_t) 0, | |||
(mig_stub_routine_t) _Xrpc_jack_port_connect, 5, 0, (routine_arg_descriptor_t)0, (mach_msg_size_t)sizeof(__Reply__rpc_jack_port_connect_t)}, | |||
(mig_stub_routine_t) _Xrpc_jack_port_connect, 5, 0, (routine_arg_descriptor_t)0, (mach_msg_size_t)sizeof(__Reply__rpc_jack_port_connect_t)}, | |||
{ (mig_impl_routine_t) 0, | |||
(mig_stub_routine_t) _Xrpc_jack_port_disconnect, 5, 0, (routine_arg_descriptor_t)0, (mach_msg_size_t)sizeof(__Reply__rpc_jack_port_disconnect_t)}, | |||
(mig_stub_routine_t) _Xrpc_jack_port_disconnect, 5, 0, (routine_arg_descriptor_t)0, (mach_msg_size_t)sizeof(__Reply__rpc_jack_port_disconnect_t)}, | |||
{ (mig_impl_routine_t) 0, | |||
(mig_stub_routine_t) _Xrpc_jack_port_connect_name, 5, 0, (routine_arg_descriptor_t)0, (mach_msg_size_t)sizeof(__Reply__rpc_jack_port_connect_name_t)}, | |||
(mig_stub_routine_t) _Xrpc_jack_port_connect_name, 5, 0, (routine_arg_descriptor_t)0, (mach_msg_size_t)sizeof(__Reply__rpc_jack_port_connect_name_t)}, | |||
{ (mig_impl_routine_t) 0, | |||
(mig_stub_routine_t) _Xrpc_jack_port_disconnect_name, 5, 0, (routine_arg_descriptor_t)0, (mach_msg_size_t)sizeof(__Reply__rpc_jack_port_disconnect_name_t)}, | |||
(mig_stub_routine_t) _Xrpc_jack_port_disconnect_name, 5, 0, (routine_arg_descriptor_t)0, (mach_msg_size_t)sizeof(__Reply__rpc_jack_port_disconnect_name_t)}, | |||
{ (mig_impl_routine_t) 0, | |||
(mig_stub_routine_t) _Xrpc_jack_port_rename, 5, 0, (routine_arg_descriptor_t)0, (mach_msg_size_t)sizeof(__Reply__rpc_jack_port_rename_t)}, | |||
(mig_stub_routine_t) _Xrpc_jack_port_rename, 5, 0, (routine_arg_descriptor_t)0, (mach_msg_size_t)sizeof(__Reply__rpc_jack_port_rename_t)}, | |||
{ (mig_impl_routine_t) 0, | |||
(mig_stub_routine_t) _Xrpc_jack_set_buffer_size, 3, 0, (routine_arg_descriptor_t)0, (mach_msg_size_t)sizeof(__Reply__rpc_jack_set_buffer_size_t)}, | |||
(mig_stub_routine_t) _Xrpc_jack_set_buffer_size, 3, 0, (routine_arg_descriptor_t)0, (mach_msg_size_t)sizeof(__Reply__rpc_jack_set_buffer_size_t)}, | |||
{ (mig_impl_routine_t) 0, | |||
(mig_stub_routine_t) _Xrpc_jack_set_freewheel, 3, 0, (routine_arg_descriptor_t)0, (mach_msg_size_t)sizeof(__Reply__rpc_jack_set_freewheel_t)}, | |||
(mig_stub_routine_t) _Xrpc_jack_set_freewheel, 3, 0, (routine_arg_descriptor_t)0, (mach_msg_size_t)sizeof(__Reply__rpc_jack_set_freewheel_t)}, | |||
{ (mig_impl_routine_t) 0, | |||
(mig_stub_routine_t) _Xrpc_jack_release_timebase, 3, 0, (routine_arg_descriptor_t)0, (mach_msg_size_t)sizeof(__Reply__rpc_jack_release_timebase_t)}, | |||
(mig_stub_routine_t) _Xrpc_jack_release_timebase, 3, 0, (routine_arg_descriptor_t)0, (mach_msg_size_t)sizeof(__Reply__rpc_jack_release_timebase_t)}, | |||
{ (mig_impl_routine_t) 0, | |||
(mig_stub_routine_t) _Xrpc_jack_set_timebase_callback, 4, 0, (routine_arg_descriptor_t)0, (mach_msg_size_t)sizeof(__Reply__rpc_jack_set_timebase_callback_t)}, | |||
(mig_stub_routine_t) _Xrpc_jack_set_timebase_callback, 4, 0, (routine_arg_descriptor_t)0, (mach_msg_size_t)sizeof(__Reply__rpc_jack_set_timebase_callback_t)}, | |||
{ (mig_impl_routine_t) 0, | |||
(mig_stub_routine_t) _Xrpc_jack_get_internal_clientname, 5, 0, (routine_arg_descriptor_t)0, (mach_msg_size_t)sizeof(__Reply__rpc_jack_get_internal_clientname_t)}, | |||
(mig_stub_routine_t) _Xrpc_jack_get_internal_clientname, 5, 0, (routine_arg_descriptor_t)0, (mach_msg_size_t)sizeof(__Reply__rpc_jack_get_internal_clientname_t)}, | |||
{ (mig_impl_routine_t) 0, | |||
(mig_stub_routine_t) _Xrpc_jack_internal_clienthandle, 6, 0, (routine_arg_descriptor_t)0, (mach_msg_size_t)sizeof(__Reply__rpc_jack_internal_clienthandle_t)}, | |||
(mig_stub_routine_t) _Xrpc_jack_internal_clienthandle, 6, 0, (routine_arg_descriptor_t)0, (mach_msg_size_t)sizeof(__Reply__rpc_jack_internal_clienthandle_t)}, | |||
{ (mig_impl_routine_t) 0, | |||
(mig_stub_routine_t) _Xrpc_jack_internal_clientload, 9, 0, (routine_arg_descriptor_t)0, (mach_msg_size_t)sizeof(__Reply__rpc_jack_internal_clientload_t)}, | |||
(mig_stub_routine_t) _Xrpc_jack_internal_clientload, 9, 0, (routine_arg_descriptor_t)0, (mach_msg_size_t)sizeof(__Reply__rpc_jack_internal_clientload_t)}, | |||
{ (mig_impl_routine_t) 0, | |||
(mig_stub_routine_t) _Xrpc_jack_internal_clientunload, 5, 0, (routine_arg_descriptor_t)0, (mach_msg_size_t)sizeof(__Reply__rpc_jack_internal_clientunload_t)}, | |||
(mig_stub_routine_t) _Xrpc_jack_internal_clientunload, 5, 0, (routine_arg_descriptor_t)0, (mach_msg_size_t)sizeof(__Reply__rpc_jack_internal_clientunload_t)}, | |||
{ (mig_impl_routine_t) 0, | |||
(mig_stub_routine_t) _Xrpc_jack_client_rt_notify, 4, 0, (routine_arg_descriptor_t)0, (mach_msg_size_t)sizeof(__Reply__rpc_jack_client_rt_notify_t)}, | |||
(mig_stub_routine_t) _Xrpc_jack_client_rt_notify, 4, 0, (routine_arg_descriptor_t)0, (mach_msg_size_t)sizeof(__Reply__rpc_jack_client_rt_notify_t)}, | |||
} | |||
}; | |||
@@ -1,7 +1,7 @@ | |||
/* | |||
* IDENTIFICATION: | |||
* stub generated Mon Sep 1 17:42:28 2008 | |||
* with a MiG generated Tue Feb 19 02:01:43 PST 2008 by root@b75.local | |||
* stub generated Tue Oct 20 12:13:26 2009 | |||
* with a MiG generated Mon May 18 09:59:33 PDT 2009 by root@sulitlana.apple.com | |||
* OPTIONS: | |||
*/ | |||
#define __MIG_check__Reply__JackRPCEngine_subsystem__ 1 | |||
@@ -50,15 +50,15 @@ | |||
#ifndef __MachMsgErrorWithTimeout | |||
#define __MachMsgErrorWithTimeout(_R_) { \ | |||
switch (_R_) { \ | |||
case MACH_SEND_INVALID_REPLY: \ | |||
case MACH_RCV_INVALID_NAME: \ | |||
case MACH_RCV_PORT_DIED: \ | |||
case MACH_RCV_PORT_CHANGED: \ | |||
case MACH_RCV_TIMED_OUT: \ | |||
mig_dealloc_reply_port(InP->Head.msgh_reply_port); \ | |||
case MACH_SEND_INVALID_DATA: \ | |||
case MACH_SEND_INVALID_DEST: \ | |||
case MACH_SEND_INVALID_HEADER: \ | |||
mig_put_reply_port(InP->Head.msgh_reply_port); \ | |||
break; \ | |||
case MACH_SEND_TIMED_OUT: \ | |||
case MACH_RCV_TIMED_OUT: \ | |||
default: \ | |||
mig_put_reply_port(InP->Head.msgh_reply_port); \ | |||
mig_dealloc_reply_port(InP->Head.msgh_reply_port); \ | |||
} \ | |||
} | |||
#endif /* __MachMsgErrorWithTimeout */ | |||
@@ -66,14 +66,13 @@ | |||
#ifndef __MachMsgErrorWithoutTimeout | |||
#define __MachMsgErrorWithoutTimeout(_R_) { \ | |||
switch (_R_) { \ | |||
case MACH_SEND_INVALID_REPLY: \ | |||
case MACH_RCV_INVALID_NAME: \ | |||
case MACH_RCV_PORT_DIED: \ | |||
case MACH_RCV_PORT_CHANGED: \ | |||
mig_dealloc_reply_port(InP->Head.msgh_reply_port); \ | |||
case MACH_SEND_INVALID_DATA: \ | |||
case MACH_SEND_INVALID_DEST: \ | |||
case MACH_SEND_INVALID_HEADER: \ | |||
mig_put_reply_port(InP->Head.msgh_reply_port); \ | |||
break; \ | |||
default: \ | |||
mig_put_reply_port(InP->Head.msgh_reply_port); \ | |||
mig_dealloc_reply_port(InP->Head.msgh_reply_port); \ | |||
} \ | |||
} | |||
#endif /* __MachMsgErrorWithoutTimeout */ | |||
@@ -399,8 +398,9 @@ mig_internal kern_return_t __MIG_check__Reply__rpc_jack_client_open_t(__Reply__r | |||
#if __MigTypeCheck | |||
if (Out0P->private_port.type != MACH_MSG_PORT_DESCRIPTOR || | |||
Out0P->private_port.disposition != 17) | |||
{ return MIG_TYPE_ERROR; } | |||
Out0P->private_port.disposition != 17) { | |||
return MIG_TYPE_ERROR; | |||
} | |||
#endif /* __MigTypeCheck */ | |||
#if defined(__NDR_convert__int_rep__Reply__rpc_jack_client_open_t__shared_engine__defined) || \ | |||
@@ -20,5 +20,6 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | |||
typedef char client_name_t[64]; | |||
typedef char client_port_name_t[256]; | |||
typedef char client_port_type_t[128]; | |||
typedef char so_name_t[256]; | |||
typedef char objet_data_t[256]; | |||
typedef char so_name_t[1024]; | |||
typedef char objet_data_t[1024]; | |||
typedef char message_t[512]; |
@@ -320,7 +320,7 @@ bool JackSocketClientChannel::Execute() | |||
goto error; | |||
} | |||
res.fResult = fClient->ClientNotify(event.fRefNum, event.fName, event.fNotify, event.fSync, event.fValue1, event.fValue2); | |||
res.fResult = fClient->ClientNotify(event.fRefNum, event.fName, event.fNotify, event.fSync, event.fMessage, event.fValue1, event.fValue2); | |||
if (event.fSync) { | |||
if (res.Write(fNotificationSocket) < 0) { | |||
@@ -47,9 +47,9 @@ void JackSocketNotifyChannel::Close() | |||
fNotifySocket.Close(); | |||
} | |||
void JackSocketNotifyChannel::ClientNotify(int refnum, const char* name, int notify, int sync, int value1, int value2, int* result) | |||
void JackSocketNotifyChannel::ClientNotify(int refnum, const char* name, int notify, int sync, const char* message, int value1, int value2, int* result) | |||
{ | |||
JackClientNotification event(name, refnum, notify, sync, value1, value2); | |||
JackClientNotification event(name, refnum, notify, sync, message, value1, value2); | |||
JackResult res; | |||
// Send notification | |||
@@ -45,7 +45,7 @@ class JackSocketNotifyChannel | |||
int Open(const char* name); // Open the Server/Client connection | |||
void Close(); // Close the Server/Client connection | |||
void ClientNotify(int refnum, const char* name, int notify, int sync, int value1, int value2, int* result); | |||
void ClientNotify(int refnum, const char* name, int notify, int sync, const char* message, int value1, int value2, int* result); | |||
}; | |||
} // end of namespace | |||
@@ -315,7 +315,7 @@ bool JackWinNamedPipeClientChannel::Execute() | |||
goto error; | |||
} | |||
res.fResult = fClient->ClientNotify(event.fRefNum, event.fName, event.fNotify, event.fSync, event.fValue1, event.fValue2); | |||
res.fResult = fClient->ClientNotify(event.fRefNum, event.fName, event.fNotify, event.fSync, event.fMessage, event.fValue1, event.fValue2); | |||
if (event.fSync) { | |||
if (res.Write(&fNotificationListenPipe) < 0) { | |||
@@ -46,9 +46,9 @@ void JackWinNamedPipeNotifyChannel::Close() | |||
fNotifyPipe.Close(); | |||
} | |||
void JackWinNamedPipeNotifyChannel::ClientNotify(int refnum, const char* name, int notify, int sync, int value1, int value2, int* result) | |||
void JackWinNamedPipeNotifyChannel::ClientNotify(int refnum, const char* name, int notify, int sync, const char* message, int value1, int value2, int* result) | |||
{ | |||
JackClientNotification event(name, refnum, notify, sync, value1, value2); | |||
JackClientNotification event(name, refnum, notify, sync, message, value1, value2); | |||
JackResult res; | |||
// Send notification | |||
@@ -44,7 +44,7 @@ class JackWinNamedPipeNotifyChannel | |||
int Open(const char* name); // Open the Server/Client connection | |||
void Close(); // Close the Server/Client connection | |||
void ClientNotify(int refnum, const char* name, int notify, int sync, int value1, int value2, int* result); | |||
void ClientNotify(int refnum, const char* name, int notify, int sync, const char* message, int value1, int value2, int* result); | |||
}; | |||
} // end of namespace | |||