From 815bfac99d33548f8c8656c08319cbb8f1aa8360 Mon Sep 17 00:00:00 2001 From: Claudio Takahasi Date: Thu, 25 Feb 2010 17:57:49 -0300 Subject: [PATCH] obexd: Cleanup of disconnect function of OBEX service driver --- obexd/plugins/ftp.c | 7 ++-- obexd/plugins/opp.c | 10 ++---- obexd/plugins/pbap.c | 7 ++-- obexd/plugins/syncevolution.c | 3 +- obexd/src/dbus.h | 14 ++------ obexd/src/manager.c | 61 ++++++++++++----------------------- obexd/src/obex.c | 2 +- obexd/src/service.h | 2 +- 8 files changed, 31 insertions(+), 75 deletions(-) diff --git a/obexd/plugins/ftp.c b/obexd/plugins/ftp.c index b7f16f100..5da0a1ba1 100644 --- a/obexd/plugins/ftp.c +++ b/obexd/plugins/ftp.c @@ -435,12 +435,9 @@ done: g_free(fullname); } -static void ftp_disconnect(obex_t *obex) +static void ftp_disconnect(struct OBEX_session *os) { - struct obex_session *os = OBEX_GetUserData(obex); - - emit_session_removed(os->cid); - unregister_session(os->cid); + manager_unregister_session(os); } struct obex_service_driver pcsuite = { diff --git a/obexd/plugins/opp.c b/obexd/plugins/opp.c index aa690f882..d12ff4123 100644 --- a/obexd/plugins/opp.c +++ b/obexd/plugins/opp.c @@ -219,15 +219,9 @@ fail: OBEX_ObjectSetRsp(obj, OBEX_RSP_FORBIDDEN, OBEX_RSP_FORBIDDEN); } -static void opp_disconnect(obex_t *obex) +static void opp_disconnect(struct OBEX_session *os) { - struct obex_session *os = OBEX_GetUserData(obex); - - /* Got an error during a transfer. */ - if (os->object) - emit_transfer_completed(os->cid, os->offset == os->size); - - unregister_transfer(os->cid); + manager_unregister_transfer(os); } static void opp_reset(obex_t *obex) diff --git a/obexd/plugins/pbap.c b/obexd/plugins/pbap.c index 43d421450..10fe86338 100644 --- a/obexd/plugins/pbap.c +++ b/obexd/plugins/pbap.c @@ -536,12 +536,9 @@ static void pbap_setpath(obex_t *obex, obex_object_t *obj) OBEX_ObjectSetRsp(obj, OBEX_RSP_SUCCESS, OBEX_RSP_SUCCESS); } -static void pbap_disconnect(obex_t *obex) +static void pbap_disconnect(struct OBEX_session *os) { - struct obex_session *os = OBEX_GetUserData(obex); - - emit_session_removed(os->cid); - unregister_session(os->cid); + manager_unregister_session(os); } static gint pbap_chkput(obex_t *obex, obex_object_t *obj) diff --git a/obexd/plugins/syncevolution.c b/obexd/plugins/syncevolution.c index 9b7749260..02fb6fba8 100644 --- a/obexd/plugins/syncevolution.c +++ b/obexd/plugins/syncevolution.c @@ -437,9 +437,8 @@ static void close_cb(DBusPendingCall *call, void *user_data) dbus_message_unref(reply); } -static void synce_disconnect(obex_t *obex) +static void synce_disconnect(struct OBEX_session *os) { - struct obex_session *os = OBEX_GetUserData(obex); struct synce_context *context; DBusMessage *msg; const gchar *error; diff --git a/obexd/src/dbus.h b/obexd/src/dbus.h index d24085b38..0da6bae73 100644 --- a/obexd/src/dbus.h +++ b/obexd/src/dbus.h @@ -21,10 +21,6 @@ * */ -void emit_session_created(guint32 id); - -void emit_session_removed(guint32 id); - void emit_transfer_started(guint32 id); void emit_transfer_completed(guint32 id, gboolean success); @@ -35,18 +31,12 @@ int request_authorization(gint32 cid, int fd, const gchar *filename, const gchar *type, gint32 length, gint32 time, gchar **new_folder, gchar **new_name); -void register_transfer(guint32 id, struct obex_session *os); - -void unregister_transfer(guint32 id); - void register_record(struct server *server, gpointer user_data); gint request_service_authorization(struct server *server, GIOChannel *io, const char *address); -void register_session(guint32 id, struct obex_session *os); - -void unregister_session(guint32 id); - void manager_register_session(struct OBEX_session *os); +void manager_unregister_session(struct OBEX_session *os); void manager_register_transfer(struct OBEX_session *os); +void manager_unregister_transfer(struct OBEX_session *os); diff --git a/obexd/src/manager.c b/obexd/src/manager.c index 962cd4ee2..3b03a7861 100644 --- a/obexd/src/manager.c +++ b/obexd/src/manager.c @@ -580,30 +580,6 @@ void manager_cleanup(void) dbus_connection_unref(connection); } -void emit_session_created(guint32 id) -{ - gchar *path = g_strdup_printf("/session%u", id); - - g_dbus_emit_signal(connection, OPENOBEX_MANAGER_PATH, - OPENOBEX_MANAGER_INTERFACE, "SessionCreated", - DBUS_TYPE_OBJECT_PATH, &path, - DBUS_TYPE_INVALID); - - g_free(path); -} - -void emit_session_removed(guint32 id) -{ - gchar *path = g_strdup_printf("/session%u", id); - - g_dbus_emit_signal(connection, OPENOBEX_MANAGER_PATH, - OPENOBEX_MANAGER_INTERFACE, "SessionRemoved", - DBUS_TYPE_OBJECT_PATH, &path, - DBUS_TYPE_INVALID); - - g_free(path); -} - void emit_transfer_started(guint32 id) { gchar *path = g_strdup_printf("/transfer%u", id); @@ -644,12 +620,7 @@ void emit_transfer_progress(guint32 id, guint32 total, guint32 transfered) void manager_register_transfer(struct OBEX_session *os) { - register_transfer(os->cid, os); -} - -void register_transfer(guint32 id, struct obex_session *os) -{ - gchar *path = g_strdup_printf("/transfer%u", id); + gchar *path = g_strdup_printf("/transfer%u", os->cid); if (!g_dbus_register_interface(connection, path, TRANSFER_INTERFACE, @@ -663,9 +634,13 @@ void register_transfer(guint32 id, struct obex_session *os) g_free(path); } -void unregister_transfer(guint32 id) +void manager_unregister_transfer(struct OBEX_session *os) { - gchar *path = g_strdup_printf("/transfer%u", id); + gchar *path = g_strdup_printf("/transfer%u", os->cid); + + /* Got an error during a transfer. */ + if (os->object) + emit_transfer_completed(os->cid, os->offset == os->size); g_dbus_unregister_interface(connection, path, TRANSFER_INTERFACE); @@ -1011,9 +986,9 @@ gint request_service_authorization(struct server *server, GIOChannel *io, return 0; } -void register_session(guint32 id, struct obex_session *os) +void manager_register_session(struct OBEX_session *os) { - gchar *path = g_strdup_printf("/session%u", id); + gchar *path = g_strdup_printf("/session%u", os->cid); if (!g_dbus_register_interface(connection, path, SESSION_INTERFACE, @@ -1024,18 +999,22 @@ void register_session(guint32 id, struct obex_session *os) return; } + g_dbus_emit_signal(connection, OPENOBEX_MANAGER_PATH, + OPENOBEX_MANAGER_INTERFACE, "SessionCreated", + DBUS_TYPE_OBJECT_PATH, &path, + DBUS_TYPE_INVALID); + g_free(path); } -void manager_register_session(struct OBEX_session *os) +void manager_unregister_session(struct OBEX_session *os) { - register_session(os->cid, os); - emit_session_created(os->cid); -} + gchar *path = g_strdup_printf("/session%u", os->cid); -void unregister_session(guint32 id) -{ - gchar *path = g_strdup_printf("/session%u", id); + g_dbus_emit_signal(connection, OPENOBEX_MANAGER_PATH, + OPENOBEX_MANAGER_INTERFACE, "SessionRemoved", + DBUS_TYPE_OBJECT_PATH, &path, + DBUS_TYPE_INVALID); g_dbus_unregister_interface(connection, path, SESSION_INTERFACE); diff --git a/obexd/src/obex.c b/obexd/src/obex.c index bd8391722..5dfc61875 100644 --- a/obexd/src/obex.c +++ b/obexd/src/obex.c @@ -931,7 +931,7 @@ static void obex_handle_destroy(gpointer user_data) os = OBEX_GetUserData(obex); if (os->service && os->service->disconnect) - os->service->disconnect(obex); + os->service->disconnect(os); obex_session_free(os); diff --git a/obexd/src/service.h b/obexd/src/service.h index a4f3e34b1..6729251c4 100644 --- a/obexd/src/service.h +++ b/obexd/src/service.h @@ -38,7 +38,7 @@ struct obex_service_driver { void (*put) (obex_t *obex, obex_object_t *obj); gint (*chkput) (obex_t *obex, obex_object_t *obj); void (*setpath) (obex_t *obex, obex_object_t *obj); - void (*disconnect) (obex_t *obex); + void (*disconnect) (struct OBEX_session *os); void (*reset) (obex_t *obex); }; -- 2.47.3