From bd58c41ecf9c0e80048215cea1dd7ba760b0edab Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Fri, 3 Oct 2008 10:22:13 +0200 Subject: [PATCH] obexd: Add initial steps for OBEX client implementation --- obexd/client/main.c | 76 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) diff --git a/obexd/client/main.c b/obexd/client/main.c index b3b9c1dc3..5c5bae1e6 100644 --- a/obexd/client/main.c +++ b/obexd/client/main.c @@ -25,7 +25,83 @@ #include #endif +#include +#include +#include +#include + +#include +#include + +#define CLIENT_SERVICE "org.openobex.client" + +#define CLIENT_INTERFACE "org.openobex.Client" +#define CLIENT_PATH "/" + +static DBusMessage *push_file(DBusConnection *connection, + DBusMessage *message, void *user_data) +{ + DBusMessage *reply; + + reply = dbus_message_new_method_return(message); + if (!reply) + return NULL; + + return reply; +} + +static GDBusMethodTable client_methods[] = { + { "PushFile", "s", "", push_file }, + { } +}; + +static GMainLoop *event_loop = NULL; + +static void sig_term(int sig) +{ + g_main_loop_quit(event_loop); +} + int main(int argc, char *argv[]) { + struct sigaction sa; + DBusConnection *conn; + DBusError err; + + dbus_error_init(&err); + + conn = g_dbus_setup_bus(DBUS_BUS_SESSION, CLIENT_SERVICE, &err); + if (conn == NULL) { + if (dbus_error_is_set(&err) == TRUE) { + fprintf(stderr, "%s\n", err.message); + dbus_error_free(&err); + } else + fprintf(stderr, "Can't register with session bus\n"); + exit(EXIT_FAILURE); + } + + if (g_dbus_register_interface(conn, CLIENT_PATH, CLIENT_INTERFACE, + client_methods, NULL, NULL, + NULL, NULL) == FALSE) { + fprintf(stderr, "Can't register client interface\n"); + dbus_connection_unref(conn); + exit(EXIT_FAILURE); + } + + event_loop = g_main_loop_new(NULL, FALSE); + + memset(&sa, 0, sizeof(sa)); + sa.sa_handler = sig_term; + sigaction(SIGINT, &sa, NULL); + sigaction(SIGTERM, &sa, NULL); + + g_main_loop_run(event_loop); + + g_dbus_unregister_interface(conn, CLIENT_PATH, CLIENT_INTERFACE); + + dbus_connection_unref(conn); + + g_main_loop_unref(event_loop); + return 0; } -- 2.47.3