diff options
author | Ludovic Ferrandis <ludovic.ferrandis@intel.com> | 2013-09-30 17:40:39 +0200 |
---|---|---|
committer | Ludovic Ferrandis <ludovic.ferrandis@intel.com> | 2013-10-02 19:11:52 +0200 |
commit | bfb58279bddcd6c12d89a71fddd4c78d09c49a32 (patch) | |
tree | 6e6dcc65f19f60f422ffad2646f8ea1d0e58a5de | |
parent | 21c4ff0e1d94454915eceaef3461cb2bdf3010f7 (diff) | |
download | dleyna-server-bfb58279bddcd6c12d89a71fddd4c78d09c49a32.tar.gz |
[Property] Add 'Never Quit' property to Manager
It is now possible to manage the 'Never Quit' option via
the Set() methode.
Signed-off-by: Ludovic Ferrandis <ludovic.ferrandis@intel.com>
-rw-r--r-- | doc/server/dbus/API.txt | 4 | ||||
-rw-r--r-- | libdleyna/server/interface.h | 1 | ||||
-rw-r--r-- | libdleyna/server/manager.c | 37 | ||||
-rw-r--r-- | libdleyna/server/props.c | 9 | ||||
-rw-r--r-- | libdleyna/server/server.c | 2 |
5 files changed, 50 insertions, 3 deletions
diff --git a/doc/server/dbus/API.txt b/doc/server/dbus/API.txt index c9c5232..be9a570 100644 --- a/doc/server/dbus/API.txt +++ b/doc/server/dbus/API.txt @@ -137,6 +137,10 @@ of d-Bus properties. These properties are described below: |------------------------------------------------------------------------------| | Name | Type |m/o*| Description | |------------------------------------------------------------------------------| +| NeverQuit | b | m | True if the service always stay in | +| | | | memory running. False if the service | +| | | | quit when the last client disconnects. | +|------------------------------------------------------------------------------| | WhiteListEntries | as | m | The list of entries that compose the | | | | | white list used to filter the networks. | | | | | An Entry could be an interface name | diff --git a/libdleyna/server/interface.h b/libdleyna/server/interface.h index f77f845..3a2a6a4 100644 --- a/libdleyna/server/interface.h +++ b/libdleyna/server/interface.h @@ -49,6 +49,7 @@ enum dls_interface_type_ { #define DLS_INTERFACE_PROP_ERROR_MESSAGE "Message" /* Manager Properties */ +#define DLS_INTERFACE_PROP_NEVER_QUIT "NeverQuit" #define DLS_INTERFACE_PROP_WHITE_LIST_ENTRIES "WhiteListEntries" #define DLS_INTERFACE_PROP_WHITE_LIST_ENABLED "WhiteListEnabled" diff --git a/libdleyna/server/manager.c b/libdleyna/server/manager.c index c1afc96..1c32a02 100644 --- a/libdleyna/server/manager.c +++ b/libdleyna/server/manager.c @@ -167,6 +167,37 @@ void dls_manager_get_prop(dls_manager_t *manager, DLEYNA_LOG_DEBUG("Exit"); } +static void prv_set_prop_never_quit(dls_manager_t *manager, + dleyna_settings_t *settings, + gboolean never_quit, + GError **error) +{ + GVariant *prop_val; + gboolean old_val; + + DLEYNA_LOG_DEBUG("Enter %d", never_quit); + + old_val = dleyna_settings_is_never_quit(settings); + + if (old_val == never_quit) + goto exit; + + /* If no error, the white list will be updated in the reload callack + */ + dleyna_settings_set_never_quit(settings, never_quit, error); + + if (*error == NULL) { + prop_val = g_variant_new_boolean(never_quit); + prv_wl_notify_prop(manager, + DLS_INTERFACE_PROP_NEVER_QUIT, + prop_val); + } + +exit: + DLEYNA_LOG_DEBUG("Exit"); + return; +} + static void prv_set_prop_wl_enabled(dls_manager_t *manager, dleyna_settings_t *settings, gboolean enabled, @@ -263,7 +294,11 @@ void dls_manager_set_prop(dls_manager_t *manager, goto exit; } - if (!strcmp(name, DLS_INTERFACE_PROP_WHITE_LIST_ENABLED)) + if (!strcmp(name, DLS_INTERFACE_PROP_NEVER_QUIT)) + prv_set_prop_never_quit(manager, settings, + g_variant_get_boolean(param), + &error); + else if (!strcmp(name, DLS_INTERFACE_PROP_WHITE_LIST_ENABLED)) prv_set_prop_wl_enabled(manager, settings, g_variant_get_boolean(param), &error); diff --git a/libdleyna/server/props.c b/libdleyna/server/props.c index 6ff6cf6..c63ce30 100644 --- a/libdleyna/server/props.c +++ b/libdleyna/server/props.c @@ -2074,6 +2074,9 @@ static GVariant *prv_build_wl_entries(dleyna_settings_t *settings) void dls_props_add_manager(dleyna_settings_t *settings, GVariantBuilder *vb) { + prv_add_bool_prop(vb, DLS_INTERFACE_PROP_NEVER_QUIT, + dleyna_settings_is_never_quit(settings)); + prv_add_bool_prop(vb, DLS_INTERFACE_PROP_WHITE_LIST_ENABLED, dleyna_settings_is_white_list_enabled(settings)); @@ -2090,10 +2093,12 @@ GVariant *dls_props_get_manager_prop(dleyna_settings_t *settings, gchar *prop_str; #endif - if (!strcmp(prop, DLS_INTERFACE_PROP_WHITE_LIST_ENABLED)) { + if (!strcmp(prop, DLS_INTERFACE_PROP_NEVER_QUIT)) { + b_value = dleyna_settings_is_never_quit(settings); + retval = g_variant_ref_sink(g_variant_new_boolean(b_value)); + } else if (!strcmp(prop, DLS_INTERFACE_PROP_WHITE_LIST_ENABLED)) { b_value = dleyna_settings_is_white_list_enabled(settings); retval = g_variant_ref_sink(g_variant_new_boolean(b_value)); - } else if (!strcmp(prop, DLS_INTERFACE_PROP_WHITE_LIST_ENTRIES)) { retval = g_variant_ref_sink(prv_build_wl_entries(settings)); } diff --git a/libdleyna/server/server.c b/libdleyna/server/server.c index 40de9a2..863362c 100644 --- a/libdleyna/server/server.c +++ b/libdleyna/server/server.c @@ -91,6 +91,8 @@ static const gchar g_root_introspection[] = " <signal name='"DLS_INTERFACE_LOST_SERVER"'>" " <arg type='o' name='"DLS_INTERFACE_PATH"'/>" " </signal>" + " <property type='as' name='"DLS_INTERFACE_PROP_NEVER_QUIT"'" + " access='readwrite'/>" " <property type='as' name='"DLS_INTERFACE_PROP_WHITE_LIST_ENTRIES"'" " access='readwrite'/>" " <property type='b' name='"DLS_INTERFACE_PROP_WHITE_LIST_ENABLED"'" |