21 #include "JackSystemDeps.h"    22 #include "JackGraphManager.h"    23 #include "JackInternalClient.h"    24 #include "JackServer.h"    25 #include "JackDebugClient.h"    26 #include "JackServerGlobals.h"    27 #include "JackTools.h"    28 #include "JackCompilerDeps.h"    29 #include "JackLockedEngine.h"    36     jack_client_t* jack_client_new_aux(
const char* client_name, jack_options_t options, jack_status_t* status);
    39             jack_options_t options,
    40             jack_status_t *status, ...);
    50 jack_client_t* jack_client_new_aux(
const char* client_name, jack_options_t options, jack_status_t* status)
    53     jack_status_t my_status;
    56     if (client_name == NULL) {
    57         jack_error(
"jack_client_new called with a NULL client_name");
    61     jack_log(
"jack_client_new %s", client_name);
    65     *status = (jack_status_t)0;
    68     if ((options & ~JackOpenOptions)) {
    69         int my_status1 = *status | (JackFailure | JackInvalidOption);
    70         *status = (jack_status_t)my_status1;
    75     jack_varargs_init(&va);
    77     if (!JackServerGlobals::Init()) { 
    78         int my_status1 = (JackFailure | JackServerError);
    79         *status = (jack_status_t)my_status1;
    89     int res = client->Open(va.server_name, client_name, va.session_id, options, status);
    92         JackServerGlobals::Destroy(); 
    93         int my_status1 = (JackFailure | JackServerError);
    94         *status = (jack_status_t)my_status1;
    97         return (jack_client_t*)client;
   101 jack_client_t* jack_client_open_aux(
const char* client_name, jack_options_t options, jack_status_t* status, va_list ap)
   104     jack_status_t my_status;
   107     if (client_name == NULL) {
   108         jack_error(
"jack_client_open called with a NULL client_name");
   112     jack_log(
"jack_client_open %s", client_name);
   116     *status = (jack_status_t)0;
   119     if ((options & ~JackOpenOptions)) {
   120         int my_status1 = *status | (JackFailure | JackInvalidOption);
   121         *status = (jack_status_t)my_status1;
   126     jack_varargs_parse(options, ap, &va);
   128     if (!JackServerGlobals::Init()) { 
   129         int my_status1 = (JackFailure | JackServerError);
   130         *status = (jack_status_t)my_status1;
   140     int res = client->Open(va.server_name, client_name, va.session_id, options, status);
   143         JackServerGlobals::Destroy(); 
   144         int my_status1 = (JackFailure | JackServerError);
   145         *status = (jack_status_t)my_status1;
   148         return (jack_client_t*)client;
   152 SERVER_EXPORT jack_client_t* 
jack_client_open(
const char* ext_client_name, jack_options_t options, jack_status_t* status, ...)
   154     JackGlobals::CheckContext(
"jack_client_open");
   157         assert(JackGlobals::fOpenMutex);
   158         JackGlobals::fOpenMutex->Lock();
   160         va_start(ap, status);
   161         jack_client_t* res = jack_client_open_aux(ext_client_name, options, status, ap);
   163         JackGlobals::fOpenMutex->Unlock();
   165     } 
catch (std::bad_alloc& e) {
   176     JackGlobals::CheckContext(
"jack_client_close");
   178     assert(JackGlobals::fOpenMutex);
   179     JackGlobals::fOpenMutex->Lock();
   183     if (client == NULL) {
   184         jack_error(
"jack_client_close called with a NULL client");
   186         res = client->Close();
   188         JackServerGlobals::Destroy();   
   189         jack_log(
"jack_client_close res = %d", res);
   191     JackGlobals::fOpenMutex->Unlock();
   197     return (JackServerGlobals::fInstance != NULL)
   198         ? JackServerGlobals::fInstance->GetEngine()->GetClientPID(name)
 Internal clients in the server.
SERVER_EXPORT void jack_error(const char *fmt,...)
SERVER_EXPORT jack_client_t * jack_client_open(const char *client_name, jack_options_t options, jack_status_t *status,...)
SERVER_EXPORT int jack_get_client_pid(const char *name)
A "decorator" debug client to validate API use.
SERVER_EXPORT void jack_log(const char *fmt,...)
The base class for clients: share part of the implementation for JackInternalClient and JackLibClient...
SERVER_EXPORT int jack_client_close(jack_client_t *client)