From 6ad7516f69f08c9c5e30332f95b50c0dd0cd1cb1 Mon Sep 17 00:00:00 2001 From: William Jon McCann Date: Wed, 23 Jan 2008 11:04:23 -0500 Subject: add GetSessions method to Manager interface --- doc/spec/ck-manager.xml | 17 +++++++++++++++++ doc/xml/ref-ck-manager.xml | 10 +++++++++- src/ck-manager.c | 25 +++++++++++++++++++++++++ src/ck-manager.h | 3 +++ src/ck-manager.xml | 3 +++ 5 files changed, 57 insertions(+), 1 deletion(-) diff --git a/doc/spec/ck-manager.xml b/doc/spec/ck-manager.xml index acc065b..f405c25 100644 --- a/doc/spec/ck-manager.xml +++ b/doc/spec/ck-manager.xml @@ -150,6 +150,23 @@ + + + + an array of Session IDs + + + + + This gets a list of all the Sessions + that are currently present on the system. + Each Session ID is an D-Bus object path for the object that implements the + Session interface. + + org.freedesktop.ConsoleKit.Session + + + diff --git a/doc/xml/ref-ck-manager.xml b/doc/xml/ref-ck-manager.xml index f964295..3eb3a92 100644 --- a/doc/xml/ref-ck-manager.xml +++ b/doc/xml/ref-ck-manager.xml @@ -16,6 +16,7 @@ CloseSession (in 's' cookie, out 'b' result) GetSeats (out 'ao' seats) +GetSessions (out 'ao' sessions) GetSessionForCookie (in 's' cookie, out 'o' ssid) GetSessionForUnixProcess (in 'u' pid, @@ -132,7 +133,14 @@ See also: Seat interface. seats:an array of Seat IDs See also: -org.freedesktop.ConsoleKit.Seat<anchor role="function" id="Manager.GetSessionForCookie"/>GetSessionForCookie ()GetSessionForCookieManagerGetSessionForCookie (in 's' cookie, +org.freedesktop.ConsoleKit.Seat<anchor role="function" id="Manager.GetSessions"/>GetSessions ()GetSessionsManagerGetSessions (out 'ao' sessions) + This gets a list of all the Sessions + that are currently present on the system. + Each Session ID is an D-Bus object path for the object that implements the + Session interface. + sessions:an array of Session IDs +See also: +org.freedesktop.ConsoleKit.Session<anchor role="function" id="Manager.GetSessionForCookie"/>GetSessionForCookie ()GetSessionForCookieManagerGetSessionForCookie (in 's' cookie, out 'o' ssid) Returns the session ID that is associated with the specified cookie. diff --git a/src/ck-manager.c b/src/ck-manager.c index 9771d30..156ea93 100644 --- a/src/ck-manager.c +++ b/src/ck-manager.c @@ -2411,6 +2411,31 @@ ck_manager_get_seats (CkManager *manager, return TRUE; } +static void +listify_session_ids (char *id, + CkSession *session, + GPtrArray **array) +{ + g_ptr_array_add (*array, g_strdup (id)); +} + +gboolean +ck_manager_get_sessions (CkManager *manager, + GPtrArray **sessions, + GError **error) +{ + g_return_val_if_fail (CK_IS_MANAGER (manager), FALSE); + + if (sessions == NULL) { + return FALSE; + } + + *sessions = g_ptr_array_new (); + g_hash_table_foreach (manager->priv->sessions, (GHFunc)listify_session_ids, sessions); + + return TRUE; +} + static void add_seat_for_file (CkManager *manager, const char *filename) diff --git a/src/ck-manager.h b/src/ck-manager.h index 55cb5cb..45910b7 100644 --- a/src/ck-manager.h +++ b/src/ck-manager.h @@ -85,6 +85,9 @@ gboolean ck_manager_restart (CkManager /* Authoritative properties */ gboolean ck_manager_open_session (CkManager *manager, DBusGMethodInvocation *context); +gboolean ck_manager_get_sessions (CkManager *manager, + GPtrArray **sessions, + GError **error); gboolean ck_manager_get_seats (CkManager *manager, GPtrArray **seats, GError **error); diff --git a/src/ck-manager.xml b/src/ck-manager.xml index 031d8a1..0ca74fa 100644 --- a/src/ck-manager.xml +++ b/src/ck-manager.xml @@ -24,6 +24,9 @@ + + + -- cgit