1 #include <opensrf/osrf_settings.h>
3 osrf_host_config* config = NULL;
5 char* osrf_settings_host_value(const char* format, ...) {
6 VA_LIST_TO_STRING(format);
9 const char * msg = "NULL config pointer";
10 fprintf( stderr, "osrf_settings_host_value: %s\n", msg );
11 osrfLogError( OSRF_LOG_MARK, msg );
15 jsonObject* o = jsonObjectFindPath(config->config, VA_BUF);
16 char* val = jsonObjectToSimpleString(o);
21 jsonObject* osrf_settings_host_value_object(const char* format, ...) {
22 VA_LIST_TO_STRING(format);
25 const char * msg = "config pointer is NULL";
26 fprintf( stderr, "osrf_settings_host_value_object: %s\n", msg );
27 osrfLogError( OSRF_LOG_MARK, msg );
31 return jsonObjectFindPath(config->config, VA_BUF);
35 int osrf_settings_retrieve(const char* hostname) {
39 osrfAppSession* session = osrfAppSessionClientInit("opensrf.settings");
40 jsonObject* params = jsonNewObject(NULL);
41 jsonObjectPush(params, jsonNewObject(hostname));
42 int req_id = osrfAppSessionMakeRequest(
43 session, params, "opensrf.settings.host_config.get", 1, NULL );
44 osrfMessage* omsg = osrfAppSessionRequestRecv( session, req_id, 60 );
45 jsonObjectFree(params);
48 osrfLogError( OSRF_LOG_MARK, "No osrfMessage received from host %s (timeout?)", hostname);
49 } else if(!omsg->_result_content) {
50 osrfMessageFree(omsg);
53 "NULL or non-existant osrfMessage result content received from host %s, "
54 "broken message or no settings for host",
58 config = osrf_settings_new_host_config(hostname);
59 config->config = jsonObjectClone(omsg->_result_content);
60 osrfMessageFree(omsg);
63 osrf_app_session_request_finish( session, req_id );
64 osrfAppSessionFree( session );
67 osrfLogError( OSRF_LOG_MARK, "Unable to load config for host %s", hostname);
75 osrf_host_config* osrf_settings_new_host_config(const char* hostname) {
76 if(!hostname) return NULL;
77 osrf_host_config* c = safe_malloc(sizeof(osrf_host_config));
78 c->hostname = strdup(hostname);
83 void osrf_settings_free_host_config(osrf_host_config* c) {
87 jsonObjectFree(c->config);