diff options
-rw-r--r-- | doc/manager-api.txt | 12 | ||||
-rw-r--r-- | src/manager.c | 46 |
2 files changed, 58 insertions, 0 deletions
diff --git a/doc/manager-api.txt b/doc/manager-api.txt index 7d13f01..71dde07 100644 --- a/doc/manager-api.txt +++ b/doc/manager-api.txt @@ -20,6 +20,18 @@ Methods dict GetProperties() Possible Errors: org.neard.Error.DoesNotExist org.neard.Error.InvalidArguments + + void RegisterHandoverAgent(object path) + + Register new handover agent. + + Possible Errors: org.neard.Error.InvalidArguments + + void UnregisterHandoverAgent(object path) + + Unregister an existing handover agent. + + Possible Errors: org.neard.Error.InvalidArguments Signals PropertyChanged(string name, variant value) diff --git a/src/manager.c b/src/manager.c index cb62260..c1490cb 100644 --- a/src/manager.c +++ b/src/manager.c @@ -133,6 +133,46 @@ void __near_manager_adapter_remove(uint32_t idx) NULL); } +static DBusMessage *register_handover_agent(DBusConnection *conn, + DBusMessage *msg, void *data) +{ + const char *sender, *path; + int err; + + DBG("conn %p", conn); + + sender = dbus_message_get_sender(msg); + + dbus_message_get_args(msg, NULL, DBUS_TYPE_OBJECT_PATH, &path, + DBUS_TYPE_INVALID); + + err = __near_handover_agent_register(sender, path); + if (err < 0) + return __near_error_failed(msg, -err); + + return g_dbus_create_reply(msg, DBUS_TYPE_INVALID); +} + +static DBusMessage *unregister_handover_agent(DBusConnection *conn, + DBusMessage *msg, void *data) +{ + const char *sender, *path; + int err; + + DBG("conn %p", conn); + + sender = dbus_message_get_sender(msg); + + dbus_message_get_args(msg, NULL, DBUS_TYPE_OBJECT_PATH, &path, + DBUS_TYPE_INVALID); + + err = __near_handover_agent_unregister(sender, path); + if (err < 0) + return __near_error_failed(msg, -err); + + return g_dbus_create_reply(msg, DBUS_TYPE_INVALID); +} + static const GDBusMethodTable manager_methods[] = { { GDBUS_METHOD("GetProperties", NULL, GDBUS_ARGS({"properties", "a{sv}"}), @@ -140,6 +180,12 @@ static const GDBusMethodTable manager_methods[] = { { GDBUS_METHOD("SetProperty", GDBUS_ARGS({"name", "s"}, {"value", "v"}), NULL, set_property) }, + { GDBUS_METHOD("RegisterHandoverAgent", + GDBUS_ARGS({ "path", "o" }), NULL, + register_handover_agent) }, + { GDBUS_METHOD("UnregisterHandoverAgent", + GDBUS_ARGS({ "path", "o" }), NULL, + unregister_handover_agent) }, { }, }; |