1 /* 2 Copyright (C) 2004-2008 Grame 3 4 This program is free software; you can redistribute it and/or modify 5 it under the terms of the GNU General Public License as published by 6 the Free Software Foundation; either version 2 of the License, or 7 (at your option) any later version. 8 9 This program is distributed in the hope that it will be useful, 10 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 GNU General Public License for more details. 13 14 You should have received a copy of the GNU General Public License 15 along with this program; if not, write to the Free Software 16 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 17 18 */ 19 20 #ifndef __JackInternalClientChannel__ 21 #define __JackInternalClientChannel__ 22 23 #include "JackChannel.h" 24 25 namespace Jack 26 { 27 28 /*! 29 \brief JackClientChannel for server internal clients. 30 */ 31 32 class JackInternalClientChannel : public detail::JackClientChannelInterface 33 { 34 35 private: 36 37 JackServer* fServer; 38 JackLockedEngine* fEngine; 39 40 public: 41 JackInternalClientChannel(JackServer * server)42 JackInternalClientChannel(JackServer* server): fServer(server), fEngine(server->GetEngine()) 43 {} ~JackInternalClientChannel()44 virtual ~JackInternalClientChannel() 45 {} 46 ClientCheck(const char * name,jack_uuid_t uuid,char * name_res,int protocol,int options,int * status,int * result,int open)47 void ClientCheck(const char* name, jack_uuid_t uuid, char* name_res, int protocol, int options, int* status, int* result, int open) 48 { 49 *result = fEngine->ClientCheck(name, uuid, name_res, protocol, options, status); 50 } ClientOpen(const char * name,int * ref,JackEngineControl ** shared_engine,JackGraphManager ** shared_manager,JackClientInterface * client,int * result)51 void ClientOpen(const char* name, int* ref, JackEngineControl** shared_engine, JackGraphManager** shared_manager, JackClientInterface* client, int* result) 52 { 53 *result = fEngine->ClientInternalOpen(name, ref, shared_engine, shared_manager, client, true); 54 } ClientClose(int refnum,int * result)55 void ClientClose(int refnum, int* result) 56 { 57 *result = fEngine->ClientInternalClose(refnum, true); 58 } 59 ClientActivate(int refnum,int is_real_time,int * result)60 void ClientActivate(int refnum, int is_real_time, int* result) 61 { 62 *result = fEngine->ClientActivate(refnum, is_real_time); 63 } ClientDeactivate(int refnum,int * result)64 void ClientDeactivate(int refnum, int* result) 65 { 66 *result = fEngine->ClientDeactivate(refnum); 67 } 68 PortRegister(int refnum,const char * name,const char * type,unsigned int flags,unsigned int buffer_size,unsigned int * port_index,int * result)69 void PortRegister(int refnum, const char* name, const char* type, unsigned int flags, unsigned int buffer_size, unsigned int* port_index, int* result) 70 { 71 *result = fEngine->PortRegister(refnum, name, type, flags, buffer_size, port_index); 72 } PortUnRegister(int refnum,jack_port_id_t port_index,int * result)73 void PortUnRegister(int refnum, jack_port_id_t port_index, int* result) 74 { 75 *result = fEngine->PortUnRegister(refnum, port_index); 76 } PortConnect(int refnum,const char * src,const char * dst,int * result)77 void PortConnect(int refnum, const char* src, const char* dst, int* result) 78 { 79 *result = fEngine->PortConnect(refnum, src, dst); 80 } PortDisconnect(int refnum,const char * src,const char * dst,int * result)81 void PortDisconnect(int refnum, const char* src, const char* dst, int* result) 82 { 83 *result = fEngine->PortDisconnect(refnum, src, dst); 84 } PortConnect(int refnum,jack_port_id_t src,jack_port_id_t dst,int * result)85 void PortConnect(int refnum, jack_port_id_t src, jack_port_id_t dst, int* result) 86 { 87 *result = fEngine->PortConnect(refnum, src, dst); 88 } PortDisconnect(int refnum,jack_port_id_t src,jack_port_id_t dst,int * result)89 void PortDisconnect(int refnum, jack_port_id_t src, jack_port_id_t dst, int* result) 90 { 91 *result = fEngine->PortDisconnect(refnum, src, dst); 92 } PortRename(int refnum,jack_port_id_t port,const char * name,int * result)93 void PortRename(int refnum, jack_port_id_t port, const char* name, int* result) 94 { 95 *result = fEngine->PortRename(refnum, port, name); 96 } 97 SetBufferSize(jack_nframes_t buffer_size,int * result)98 void SetBufferSize(jack_nframes_t buffer_size, int* result) 99 { 100 *result = fServer->SetBufferSize(buffer_size); 101 } SetFreewheel(int onoff,int * result)102 void SetFreewheel(int onoff, int* result) 103 { 104 *result = fServer->SetFreewheel(onoff); 105 } ComputeTotalLatencies(int * result)106 void ComputeTotalLatencies(int* result) 107 { 108 *result = fEngine->ComputeTotalLatencies(); 109 } 110 ReleaseTimebase(int refnum,int * result)111 void ReleaseTimebase(int refnum, int* result) 112 { 113 *result = fServer->ReleaseTimebase(refnum); 114 } 115 SetTimebaseCallback(int refnum,int conditional,int * result)116 void SetTimebaseCallback(int refnum, int conditional, int* result) 117 { 118 *result = fServer->SetTimebaseCallback(refnum, conditional); 119 } 120 GetInternalClientName(int refnum,int int_ref,char * name_res,int * result)121 void GetInternalClientName(int refnum, int int_ref, char* name_res, int* result) 122 { 123 *result = fEngine->GetInternalClientName(int_ref, name_res); 124 } 125 InternalClientHandle(int refnum,const char * client_name,int * status,int * int_ref,int * result)126 void InternalClientHandle(int refnum, const char* client_name, int* status, int* int_ref, int* result) 127 { 128 *result = fEngine->InternalClientHandle(client_name, status, int_ref); 129 } 130 InternalClientLoad(int refnum,const char * client_name,const char * so_name,const char * objet_data,int options,int * status,int * int_ref,jack_uuid_t uuid,int * result)131 void InternalClientLoad(int refnum, const char* client_name, const char* so_name, const char* objet_data, int options, int* status, int* int_ref, jack_uuid_t uuid, int* result) 132 { 133 *result = fServer->InternalClientLoad1(client_name, so_name, objet_data, options, int_ref, uuid, status); 134 } 135 InternalClientUnload(int refnum,int int_ref,int * status,int * result)136 void InternalClientUnload(int refnum, int int_ref, int* status, int* result) 137 { 138 *result = fEngine->InternalClientUnload(int_ref, status); 139 } 140 SessionNotify(int refnum,const char * target,jack_session_event_type_t type,const char * path,jack_session_command_t ** result)141 void SessionNotify(int refnum, const char *target, jack_session_event_type_t type, const char *path, jack_session_command_t** result) 142 { 143 JackSessionNotifyResult* res; 144 fEngine->SessionNotify(refnum, target, type, path, NULL, &res); 145 if (res == NULL) { 146 *result = NULL; 147 return; 148 } 149 150 *result = res->GetCommands(); 151 delete(res); 152 } 153 SessionReply(int refnum,int * result)154 void SessionReply(int refnum, int* result) 155 { 156 *result = fEngine->SessionReply(refnum); 157 } 158 GetUUIDForClientName(int refnum,const char * client_name,char * uuid_res,int * result)159 void GetUUIDForClientName(int refnum, const char* client_name, char* uuid_res, int* result) 160 { 161 *result = fEngine->GetUUIDForClientName(client_name, uuid_res); 162 } 163 GetClientNameForUUID(int refnum,const char * uuid,char * name_res,int * result)164 void GetClientNameForUUID(int refnum, const char* uuid, char* name_res, int* result) 165 { 166 *result = fEngine->GetClientNameForUUID(uuid, name_res); 167 } 168 ReserveClientName(int refnum,const char * client_name,const char * uuid,int * result)169 void ReserveClientName(int refnum, const char* client_name, const char *uuid, int* result) 170 { 171 *result = fEngine->ReserveClientName(client_name, uuid); 172 } 173 ClientHasSessionCallback(const char * client_name,int * result)174 void ClientHasSessionCallback(const char* client_name, int* result) 175 { 176 *result = fEngine->ClientHasSessionCallback(client_name); 177 } 178 179 180 }; 181 182 } // end of namespace 183 184 #endif 185 186