Merge branch 'master' into develop
[jack2.git] / common / JackInternalClientChannel.h
blobfd75e27f4e5fcfc0de9e2fa1d977d73b11f94c21
1 /*
2 Copyright (C) 2004-2008 Grame
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.
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.
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.
20 #ifndef __JackInternalClientChannel__
21 #define __JackInternalClientChannel__
23 #include "JackChannel.h"
25 namespace Jack
28 /*!
29 \brief JackClientChannel for server internal clients.
32 class JackInternalClientChannel : public detail::JackClientChannelInterface
35 private:
37 JackServer* fServer;
38 JackLockedEngine* fEngine;
40 public:
42 JackInternalClientChannel(JackServer* server): fServer(server), fEngine(server->GetEngine())
44 virtual ~JackInternalClientChannel()
47 void ClientCheck(const char* name, jack_uuid_t uuid, char* name_res, int protocol, int options, int* status, int* result, int open)
49 *result = fEngine->ClientCheck(name, uuid, name_res, protocol, options, status);
51 void ClientOpen(const char* name, int* ref, JackEngineControl** shared_engine, JackGraphManager** shared_manager, JackClientInterface* client, int* result)
53 *result = fEngine->ClientInternalOpen(name, ref, shared_engine, shared_manager, client, true);
55 void ClientClose(int refnum, int* result)
57 *result = fEngine->ClientInternalClose(refnum, true);
60 void ClientActivate(int refnum, int is_real_time, int* result)
62 *result = fEngine->ClientActivate(refnum, is_real_time);
64 void ClientDeactivate(int refnum, int* result)
66 *result = fEngine->ClientDeactivate(refnum);
69 void PortRegister(int refnum, const char* name, const char* type, unsigned int flags, unsigned int buffer_size, unsigned int* port_index, int* result)
71 *result = fEngine->PortRegister(refnum, name, type, flags, buffer_size, port_index);
73 void PortUnRegister(int refnum, jack_port_id_t port_index, int* result)
75 *result = fEngine->PortUnRegister(refnum, port_index);
77 void PortConnect(int refnum, const char* src, const char* dst, int* result)
79 *result = fEngine->PortConnect(refnum, src, dst);
81 void PortDisconnect(int refnum, const char* src, const char* dst, int* result)
83 *result = fEngine->PortDisconnect(refnum, src, dst);
85 void PortConnect(int refnum, jack_port_id_t src, jack_port_id_t dst, int* result)
87 *result = fEngine->PortConnect(refnum, src, dst);
89 void PortDisconnect(int refnum, jack_port_id_t src, jack_port_id_t dst, int* result)
91 *result = fEngine->PortDisconnect(refnum, src, dst);
93 void PortRename(int refnum, jack_port_id_t port, const char* name, int* result)
95 *result = fEngine->PortRename(refnum, port, name);
98 void SetBufferSize(jack_nframes_t buffer_size, int* result)
100 *result = fServer->SetBufferSize(buffer_size);
102 void SetFreewheel(int onoff, int* result)
104 *result = fServer->SetFreewheel(onoff);
106 void ComputeTotalLatencies(int* result)
108 *result = fEngine->ComputeTotalLatencies();
111 void ReleaseTimebase(int refnum, int* result)
113 *result = fServer->ReleaseTimebase(refnum);
116 void SetTimebaseCallback(int refnum, int conditional, int* result)
118 *result = fServer->SetTimebaseCallback(refnum, conditional);
121 void GetInternalClientName(int refnum, int int_ref, char* name_res, int* result)
123 *result = fEngine->GetInternalClientName(int_ref, name_res);
126 void InternalClientHandle(int refnum, const char* client_name, int* status, int* int_ref, int* result)
128 *result = fEngine->InternalClientHandle(client_name, status, int_ref);
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)
133 *result = fServer->InternalClientLoad1(client_name, so_name, objet_data, options, int_ref, uuid, status);
136 void InternalClientUnload(int refnum, int int_ref, int* status, int* result)
138 *result = fEngine->InternalClientUnload(int_ref, status);
141 void SessionNotify(int refnum, const char *target, jack_session_event_type_t type, const char *path, jack_session_command_t** result)
143 JackSessionNotifyResult* res;
144 fEngine->SessionNotify(refnum, target, type, path, NULL, &res);
145 if (res == NULL) {
146 *result = NULL;
147 return;
150 *result = res->GetCommands();
151 delete(res);
154 void SessionReply(int refnum, int* result)
156 *result = fEngine->SessionReply(refnum);
159 void GetUUIDForClientName(int refnum, const char* client_name, char* uuid_res, int* result)
161 *result = fEngine->GetUUIDForClientName(client_name, uuid_res);
164 void GetClientNameForUUID(int refnum, const char* uuid, char* name_res, int* result)
166 *result = fEngine->GetClientNameForUUID(uuid, name_res);
169 void ReserveClientName(int refnum, const char* client_name, const char *uuid, int* result)
171 *result = fEngine->ReserveClientName(client_name, uuid);
174 void ClientHasSessionCallback(const char* client_name, int* result)
176 *result = fEngine->ClientHasSessionCallback(client_name);
182 } // end of namespace
184 #endif