summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLudovic Ferrandis <ludovic.ferrandis@intel.com>2013-09-30 17:40:39 +0200
committerLudovic Ferrandis <ludovic.ferrandis@intel.com>2013-10-02 19:11:52 +0200
commitbfb58279bddcd6c12d89a71fddd4c78d09c49a32 (patch)
tree6e6dcc65f19f60f422ffad2646f8ea1d0e58a5de
parent21c4ff0e1d94454915eceaef3461cb2bdf3010f7 (diff)
downloaddleyna-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.txt4
-rw-r--r--libdleyna/server/interface.h1
-rw-r--r--libdleyna/server/manager.c37
-rw-r--r--libdleyna/server/props.c9
-rw-r--r--libdleyna/server/server.c2
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"'"