summaryrefslogtreecommitdiffstats
path: root/network
diff options
context:
space:
mode:
authorClaudio Takahasi <claudio.takahasi@openbossa.org>2007-03-22 14:21:01 +0000
committerClaudio Takahasi <claudio.takahasi@openbossa.org>2007-03-22 14:21:01 +0000
commitd1e15b83b04cf2cfe3f154678b1d72ebaf783512 (patch)
tree6382f1288dba2d80e7c2ea185a9632cb4164bf3a /network
parent0156f06757a3d7e813ae4124b499eac6c28d2ab7 (diff)
network: Added Server.GetUUID()
Diffstat (limited to 'network')
-rw-r--r--network/manager.c2
-rw-r--r--network/server.c31
-rw-r--r--network/server.h2
3 files changed, 28 insertions, 7 deletions
diff --git a/network/manager.c b/network/manager.c
index 42853811..a73c3147 100644
--- a/network/manager.c
+++ b/network/manager.c
@@ -138,7 +138,7 @@ static DBusHandlerResult create_server(DBusConnection *conn,
if (g_slist_find_custom(mgr->servers, path, (GCompareFunc) strcmp))
return create_path(conn, msg, path, NULL);
- if (server_register(conn, path) == -1) {
+ if (server_register(conn, path, uuid) == -1) {
err_failed(conn, msg, "D-Bus path registration failed");
g_free(path);
return DBUS_HANDLER_RESULT_HANDLED;
diff --git a/network/server.c b/network/server.c
index bce8e3b6..3318eecf 100644
--- a/network/server.c
+++ b/network/server.c
@@ -25,6 +25,8 @@
#include <config.h>
#endif
+#include <errno.h>
+
#include <bluetooth/bluetooth.h>
#include <glib.h>
@@ -38,13 +40,25 @@
#include "server.h"
struct network_server {
+ char *uuid;
char *path;
};
-static DBusHandlerResult get_uuid(DBusConnection *conn, DBusMessage *msg,
- void *data)
+static DBusHandlerResult get_uuid(DBusConnection *conn,
+ DBusMessage *msg, void *data)
{
- return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
+ struct network_server *ns = data;
+ DBusMessage *reply;
+
+ reply = dbus_message_new_method_return(msg);
+ if (!reply)
+ return DBUS_HANDLER_RESULT_NEED_MEMORY;
+
+ dbus_message_append_args(reply,
+ DBUS_TYPE_STRING, &ns->uuid,
+ DBUS_TYPE_INVALID);
+
+ return send_message_and_unref(conn, reply);
}
static DBusHandlerResult enable(DBusConnection *conn, DBusMessage *msg,
@@ -144,6 +158,9 @@ static void server_free(struct network_server *ns)
if (ns->path)
g_free(ns->path);
+ if (ns->uuid)
+ g_free(ns->uuid);
+
g_free(ns);
}
@@ -162,12 +179,15 @@ static const DBusObjectPathVTable server_table = {
.unregister_function = server_unregister,
};
-int server_register(DBusConnection *conn, const char *path)
+int server_register(DBusConnection *conn, const char *path, const char *uuid)
{
struct network_server *ns;
if (!conn)
- return -1;
+ return -EINVAL;
+
+ if (!path || !uuid)
+ return -EINVAL;
ns = g_new0(struct network_server, 1);
@@ -179,6 +199,7 @@ int server_register(DBusConnection *conn, const char *path)
}
ns->path = g_strdup(path);
+ ns->uuid = g_strdup(uuid);
info("Registered server path:%s", ns->path);
return 0;
diff --git a/network/server.h b/network/server.h
index 33f997a9..a3fba6d1 100644
--- a/network/server.h
+++ b/network/server.h
@@ -20,4 +20,4 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*
*/
-int server_register(DBusConnection *conn, const char *path);
+int server_register(DBusConnection *conn, const char *path, const char *uuid);