Skip to content

Commit 171ec33

Browse files
committed
Define metadata APIs on libjackserver too
Signed-off-by: falkTX <falktx@falktx.com>
1 parent 2504203 commit 171ec33

File tree

8 files changed

+137
-123
lines changed

8 files changed

+137
-123
lines changed

common/JackAPI.cpp

Lines changed: 120 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
2828
#include "JackGlobals.h"
2929
#include "JackTime.h"
3030
#include "JackPortType.h"
31+
#include "JackMetadata.h"
3132
#include <math.h>
3233

3334
using namespace Jack;
@@ -277,6 +278,16 @@ extern "C"
277278
LIB_EXPORT void jack_uuid_unparse(jack_uuid_t, char buf[JACK_UUID_STRING_SIZE]);
278279
LIB_EXPORT int jack_uuid_empty(jack_uuid_t);
279280

281+
LIB_EXPORT int jack_set_property(jack_client_t*, jack_uuid_t subject, const char* key, const char* value, const char* type);
282+
LIB_EXPORT int jack_get_property(jack_uuid_t subject, const char* key, char** value, char** type);
283+
LIB_EXPORT void jack_free_description(jack_description_t* desc, int free_description_itself);
284+
LIB_EXPORT int jack_get_properties(jack_uuid_t subject, jack_description_t* desc);
285+
LIB_EXPORT int jack_get_all_properties(jack_description_t** descs);
286+
LIB_EXPORT int jack_remove_property(jack_client_t* client, jack_uuid_t subject, const char* key);
287+
LIB_EXPORT int jack_remove_properties(jack_client_t* client, jack_uuid_t subject);
288+
LIB_EXPORT int jack_remove_all_properties(jack_client_t* client);
289+
LIB_EXPORT int jack_set_property_change_callback(jack_client_t* client, JackPropertyChangeCallback callback, void* arg);
290+
280291
#ifdef __cplusplus
281292
}
282293
#endif
@@ -2140,3 +2151,112 @@ LIB_EXPORT int jack_uuid_empty(jack_uuid_t u)
21402151
{
21412152
return u == JACK_UUID_EMPTY_INITIALIZER;
21422153
}
2154+
2155+
// Metadata API
2156+
2157+
LIB_EXPORT int jack_set_property(jack_client_t* ext_client, jack_uuid_t subject, const char* key, const char* value, const char* type)
2158+
{
2159+
JackGlobals::CheckContext("jack_set_property");
2160+
2161+
JackClient* client = (JackClient*)ext_client;
2162+
jack_log("jack_set_property ext_client %x client %x ", ext_client, client);
2163+
if (client == NULL) {
2164+
jack_error("jack_set_property called with a NULL client");
2165+
return -1;
2166+
} else {
2167+
JackMetadata* metadata = GetMetadata();
2168+
return (metadata ? metadata->SetProperty(client, subject, key, value, type) : -1);
2169+
}
2170+
}
2171+
2172+
LIB_EXPORT int jack_get_property(jack_uuid_t subject, const char* key, char** value, char** type)
2173+
{
2174+
JackGlobals::CheckContext("jack_get_property");
2175+
2176+
JackMetadata* metadata = GetMetadata();
2177+
return (metadata ? metadata->GetProperty(subject, key, value, type) : -1);
2178+
}
2179+
2180+
LIB_EXPORT void jack_free_description(jack_description_t* desc, int free_actual_description_too)
2181+
{
2182+
JackGlobals::CheckContext("jack_free_description");
2183+
2184+
JackMetadata* metadata = GetMetadata();
2185+
if (metadata)
2186+
metadata->FreeDescription(desc, free_actual_description_too);
2187+
}
2188+
2189+
LIB_EXPORT int jack_get_properties(jack_uuid_t subject, jack_description_t* desc)
2190+
{
2191+
JackGlobals::CheckContext("jack_get_properties");
2192+
2193+
JackMetadata* metadata = GetMetadata();
2194+
return (metadata ? metadata->GetProperties(subject, desc) : -1);
2195+
}
2196+
2197+
LIB_EXPORT int jack_get_all_properties(jack_description_t** descriptions)
2198+
{
2199+
JackGlobals::CheckContext("jack_get_all_properties");
2200+
2201+
JackMetadata* metadata = GetMetadata();
2202+
return (metadata ? metadata->GetAllProperties(descriptions) : -1);
2203+
}
2204+
2205+
LIB_EXPORT int jack_remove_property(jack_client_t* ext_client, jack_uuid_t subject, const char* key)
2206+
{
2207+
JackGlobals::CheckContext("jack_remove_property");
2208+
2209+
JackClient* client = (JackClient*)ext_client;
2210+
jack_log("jack_remove_property ext_client %x client %x ", ext_client, client);
2211+
if (client == NULL) {
2212+
jack_error("jack_remove_property called with a NULL client");
2213+
return -1;
2214+
} else {
2215+
JackMetadata* metadata = GetMetadata();
2216+
return (metadata ? metadata->RemoveProperty(client, subject, key) : -1);
2217+
}
2218+
}
2219+
2220+
LIB_EXPORT int jack_remove_properties(jack_client_t* ext_client, jack_uuid_t subject)
2221+
{
2222+
JackGlobals::CheckContext("jack_remove_properties");
2223+
2224+
JackClient* client = (JackClient*)ext_client;
2225+
jack_log("jack_remove_properties ext_client %x client %x ", ext_client, client);
2226+
if (client == NULL) {
2227+
jack_error("jack_remove_properties called with a NULL client");
2228+
return -1;
2229+
} else {
2230+
JackMetadata* metadata = GetMetadata();
2231+
return (metadata ? metadata->RemoveProperties(client, subject) : -1);
2232+
}
2233+
}
2234+
2235+
LIB_EXPORT int jack_remove_all_properties(jack_client_t* ext_client)
2236+
{
2237+
JackGlobals::CheckContext("jack_remove_all_properties");
2238+
2239+
JackClient* client = (JackClient*)ext_client;
2240+
jack_log("jack_remove_all_properties ext_client %x client %x ", ext_client, client);
2241+
if (client == NULL) {
2242+
jack_error("jack_remove_all_properties called with a NULL client");
2243+
return -1;
2244+
} else {
2245+
JackMetadata* metadata = GetMetadata();
2246+
return (metadata ? metadata->RemoveAllProperties(client) : -1);
2247+
}
2248+
}
2249+
2250+
LIB_EXPORT int jack_set_property_change_callback(jack_client_t* ext_client, JackPropertyChangeCallback callback, void* arg)
2251+
{
2252+
JackGlobals::CheckContext("jack_set_property_change_callback");
2253+
2254+
JackClient* client = (JackClient*)ext_client;
2255+
jack_log("jack_set_property_change_callback ext_client %x client %x ", ext_client, client);
2256+
if (client == NULL) {
2257+
jack_error("jack_set_property_change_callback called with a NULL client");
2258+
return -1;
2259+
} else {
2260+
return client->SetPropertyChangeCallback(callback, arg);
2261+
}
2262+
}

common/JackGlobals.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ struct JackGlobals {
5959
extern SERVER_EXPORT JackGraphManager* GetGraphManager();
6060
extern SERVER_EXPORT JackEngineControl* GetEngineControl();
6161
extern SERVER_EXPORT JackSynchro* GetSynchroTable();
62+
extern SERVER_EXPORT JackMetadata* GetMetadata();
6263

6364
} // end of namespace
6465

common/JackInternalClient.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,11 @@ SERVER_EXPORT JackSynchro* GetSynchroTable()
5353
return JackServerGlobals::fInstance->GetSynchroTable();
5454
}
5555

56+
SERVER_EXPORT JackMetadata* GetMetadata()
57+
{
58+
return JackServerGlobals::fInstance->GetMetadata();
59+
}
60+
5661
JackInternalClient::JackInternalClient(JackServer* server, JackSynchro* table): JackClient(table)
5762
{
5863
fChannel = new JackInternalClientChannel(server);

common/JackLibAPI.cpp

Lines changed: 0 additions & 119 deletions
Original file line numberDiff line numberDiff line change
@@ -47,16 +47,6 @@ extern "C"
4747
LIB_EXPORT int jack_client_close (jack_client_t *client);
4848
LIB_EXPORT int jack_get_client_pid (const char *name);
4949

50-
LIB_EXPORT int jack_set_property(jack_client_t*, jack_uuid_t subject, const char* key, const char* value, const char* type);
51-
LIB_EXPORT int jack_get_property(jack_uuid_t subject, const char* key, char** value, char** type);
52-
LIB_EXPORT void jack_free_description(jack_description_t* desc, int free_description_itself);
53-
LIB_EXPORT int jack_get_properties(jack_uuid_t subject, jack_description_t* desc);
54-
LIB_EXPORT int jack_get_all_properties(jack_description_t** descs);
55-
LIB_EXPORT int jack_remove_property(jack_client_t* client, jack_uuid_t subject, const char* key);
56-
LIB_EXPORT int jack_remove_properties(jack_client_t* client, jack_uuid_t subject);
57-
LIB_EXPORT int jack_remove_all_properties(jack_client_t* client);
58-
LIB_EXPORT int jack_set_property_change_callback(jack_client_t* client, JackPropertyChangeCallback callback, void* arg);
59-
6050
#ifdef __cplusplus
6151
}
6252
#endif
@@ -222,112 +212,3 @@ LIB_EXPORT int jack_get_client_pid(const char *name)
222212
jack_error("jack_get_client_pid : not implemented on library side");
223213
return 0;
224214
}
225-
226-
// Metadata API
227-
228-
LIB_EXPORT int jack_set_property(jack_client_t* ext_client, jack_uuid_t subject, const char* key, const char* value, const char* type)
229-
{
230-
JackGlobals::CheckContext("jack_set_property");
231-
232-
JackClient* client = (JackClient*)ext_client;
233-
jack_log("jack_set_property ext_client %x client %x ", ext_client, client);
234-
if (client == NULL) {
235-
jack_error("jack_set_property called with a NULL client");
236-
return -1;
237-
} else {
238-
JackMetadata* metadata = GetMetadata();
239-
return (metadata ? metadata->SetProperty(client, subject, key, value, type) : -1);
240-
}
241-
}
242-
243-
LIB_EXPORT int jack_get_property(jack_uuid_t subject, const char* key, char** value, char** type)
244-
{
245-
JackGlobals::CheckContext("jack_get_property");
246-
247-
JackMetadata* metadata = GetMetadata();
248-
return (metadata ? metadata->GetProperty(subject, key, value, type) : -1);
249-
}
250-
251-
LIB_EXPORT void jack_free_description(jack_description_t* desc, int free_actual_description_too)
252-
{
253-
JackGlobals::CheckContext("jack_free_description");
254-
255-
JackMetadata* metadata = GetMetadata();
256-
if (metadata)
257-
metadata->FreeDescription(desc, free_actual_description_too);
258-
}
259-
260-
LIB_EXPORT int jack_get_properties(jack_uuid_t subject, jack_description_t* desc)
261-
{
262-
JackGlobals::CheckContext("jack_get_properties");
263-
264-
JackMetadata* metadata = GetMetadata();
265-
return (metadata ? metadata->GetProperties(subject, desc) : -1);
266-
}
267-
268-
LIB_EXPORT int jack_get_all_properties(jack_description_t** descriptions)
269-
{
270-
JackGlobals::CheckContext("jack_get_all_properties");
271-
272-
JackMetadata* metadata = GetMetadata();
273-
return (metadata ? metadata->GetAllProperties(descriptions) : -1);
274-
}
275-
276-
LIB_EXPORT int jack_remove_property(jack_client_t* ext_client, jack_uuid_t subject, const char* key)
277-
{
278-
JackGlobals::CheckContext("jack_remove_property");
279-
280-
JackClient* client = (JackClient*)ext_client;
281-
jack_log("jack_remove_property ext_client %x client %x ", ext_client, client);
282-
if (client == NULL) {
283-
jack_error("jack_remove_property called with a NULL client");
284-
return -1;
285-
} else {
286-
JackMetadata* metadata = GetMetadata();
287-
return (metadata ? metadata->RemoveProperty(client, subject, key) : -1);
288-
}
289-
}
290-
291-
LIB_EXPORT int jack_remove_properties(jack_client_t* ext_client, jack_uuid_t subject)
292-
{
293-
JackGlobals::CheckContext("jack_remove_properties");
294-
295-
JackClient* client = (JackClient*)ext_client;
296-
jack_log("jack_remove_properties ext_client %x client %x ", ext_client, client);
297-
if (client == NULL) {
298-
jack_error("jack_remove_properties called with a NULL client");
299-
return -1;
300-
} else {
301-
JackMetadata* metadata = GetMetadata();
302-
return (metadata ? metadata->RemoveProperties(client, subject) : -1);
303-
}
304-
}
305-
306-
LIB_EXPORT int jack_remove_all_properties(jack_client_t* ext_client)
307-
{
308-
JackGlobals::CheckContext("jack_remove_all_properties");
309-
310-
JackClient* client = (JackClient*)ext_client;
311-
jack_log("jack_remove_all_properties ext_client %x client %x ", ext_client, client);
312-
if (client == NULL) {
313-
jack_error("jack_remove_all_properties called with a NULL client");
314-
return -1;
315-
} else {
316-
JackMetadata* metadata = GetMetadata();
317-
return (metadata ? metadata->RemoveAllProperties(client) : -1);
318-
}
319-
}
320-
321-
LIB_EXPORT int jack_set_property_change_callback(jack_client_t* ext_client, JackPropertyChangeCallback callback, void* arg)
322-
{
323-
JackGlobals::CheckContext("jack_set_property_change_callback");
324-
325-
JackClient* client = (JackClient*)ext_client;
326-
jack_log("jack_set_property_change_callback ext_client %x client %x ", ext_client, client);
327-
if (client == NULL) {
328-
jack_error("jack_set_property_change_callback called with a NULL client");
329-
return -1;
330-
} else {
331-
return client->SetPropertyChangeCallback(callback, arg);
332-
}
333-
}

common/JackLibClient.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,6 @@ JackSynchro* GetSynchroTable()
5151
return (JackLibGlobals::fGlobals ? JackLibGlobals::fGlobals->fSynchroTable : 0);
5252
}
5353

54-
// Used for client-side Metadata API (JackLibAPI.cpp)
5554
JackMetadata* GetMetadata()
5655
{
5756
if (JackLibGlobals::fGlobals) {

common/JackLibClient.h

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -52,11 +52,9 @@ class JackLibClient : public JackClient
5252
JackGraphManager* GetGraphManager() const;
5353
JackEngineControl* GetEngineControl() const;
5454
JackClientControl* GetClientControl() const;
55+
JackMetadata* GetMetadata() const;
5556
};
5657

57-
// Used for client-side Metadata API (JackLibAPI.cpp)
58-
JackMetadata* GetMetadata();
59-
6058
} // end of namespace
6159

6260
#endif

common/JackServer.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ JackServer::JackServer(bool sync, bool temporary, int timeout, bool rt, int prio
5454
jack_info("self-connect-mode is \"%s\"", jack_get_self_connect_mode_description(self_connect_mode));
5555

5656
fGraphManager = JackGraphManager::Allocate(port_max);
57+
fMetadata = new JackMetadata(true);
5758
fEngineControl = new JackEngineControl(sync, temporary, timeout, rt, priority, verbose, clock, server_name);
5859
fEngine = new JackLockedEngine(fGraphManager, GetSynchroTable(), fEngineControl, self_connect_mode);
5960

@@ -76,6 +77,7 @@ JackServer::JackServer(bool sync, bool temporary, int timeout, bool rt, int prio
7677
JackServer::~JackServer()
7778
{
7879
JackGraphManager::Destroy(fGraphManager);
80+
delete fMetadata;
7981
delete fDriverInfo;
8082
delete fThreadedFreewheelDriver;
8183
delete fEngine;
@@ -464,5 +466,10 @@ JackGraphManager* JackServer::GetGraphManager()
464466
return fGraphManager;
465467
}
466468

469+
JackMetadata* JackServer::GetMetadata()
470+
{
471+
return fMetadata;
472+
}
473+
467474
} // end of namespace
468475

common/JackServer.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ class JackDriverClientInterface;
3838
struct JackEngineControl;
3939
class JackLockedEngine;
4040
class JackLoadableInternalClient;
41+
class JackMetadata;
4142

4243
/*!
4344
\brief The Jack server.
@@ -55,6 +56,7 @@ class SERVER_EXPORT JackServer
5556
JackLockedEngine* fEngine;
5657
JackEngineControl* fEngineControl;
5758
JackGraphManager* fGraphManager;
59+
JackMetadata* fMetadata;
5860
JackServerChannel fRequestChannel;
5961
JackConnectionManager fConnectionState;
6062
JackSynchro fSynchroTable[CLIENT_NUM];
@@ -104,6 +106,7 @@ class SERVER_EXPORT JackServer
104106
JackEngineControl* GetEngineControl();
105107
JackSynchro* GetSynchroTable();
106108
JackGraphManager* GetGraphManager();
109+
JackMetadata* GetMetadata();
107110

108111
};
109112

0 commit comments

Comments
 (0)