Browse Source

Add a string parameter to server ==> client notification, add a new InfoShutdown callback.

git-svn-id: http://subversion.jackaudio.org/jack/jack2/trunk/jackmp@3653 0c269be4-1314-0410-8aa9-9f06e86f4224
tags/v1.9.4
sletz 12 years ago
parent
commit
d09d8c3c82
39 changed files with 516 additions and 126 deletions
  1. +4
    -0
      ChangeLog
  2. +16
    -0
      common/JackAPI.cpp
  3. +26
    -5
      common/JackClient.cpp
  4. +5
    -2
      common/JackClient.h
  5. +1
    -1
      common/JackClientInterface.h
  6. +1
    -0
      common/JackConstants.h
  7. +8
    -2
      common/JackDebugClient.cpp
  8. +2
    -1
      common/JackDebugClient.h
  9. +1
    -1
      common/JackDriver.cpp
  10. +1
    -1
      common/JackDriver.h
  11. +17
    -17
      common/JackEngine.cpp
  12. +3
    -2
      common/JackEngine.h
  13. +2
    -2
      common/JackExternalClient.cpp
  14. +1
    -1
      common/JackExternalClient.h
  15. +1
    -1
      common/JackLibClient.cpp
  16. +1
    -1
      common/JackLibClient.h
  17. +1
    -0
      common/JackNotification.h
  18. +5
    -1
      common/JackRequest.h
  19. +2
    -2
      common/JackThreadedDriver.cpp
  20. +1
    -1
      common/JackThreadedDriver.h
  21. +22
    -1
      common/jack/jack.h
  22. +16
    -1
      common/jack/types.h
  23. +6
    -6
      macosx/JackMacLibClientRPC.cpp
  24. +3
    -3
      macosx/JackMachNotifyChannel.cpp
  25. +1
    -1
      macosx/JackMachNotifyChannel.h
  26. +3
    -0
      macosx/RPC/JackRPCClient.defs
  27. +5
    -1
      macosx/RPC/JackRPCClient.h
  28. +184
    -6
      macosx/RPC/JackRPCClientServer.c
  29. +22
    -15
      macosx/RPC/JackRPCClientUser.c
  30. +1
    -1
      macosx/RPC/JackRPCEngine.h
  31. +126
    -23
      macosx/RPC/JackRPCEngineServer.c
  32. +17
    -17
      macosx/RPC/JackRPCEngineUser.c
  33. +3
    -2
      macosx/RPC/Jackdefs.h
  34. +1
    -1
      posix/JackSocketClientChannel.cpp
  35. +2
    -2
      posix/JackSocketNotifyChannel.cpp
  36. +1
    -1
      posix/JackSocketNotifyChannel.h
  37. +1
    -1
      windows/JackWinNamedPipeClientChannel.cpp
  38. +2
    -2
      windows/JackWinNamedPipeNotifyChannel.cpp
  39. +1
    -1
      windows/JackWinNamedPipeNotifyChannel.h

+ 4
- 0
ChangeLog View File

@@ -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>


+ 16
- 0
common/JackAPI.cpp View File

@@ -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__


+ 26
- 5
common/JackClient.cpp View File

@@ -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)
{


+ 5
- 2
common/JackClient.h View File

@@ -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);


+ 1
- 1
common/JackClientInterface.h View File

@@ -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;
};


+ 1
- 0
common/JackConstants.h View File

@@ -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


+ 8
- 2
common/JackDebugClient.cpp View File

@@ -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;


+ 2
- 1
common/JackDebugClient.h View File

@@ -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);


+ 1
- 1
common/JackDriver.cpp View File

@@ -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) {



+ 1
- 1
common/JackDriver.h View File

@@ -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;


+ 17
- 17
common/JackEngine.cpp View File

@@ -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);
}

//----------------------------


+ 3
- 2
common/JackEngine.h View File

@@ -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);


+ 2
- 2
common/JackExternalClient.cpp View File

@@ -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;
}



+ 1
- 1
common/JackExternalClient.h View File

@@ -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;
};


+ 1
- 1
common/JackLibClient.cpp View File

@@ -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;



+ 1
- 1
common/JackLibClient.h View File

@@ -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;


+ 1
- 0
common/JackNotification.h View File

@@ -43,6 +43,7 @@ enum NotificationType {
kPortDisconnectCallback = 12,
kPortRenameCallback = 13,
kRealTimeCallback = 14,
kShutDownCallback = 15,
kMaxNotification
};



+ 5
- 1
common/JackRequest.h View File

@@ -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;
}



+ 2
- 2
common/JackThreadedDriver.cpp View File

@@ -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


+ 1
- 1
common/JackThreadedDriver.h View File

@@ -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;


+ 22
- 1
common/jack/jack.h View File

@@ -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.


+ 16
- 1
common/jack/types.h View File

@@ -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.


+ 6
- 6
macosx/JackMacLibClientRPC.cpp View File

@@ -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;
}


+ 3
- 3
macosx/JackMachNotifyChannel.cpp View File

@@ -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 {


+ 1
- 1
macosx/JackMachNotifyChannel.h View File

@@ -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


+ 3
- 0
macosx/RPC/JackRPCClient.defs View File

@@ -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);

+ 5
- 1
macosx/RPC/JackRPCClient.h View File

@@ -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;


+ 184
- 6
macosx/RPC/JackRPCClientServer.c View File

@@ -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)},
}
};



+ 22
- 15
macosx/RPC/JackRPCClientUser.c View File

@@ -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;


+ 1
- 1
macosx/RPC/JackRPCEngine.h View File

@@ -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 */



+ 126
- 23
macosx/RPC/JackRPCEngineServer.c View File

@@ -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)},
}
};



+ 17
- 17
macosx/RPC/JackRPCEngineUser.c View File

@@ -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) || \


+ 3
- 2
macosx/RPC/Jackdefs.h View File

@@ -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];

+ 1
- 1
posix/JackSocketClientChannel.cpp View File

@@ -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) {


+ 2
- 2
posix/JackSocketNotifyChannel.cpp View File

@@ -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


+ 1
- 1
posix/JackSocketNotifyChannel.h View File

@@ -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


+ 1
- 1
windows/JackWinNamedPipeClientChannel.cpp View File

@@ -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) {


+ 2
- 2
windows/JackWinNamedPipeNotifyChannel.cpp View File

@@ -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


+ 1
- 1
windows/JackWinNamedPipeNotifyChannel.h View File

@@ -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


Loading…
Cancel
Save