diff --git a/obexd/plugins/ftp.c b/obexd/plugins/ftp.c
index b7f16f1..5da0a1b 100644
--- a/obexd/plugins/ftp.c
+++ b/obexd/plugins/ftp.c
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 aa690f8..d12ff41 100644
--- a/obexd/plugins/opp.c
+++ b/obexd/plugins/opp.c
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 43d4214..10fe863 100644
--- a/obexd/plugins/pbap.c
+++ b/obexd/plugins/pbap.c
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 9b77492..02fb6fb 100644
--- a/obexd/plugins/syncevolution.c
+++ b/obexd/plugins/syncevolution.c
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 d24085b..0da6bae 100644
--- a/obexd/src/dbus.h
+++ b/obexd/src/dbus.h
*
*/
-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);
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 962cd4e..3b03a78 100644
--- a/obexd/src/manager.c
+++ b/obexd/src/manager.c
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);
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,
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);
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,
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 bd83917..5dfc618 100644
--- a/obexd/src/obex.c
+++ b/obexd/src/obex.c
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 a4f3e34..6729251 100644
--- a/obexd/src/service.h
+++ b/obexd/src/service.h
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);
};