e/connman: register agent

SVN revision: 76062
This commit is contained in:
Bruno Dilly 2012-09-03 22:03:18 +00:00
parent 69b4c1537c
commit 3abf1f04e6
4 changed files with 53 additions and 1 deletions

View File

@ -54,6 +54,7 @@ struct Connman_Manager
{
DBusPendingCall *get_services;
DBusPendingCall *get_properties;
DBusPendingCall *register_agent;
} pending;
};

View File

@ -13,7 +13,6 @@ static unsigned int init_count;
static E_DBus_Connection *conn;
static E_DBus_Object *agent_obj;
#define AGENT_PATH "/org/enlightenment/connman/agent"
#define AGENT_IFACE "net.connman.Agent"
static DBusMessage *_agent_release(E_DBus_Object *obj, DBusMessage *msg)

View File

@ -3,6 +3,8 @@
#include "E_Connman.h"
#define AGENT_PATH "/org/enlightenment/connman/agent"
unsigned int econnman_agent_init(E_DBus_Connection *edbus_conn) EINA_ARG_NONNULL(1);
unsigned int econnman_agent_shutdown(void);

View File

@ -672,6 +672,49 @@ static void _manager_get_prop_cb(void *data, DBusMessage *reply,
}
}
static void
_manager_agent_register_cb(void *data, DBusMessage *reply, DBusError *err)
{
struct Connman_Manager *cm = data;
cm->pending.register_agent = NULL;
if (dbus_error_is_set(err))
{
WRN("Could not register agent. %s: %s", err->name, err->message);
return;
}
INF("Agent registered");
}
static void
_manager_agent_register(struct Connman_Manager *cm)
{
const char *path = AGENT_PATH;
DBusMessageIter itr;
DBusMessage *msg;
if (!cm)
return;
msg = dbus_message_new_method_call(CONNMAN_BUS_NAME, "/",
CONNMAN_MANAGER_IFACE, "RegisterAgent");
if (!msg)
{
ERR("Could not create D-Bus message");
return;
}
dbus_message_iter_init_append(msg, &itr);
dbus_message_iter_append_basic(&itr, DBUS_TYPE_OBJECT_PATH, &path);
cm->pending.register_agent = e_dbus_message_send(conn, msg,
_manager_agent_register_cb,
-1, cm);
}
static void _manager_free(struct Connman_Manager *cm)
{
if (!cm)
@ -697,6 +740,12 @@ static void _manager_free(struct Connman_Manager *cm)
cm->pending.get_properties = NULL;
}
if (cm->pending.register_agent)
{
dbus_pending_call_cancel(cm->pending.register_agent);
cm->pending.register_agent = NULL;
}
_connman_object_clear(&cm->obj);
free(cm);
}
@ -764,6 +813,7 @@ static inline void _e_connman_system_name_owner_enter(const char *owner)
{
bus_owner = strdup(owner);
connman_manager = _manager_new();
_manager_agent_register(connman_manager);
ecore_event_add(E_CONNMAN_EVENT_MANAGER_IN, NULL, NULL, NULL);
econnman_mod_manager_inout(connman_manager);
}