summaryrefslogtreecommitdiff
path: root/src/manager.c
diff options
context:
space:
mode:
authorSamuel Ortiz <sameo@linux.intel.com>2010-04-01 12:25:33 +0200
committerSamuel Ortiz <sameo@linux.intel.com>2010-04-03 02:03:48 +0200
commitd55c478a09cb438bdd7268effb75994b6abf885c (patch)
tree2a43a993dd5ab37218aa939b1bd07c51a8a9a1b8 /src/manager.c
parentbb5932d21d06aa4e73d5a08c4122a025c1522da8 (diff)
downloadconnman-d55c478a09cb438bdd7268effb75994b6abf885c.tar.gz
connman-d55c478a09cb438bdd7268effb75994b6abf885c.tar.bz2
connman-d55c478a09cb438bdd7268effb75994b6abf885c.zip
Add session D-Bus manager API
Diffstat (limited to 'src/manager.c')
-rw-r--r--src/manager.c42
1 files changed, 42 insertions, 0 deletions
diff --git a/src/manager.c b/src/manager.c
index 141e9593..da0ee53d 100644
--- a/src/manager.c
+++ b/src/manager.c
@@ -538,6 +538,46 @@ static DBusMessage *unregister_counter(DBusConnection *conn,
return g_dbus_create_reply(msg, DBUS_TYPE_INVALID);
}
+static DBusMessage *request_session(DBusConnection *conn,
+ DBusMessage *msg, void *data)
+{
+ const char *bearer, *sender, *service_path;
+ struct connman_service *service;
+
+ DBG("conn %p", conn);
+
+ sender = dbus_message_get_sender(msg);
+
+ dbus_message_get_args(msg, NULL, DBUS_TYPE_STRING, &bearer,
+ DBUS_TYPE_INVALID);
+
+ service = __connman_session_request(bearer, sender);
+ if (service == NULL)
+ return __connman_error_failed(msg, EINVAL);
+
+ service_path = __connman_service_get_path(service);
+
+ return g_dbus_create_reply(msg, DBUS_TYPE_OBJECT_PATH, &service_path,
+ DBUS_TYPE_INVALID);
+}
+
+static DBusMessage *release_session(DBusConnection *conn,
+ DBusMessage *msg, void *data)
+{
+ const char *sender;
+ int err;
+
+ DBG("conn %p", conn);
+
+ sender = dbus_message_get_sender(msg);
+
+ err = __connman_session_release(sender);
+ if (err < 0)
+ return __connman_error_failed(msg, -err);
+
+ return g_dbus_create_reply(msg, DBUS_TYPE_INVALID);
+}
+
static GDBusMethodTable manager_methods[] = {
{ "GetProperties", "", "a{sv}", get_properties },
{ "SetProperty", "sv", "", set_property },
@@ -558,6 +598,8 @@ static GDBusMethodTable manager_methods[] = {
{ "UnregisterAgent", "o", "", unregister_agent },
{ "RegisterCounter", "ou", "", register_counter },
{ "UnregisterCounter", "o", "", unregister_counter },
+ { "RequestSession", "s", "o", request_session },
+ { "ReleaseSession", "s", "", release_session },
{ },
};