Commit 9f4df15a authored by sletz's avatar sletz
Browse files

Factorize code the server/client request.

git-svn-id: http://subversion.jackaudio.org/jack/jack2/trunk/jackmp@4684 0c269be4-1314-0410-8aa9-9f06e86f4224
parent be1f6ca0
......@@ -36,6 +36,10 @@ John Emmas
Jackdmp changes log
---------------------------
2012-01-11 Stephane Letz <letz@grame.fr>
* Factorize code the server/client request.
2012-01-06 Stephane Letz <letz@grame.fr>
* Cleanup drivers and internals loading code.
......
......@@ -35,6 +35,36 @@ class JackGraphManager;
namespace detail
{
class JackChannelTransactionInterface
{
public:
JackChannelTransactionInterface()
{}
virtual ~JackChannelTransactionInterface()
{}
virtual int Read(void* data, int len) = 0;
virtual int Write(void* data, int len) = 0;
};
class JackClientRequestInterface : public JackChannelTransactionInterface
{
public:
JackClientRequestInterface()
{}
virtual ~JackClientRequestInterface()
{}
virtual int Connect(const char* dir, const char* name, int which) = 0;
virtual int Close() = 0;
};
/*!
\brief Inter process channel for server/client bidirectionnal communication : request and (receiving) notifications.
*/
......
......@@ -27,6 +27,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#include "JackSynchro.h"
#include "JackPlatformPlug.h"
#include "JackChannel.h"
#include "JackRequest.h"
#include "varargs.h"
#include <list>
......
......@@ -932,7 +932,7 @@ int JackEngine::PortRename(int refnum, jack_port_id_t port, const char* name)
// Session management
//--------------------
void JackEngine::SessionNotify(int refnum, const char *target, jack_session_event_type_t type, const char *path, JackChannelTransaction *socket, JackSessionNotifyResult** result)
void JackEngine::SessionNotify(int refnum, const char *target, jack_session_event_type_t type, const char *path, detail::JackChannelTransactionInterface *socket, JackSessionNotifyResult** result)
{
if (fSessionPendingReplies != 0) {
JackSessionNotifyResult res(-1);
......
......@@ -26,6 +26,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
#include "JackMutex.h"
#include "JackTransportEngine.h"
#include "JackPlatformPlug.h"
#include "JackRequest.h"
#include <map>
namespace Jack
......@@ -34,6 +35,7 @@ namespace Jack
class JackClientInterface;
struct JackEngineControl;
class JackExternalClient;
class detail::JackChannelTransactionInterface;
/*!
\brief Engine description.
......@@ -54,7 +56,7 @@ class SERVER_EXPORT JackEngine : public JackLockAble
jack_time_t fLastSwitchUsecs;
int fSessionPendingReplies;
JackChannelTransaction* fSessionTransaction;
detail::JackChannelTransactionInterface* fSessionTransaction;
JackSessionNotifyResult* fSessionResult;
std::map<int,std::string> fReservationMap;
int fMaxUUID;
......@@ -145,7 +147,7 @@ class SERVER_EXPORT JackEngine : public JackLockAble
void NotifyQuit();
// Session management
void SessionNotify(int refnum, const char *target, jack_session_event_type_t type, const char *path, JackChannelTransaction *socket, JackSessionNotifyResult** result);
void SessionNotify(int refnum, const char *target, jack_session_event_type_t type, const char *path, detail::JackChannelTransactionInterface *socket, JackSessionNotifyResult** result);
void SessionReply(int refnum);
void GetUUIDForClientName(const char *client_name, char *uuid_res, int *result);
......
/*
Copyright (C) 2004-2008 Grame
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation; either version 2.1 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
#include "JackGenericClientChannel.h"
#include "JackClient.h"
#include "JackGlobals.h"
#include "JackError.h"
namespace Jack
{
JackGenericClientChannel::JackGenericClientChannel():fClient(NULL)
{}
JackGenericClientChannel::~JackGenericClientChannel()
{}
int JackGenericClientChannel::ServerCheck(const char* server_name)
{
jack_log("JackGenericClientChannel::ServerCheck = %s", server_name);
// Connect to server
if (fRequest->Connect(jack_server_dir, server_name, 0) < 0) {
jack_error("Cannot connect to server request channel");
return -1;
} else {
return 0;
}
}
void JackGenericClientChannel::ServerSyncCall(JackRequest* req, JackResult* res, int* result)
{
if (req->Write(fRequest) < 0) {
jack_error("Could not write request type = %ld", req->fType);
*result = -1;
return;
}
if (res->Read(fRequest) < 0) {
jack_error("Could not read result type = %ld", req->fType);
*result = -1;
return;
}
*result = res->fResult;
}
void JackGenericClientChannel::ServerAsyncCall(JackRequest* req, JackResult* res, int* result)
{
if (req->Write(fRequest) < 0) {
jack_error("Could not write request type = %ld", req->fType);
*result = -1;
} else {
*result = 0;
}
}
void JackGenericClientChannel::ClientCheck(const char* name, int uuid, char* name_res, int protocol, int options, int* status, int* result, int open)
{
JackClientCheckRequest req(name, protocol, options, uuid, open);
JackClientCheckResult res;
ServerSyncCall(&req, &res, result);
*status = res.fStatus;
strcpy(name_res, res.fName);
}
void JackGenericClientChannel::ClientOpen(const char* name, int pid, int uuid, int* shared_engine, int* shared_client, int* shared_graph, int* result)
{
JackClientOpenRequest req(name, pid, uuid);
JackClientOpenResult res;
ServerSyncCall(&req, &res, result);
*shared_engine = res.fSharedEngine;
*shared_client = res.fSharedClient;
*shared_graph = res.fSharedGraph;
}
void JackGenericClientChannel::ClientClose(int refnum, int* result)
{
JackClientCloseRequest req(refnum);
JackResult res;
ServerSyncCall(&req, &res, result);
}
void JackGenericClientChannel::ClientActivate(int refnum, int is_real_time, int* result)
{
JackActivateRequest req(refnum, is_real_time);
JackResult res;
ServerSyncCall(&req, &res, result);
}
void JackGenericClientChannel::ClientDeactivate(int refnum, int* result)
{
JackDeactivateRequest req(refnum);
JackResult res;
ServerSyncCall(&req, &res, result);
}
void JackGenericClientChannel::PortRegister(int refnum, const char* name, const char* type, unsigned int flags, unsigned int buffer_size, jack_port_id_t* port_index, int* result)
{
JackPortRegisterRequest req(refnum, name, type, flags, buffer_size);
JackPortRegisterResult res;
ServerSyncCall(&req, &res, result);
*port_index = res.fPortIndex;
}
void JackGenericClientChannel::PortUnRegister(int refnum, jack_port_id_t port_index, int* result)
{
JackPortUnRegisterRequest req(refnum, port_index);
JackResult res;
ServerSyncCall(&req, &res, result);
}
void JackGenericClientChannel::PortConnect(int refnum, const char* src, const char* dst, int* result)
{
JackPortConnectNameRequest req(refnum, src, dst);
JackResult res;
ServerSyncCall(&req, &res, result);
}
void JackGenericClientChannel::PortDisconnect(int refnum, const char* src, const char* dst, int* result)
{
JackPortDisconnectNameRequest req(refnum, src, dst);
JackResult res;
ServerSyncCall(&req, &res, result);
}
void JackGenericClientChannel::PortConnect(int refnum, jack_port_id_t src, jack_port_id_t dst, int* result)
{
JackPortConnectRequest req(refnum, src, dst);
JackResult res;
ServerSyncCall(&req, &res, result);
}
void JackGenericClientChannel::PortDisconnect(int refnum, jack_port_id_t src, jack_port_id_t dst, int* result)
{
JackPortDisconnectRequest req(refnum, src, dst);
JackResult res;
ServerSyncCall(&req, &res, result);
}
void JackGenericClientChannel::PortRename(int refnum, jack_port_id_t port, const char* name, int* result)
{
JackPortRenameRequest req(refnum, port, name);
JackResult res;
ServerSyncCall(&req, &res, result);
}
void JackGenericClientChannel::SetBufferSize(jack_nframes_t buffer_size, int* result)
{
JackSetBufferSizeRequest req(buffer_size);
JackResult res;
ServerSyncCall(&req, &res, result);
}
void JackGenericClientChannel::SetFreewheel(int onoff, int* result)
{
JackSetFreeWheelRequest req(onoff);
JackResult res;
ServerSyncCall(&req, &res, result);
}
void JackGenericClientChannel::ComputeTotalLatencies(int* result)
{
JackComputeTotalLatenciesRequest req;
JackResult res;
ServerSyncCall(&req, &res, result);
}
void JackGenericClientChannel::SessionNotify(int refnum, const char* target, jack_session_event_type_t type, const char* path, jack_session_command_t** result)
{
JackSessionNotifyRequest req(refnum, path, type, target);
JackSessionNotifyResult res;
int intresult;
ServerSyncCall(&req, &res, &intresult);
*result = res.GetCommands();
}
void JackGenericClientChannel::SessionReply(int refnum, int* result)
{
JackSessionReplyRequest req(refnum);
JackResult res;
ServerSyncCall(&req, &res, result);
}
void JackGenericClientChannel::GetUUIDForClientName(int refnum, const char* client_name, char* uuid_res, int* result)
{
JackGetUUIDRequest req(client_name);
JackUUIDResult res;
ServerSyncCall(&req, &res, result);
strncpy(uuid_res, res.fUUID, JACK_UUID_SIZE);
}
void JackGenericClientChannel::GetClientNameForUUID(int refnum, const char* uuid, char* name_res, int* result)
{
JackGetClientNameRequest req(uuid);
JackClientNameResult res;
ServerSyncCall(&req, &res, result);
strncpy(name_res, res.fName, JACK_CLIENT_NAME_SIZE);
}
void JackGenericClientChannel::ClientHasSessionCallback(const char* client_name, int* result)
{
JackClientHasSessionCallbackRequest req(client_name);
JackResult res;
ServerSyncCall(&req, &res, result);
}
void JackGenericClientChannel::ReserveClientName(int refnum, const char* client_name, const char* uuid, int* result)
{
JackReserveNameRequest req(refnum, client_name, uuid);
JackResult res;
ServerSyncCall(&req, &res, result);
}
void JackGenericClientChannel::ReleaseTimebase(int refnum, int* result)
{
JackReleaseTimebaseRequest req(refnum);
JackResult res;
ServerSyncCall(&req, &res, result);
}
void JackGenericClientChannel::SetTimebaseCallback(int refnum, int conditional, int* result)
{
JackSetTimebaseCallbackRequest req(refnum, conditional);
JackResult res;
ServerSyncCall(&req, &res, result);
}
void JackGenericClientChannel::GetInternalClientName(int refnum, int int_ref, char* name_res, int* result)
{
JackGetInternalClientNameRequest req(refnum, int_ref);
JackGetInternalClientNameResult res;
ServerSyncCall(&req, &res, result);
strcpy(name_res, res.fName);
}
void JackGenericClientChannel::InternalClientHandle(int refnum, const char* client_name, int* status, int* int_ref, int* result)
{
JackInternalClientHandleRequest req(refnum, client_name);
JackInternalClientHandleResult res;
ServerSyncCall(&req, &res, result);
*int_ref = res.fIntRefNum;
*status = res.fStatus;
}
void JackGenericClientChannel::InternalClientLoad(int refnum, const char* client_name, const char* so_name, const char* objet_data, int options, int* status, int* int_ref, int uuid, int* result)
{
JackInternalClientLoadRequest req(refnum, client_name, so_name, objet_data, options, uuid);
JackInternalClientLoadResult res;
ServerSyncCall(&req, &res, result);
*int_ref = res.fIntRefNum;
*status = res.fStatus;
}
void JackGenericClientChannel::InternalClientUnload(int refnum, int int_ref, int* status, int* result)
{
JackInternalClientUnloadRequest req(refnum, int_ref);
JackInternalClientUnloadResult res;
ServerSyncCall(&req, &res, result);
*status = res.fStatus;
}
} // end of namespace
/*
Copyright (C) 2004-2008 Grame
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation; either version 2.1 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
#ifndef __JackGenericClientChannel__
#define __JackGenericClientChannel__
#include "JackChannel.h"
namespace Jack
{
struct JackRequest;
struct JackResult;
class detail::JackClientRequestInterface;
/*!
\brief Generic JackClientChannel class.
*/
class JackGenericClientChannel : public detail::JackClientChannelInterface
{
protected:
detail::JackClientRequestInterface* fRequest;
JackClient* fClient;
void ServerSyncCall(JackRequest* req, JackResult* res, int* result);
void ServerAsyncCall(JackRequest* req, JackResult* res, int* result);
public:
JackGenericClientChannel();
virtual ~JackGenericClientChannel();
virtual int Open(const char* server_name, const char* name, int uuid, char* name_res, JackClient* obj, jack_options_t options, jack_status_t* status) { return -1; }
virtual void Close() {}
virtual int Start() { return -1; }
virtual void Stop() {}
int ServerCheck(const char* server_name);
void ClientCheck(const char* name, int uuid, char* name_res, int protocol, int options, int* status, int* result, int open);
void ClientOpen(const char* name, int pid, int uuid, int* shared_engine, int* shared_client, int* shared_graph, int* result);
void ClientOpen(const char* name, int* ref, int uuid, JackEngineControl** shared_engine, JackGraphManager** shared_manager, JackClientInterface* client, int* result)
{}
void ClientClose(int refnum, int* result);
void ClientActivate(int refnum, int is_real_time, int* result);
void ClientDeactivate(int refnum, int* result);
void PortRegister(int refnum, const char* name, const char* type, unsigned int flags, unsigned int buffer_size, jack_port_id_t* port_index, int* result);
void PortUnRegister(int refnum, jack_port_id_t port_index, int* result);
void PortConnect(int refnum, const char* src, const char* dst, int* result);
void PortDisconnect(int refnum, const char* src, const char* dst, int* result);
void PortConnect(int refnum, jack_port_id_t src, jack_port_id_t dst, int* result);
void PortDisconnect(int refnum, jack_port_id_t src, jack_port_id_t dst, int* result);
void PortRename(int refnum, jack_port_id_t port, const char* name, int* result);
void SetBufferSize(jack_nframes_t buffer_size, int* result);
void SetFreewheel(int onoff, int* result);
void ComputeTotalLatencies(int* result);
void ReleaseTimebase(int refnum, int* result);
void SetTimebaseCallback(int refnum, int conditional, int* result);
void GetInternalClientName(int refnum, int int_ref, char* name_res, int* result);
void InternalClientHandle(int refnum, const char* client_name, int* status, int* int_ref, int* result);
void InternalClientLoad(int refnum, const char* client_name, const char* so_name, const char* objet_data, int options, int* status, int* int_ref, int uuid, int* result);
void InternalClientUnload(int refnum, int int_ref, int* status, int* result);
// Session API
void SessionNotify(int refnum, const char* target, jack_session_event_type_t type, const char* path, jack_session_command_t** result);
void SessionReply(int refnum, int* result);
void GetUUIDForClientName(int refnum, const char* client_name, char* uuid_res, int* result);
void GetClientNameForUUID(int refnum, const char* uuid, char* name_res, int* result);
void ReserveClientName(int refnum, const char* client_name, const char *uuid, int* result);
void ClientHasSessionCallback(const char* client_name, int* result);
};
} // end of namespace
#endif
......@@ -325,7 +325,7 @@ class SERVER_EXPORT JackLockedEngine
CATCH_EXCEPTION
}
void SessionNotify(int refnum, const char* target, jack_session_event_type_t type, const char *path, JackChannelTransaction *socket, JackSessionNotifyResult** result)
void SessionNotify(int refnum, const char* target, jack_session_event_type_t type, const char *path, detail::JackChannelTransactionInterface *socket, JackSessionNotifyResult** result)
{
TRY_CALL
JackLock lock(&fEngine);
......
This diff is collapsed.
......@@ -56,6 +56,7 @@ def build(bld):
'JackMidiAPI.cpp',
'JackEngineControl.cpp',
'JackShmMem.cpp',
'JackGenericClientChannel.cpp',
'shm.c',
'JackGlobals.cpp',
'JackDebugClient.cpp',
......
......@@ -12,7 +12,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with this program; if not, write to the Free Software
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
......@@ -28,7 +28,7 @@ namespace Jack
{
struct JackRequest;
struct JackResult;
class JackPosixMutex;
class JackPosixThread;
class JackFifo;
......@@ -58,14 +58,16 @@ namespace Jack { typedef JackFifo JackSynchro; }
namespace Jack { typedef JackPosixSemaphore JackSynchro; }
/* __JackPlatformChannelTransaction__ */
/*
#include "JackSocket.h"
namespace Jack { typedef JackClientSocket JackChannelTransaction; }
*/
#include "JackProcessSync.h"
/* __JackPlatformProcessSync__ */
/* Only on windows a special JackProcessSync is used. It is directly defined by including JackProcessSync.h here */
/* __JackPlatformServerChannel__ */
/* __JackPlatformServerChannel__ */
#include "JackSocketServerChannel.h"
namespace Jack { typedef JackSocketServerChannel JackServerChannel; }
......
......@@ -64,12 +64,6 @@ namespace Jack { typedef JackMachThread JackThread; }
namespace Jack { typedef JackMachSemaphore JackSynchro; }
#endif
#include "JackSocket.h"
namespace Jack { typedef JackClientSocket JackChannelTransaction; }
#include "JackSocket.h"
namespace Jack { typedef JackClientSocket JackChannelTransaction; }
/* __JackPlatformProcessSync__ */
#include "JackProcessSync.h"
/* Only on windows a special JackProcessSync is used. It is directly defined by including JackProcessSync.h here */
......
......@@ -109,6 +109,18 @@
/* Begin PBXBuildFile section */
4B0A28ED0D520852002EFF74 /* tw.c in Sources */ = {isa = PBXBuildFile; fileRef = 4B0A28EC0D520852002EFF74 /* tw.c */; };
4B0A29260D52108E002EFF74 /* tw.c in Sources */ = {isa = PBXBuildFile; fileRef = 4B0A28EC0D520852002EFF74 /* tw.c */; };
4B1499F014BDA5B300A51A3C /* JackGenericClientChannel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4B1499EE14BDA5B300A51A3C /* JackGenericClientChannel.cpp */; };
4B1499F114BDA5B300A51A3C /* JackGenericClientChannel.h in Headers */ = {isa = PBXBuildFile; fileRef = 4B1499EF14BDA5B300A51A3C /* JackGenericClientChannel.h */; };
4B1499F214BDA5B300A51A3C /* JackGenericClientChannel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4B1499EE14BDA5B300A51A3C /* JackGenericClientChannel.cpp */; };
4B1499F314BDA5B300A51A3C /* JackGenericClientChannel.h in Headers */ = {isa = PBXBuildFile; fileRef = 4B1499EF14BDA5B300A51A3C /* JackGenericClientChannel.h */; };
4B1499F414BDA5B300A51A3C /* JackGenericClientChannel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4B1499EE14BDA5B300A51A3C /* JackGenericClientChannel.cpp */; };
4B1499F514BDA5B300A51A3C /* JackGenericClientChannel.h in Headers */ = {isa = PBXBuildFile; fileRef = 4B1499EF14BDA5B300A51A3C /* JackGenericClientChannel.h */; };
4B1499F614BDA5B300A51A3C /* JackGenericClientChannel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4B1499EE14BDA5B300A51A3C /* JackGenericClientChannel.cpp */; };
4B1499F714BDA5B300A51A3C /* JackGenericClientChannel.h in Headers */ = {isa = PBXBuildFile; fileRef = 4B1499EF14BDA5B300A51A3C /* JackGenericClientChannel.h */; };
4B1499F814BDA5B300A51A3C /* JackGenericClientChannel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4B1499EE14BDA5B300A51A3C /* JackGenericClientChannel.cpp */; };
4B1499F914BDA5B300A51A3C /* JackGenericClientChannel.h in Headers */ = {isa = PBXBuildFile; fileRef = 4B1499EF14BDA5B300A51A3C /* JackGenericClientChannel.h */; };
4B1499FA14BDA5B300A51A3C /* JackGenericClientChannel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4B1499EE14BDA5B300A51A3C /* JackGenericClientChannel.cpp */; };
4B1499FB14BDA5B300A51A3C /* JackGenericClientChannel.h in Headers */ = {isa = PBXBuildFile; fileRef = 4B1499EF14BDA5B300A51A3C /* JackGenericClientChannel.h */; };
4B193991133F321500547810 /* JackFilters.h in Headers */ = {isa = PBXBuildFile; fileRef = 4B193990133F321500547810 /* JackFilters.h */; };
4B193992133F321500547810 /* JackFilters.h in Headers */ = {isa = PBXBuildFile; fileRef = 4B193990133F321500547810 /* JackFilters.h */; };
4B193993133F321500547810 /* JackFilters.h in Headers */ = {isa = PBXBuildFile; fileRef = 4B193990133F321500547810 /* JackFilters.h */; };
......@@ -1586,6 +1598,8 @@
4B0A28E60D52073D002EFF74 /* jack_thread_wait */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = jack_thread_wait; sourceTree = BUILT_PRODUCTS_DIR; };
4B0A28EC0D520852002EFF74 /* tw.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = tw.c; path = "../example-clients/tw.c"; sourceTree = SOURCE_ROOT; };
4B0A292D0D52108E002EFF74 /* jack_thread_wait */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = jack_thread_wait; sourceTree = BUILT_PRODUCTS_DIR; };
4B1499EE14BDA5B300A51A3C /* JackGenericClientChannel.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = JackGenericClientChannel.cpp; path = ../common/JackGenericClientChannel.cpp; sourceTree = SOURCE_ROOT; };
4B1499EF14BDA5B300A51A3C /* JackGenericClientChannel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = JackGenericClientChannel.h; path = ../common/JackGenericClientChannel.h; sourceTree = SOURCE_ROOT; };
4B193931133F311400547810 /* JackMidiAsyncQueue.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = JackMidiAsyncQueue.cpp; path = ../common/JackMidiAsyncQueue.cpp; sourceTree = SOURCE_ROOT; };
4B193932133F311400547810 /* JackMidiAsyncQueue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = JackMidiAsyncQueue.h; path = ../common/JackMidiAsyncQueue.h; sourceTree = SOURCE_ROOT; };
4B19393B133F313000547810 /* JackMidiAsyncWaitQueue.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = JackMidiAsyncWaitQueue.cpp; path = ../common/JackMidiAsyncWaitQueue.cpp; sourceTree = SOURCE_ROOT; };
......@@ -3245,6 +3259,8 @@
4BA550FF05E2423600569492 /* Channels */ = {
isa = PBXGroup;
children = (
4B1499EE14BDA5B300A51A3C /* JackGenericClientChannel.cpp */,
4B1499EF14BDA5B300A51A3C /* JackGenericClientChannel.h */,
4BF8D1AF0834EEC400C94B91 /* JackChannel.h */,
4BB371D40C1AD85A0050C1E4 /* JackNotification.h */,
4BF8D1B30834EED500C94B91 /* JackInternalClientChannel.h */,
......@@ -3553,6 +3569,7 @@
4B193993133F321500547810 /* JackFilters.h in Headers */,
4B49D44614865F22003390F8 /* net.h in Headers */,
4B49D44714865F22003390F8 /* session.h in Headers */,
4B1499F714BDA5B300A51A3C /* JackGenericClientChannel.h in Headers */,