summaryrefslogtreecommitdiffstats
path: root/hcid/server.c
diff options
context:
space:
mode:
authorMarcel Holtmann <marcel@holtmann.org>2008-03-12 18:57:37 +0000
committerMarcel Holtmann <marcel@holtmann.org>2008-03-12 18:57:37 +0000
commit5d14a87639406b220edaf07088eddc22a7f9b0fe (patch)
tree4b7f16c32bf37413f28ceabf59db100edd10ae11 /hcid/server.c
parent75add5651e5dbc49c9c144acceac7e2c32d9bd16 (diff)
Remove the local D-Bus setup
Diffstat (limited to 'hcid/server.c')
-rw-r--r--hcid/server.c123
1 files changed, 7 insertions, 116 deletions
diff --git a/hcid/server.c b/hcid/server.c
index 5a6924cb..70bed47a 100644
--- a/hcid/server.c
+++ b/hcid/server.c
@@ -25,129 +25,20 @@
#include <config.h>
#endif
-#include <fcntl.h>
-#include <unistd.h>
-#include <string.h>
-#include <sys/stat.h>
+#include <glib.h>
-#include <dbus.h>
-
-#include "dbus-database.h"
-
-#include "logging.h"
#include "server.h"
-static DBusHandlerResult filter_function(DBusConnection *conn,
- DBusMessage *msg, void *data)
-{
- if (dbus_message_is_signal(msg, DBUS_INTERFACE_LOCAL, "Disconnected") &&
- strcmp(dbus_message_get_path(msg), DBUS_PATH_LOCAL) == 0) {
- debug("Received local disconnected signal");
- name_listener_indicate_disconnect(conn);
- return DBUS_HANDLER_RESULT_HANDLED;
- }
-
- return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
-}
-
-static DBusHandlerResult message_handler(DBusConnection *conn,
- DBusMessage *msg, void *data)
-{
- if (strcmp(dbus_message_get_interface(msg), DATABASE_INTERFACE) == 0)
- return database_message(conn, msg, data);
-
- debug("%s -> %s.%s", dbus_message_get_path(msg),
- dbus_message_get_interface(msg), dbus_message_get_member(msg));
-
- return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
-}
-
-static void unregister_handler(DBusConnection *conn, void *data)
-{
- debug("Unregister local connection %p", conn);
-}
-
-static void handle_connection(DBusServer *server, DBusConnection *conn, void *data)
-{
- DBusObjectPathVTable vtable = { &unregister_handler, &message_handler,
- NULL, NULL, NULL, NULL};
-
- debug("New local connection %p", conn);
-
- dbus_connection_add_filter(conn, filter_function, NULL, NULL);
-
- if (dbus_connection_register_object_path(conn, "/org/bluez",
- &vtable, NULL) == FALSE) {
- error("Can't register local object path");
- return;
- }
-
- dbus_connection_ref(conn);
+static GSList *servers = NULL;
- //dbus_connection_setup_with_g_main(conn, NULL);
- setup_dbus_with_main_loop(conn);
-}
-
-static DBusServer *server = NULL;
-
-char *get_local_server_address(void)
-{
- return dbus_server_get_address(server);
-}
-
-void init_local_server(void)
+int bt_register_server(struct bt_server *server)
{
- const char *ext_only[] = { "EXTERNAL", NULL };
- char *address;
- DBusError err;
- int fd, len;
-
- dbus_error_init(&err);
-
- server = dbus_server_listen("unix:tmpdir=/var/run", &err);
- if (server == NULL) {
- error("Can't create local D-Bus server");
- dbus_error_free(&err);
- return;
- }
-
- address = dbus_server_get_address(server);
-
- info("Created local server at %s", address);
+ servers = g_slist_append(servers, server);
- fd = open("/var/run/bluetoothd_address",
- O_WRONLY | O_CREAT | O_TRUNC, S_IRUSR);
- if (fd < 0) {
- error("Can't create server address file");
- } else {
- len = write(fd, address, strlen(address));
- close(fd);
- }
-
- dbus_free(address);
-
- //dbus_server_setup_with_g_main(server, NULL);
- setup_dbus_server_with_main_loop(server);
-
- dbus_server_set_new_connection_function(server, handle_connection,
- NULL, NULL);
-
- dbus_server_set_auth_mechanisms(server, ext_only);
+ return 0;
}
-void shutdown_local_server(void)
+void bt_unregister_server(struct bt_server *server)
{
- if (server == NULL)
- return;
-
- info("Shutting down local server");
-
- if (unlink("/var/run/bluetoothd_address") < 0)
- error("Can't remove server address file");
-
- dbus_server_disconnect(server);
-
- dbus_server_unref(server);
-
- server = NULL;
+ servers = g_slist_remove(servers, server);
}