summaryrefslogtreecommitdiff
path: root/obexd
diff options
context:
space:
mode:
authorBharat Panda <bharat.panda@samsung.com>2014-10-30 20:29:24 +0530
committerLuiz Augusto von Dentz <luiz.von.dentz@intel.com>2014-10-31 16:52:02 +0200
commit1e5a31d5c20e4fa1c6509a6376f33ed36c52c6a0 (patch)
tree06e7b2e8931be405acac7272d9c741947b26e7ea /obexd
parent6dccd4cc35483a18a0b9fed70b7af5a72935e61c (diff)
downloadbluez-1e5a31d5c20e4fa1c6509a6376f33ed36c52c6a0.tar.gz
obexd/ftp: Add support for tracking transfers
This enables transfer management for FTP connections.
Diffstat (limited to 'obexd')
-rw-r--r--obexd/plugins/ftp.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/obexd/plugins/ftp.c b/obexd/plugins/ftp.c
index 773861ddf..4c3546795 100644
--- a/obexd/plugins/ftp.c
+++ b/obexd/plugins/ftp.c
@@ -59,6 +59,7 @@ static const uint8_t FTP_TARGET[TARGET_SIZE] = {
struct ftp_session {
struct obex_session *os;
+ struct obex_transfer *transfer;
char *folder;
};
@@ -116,6 +117,8 @@ void *ftp_connect(struct obex_session *os, int *err)
if (err)
*err = 0;
+ ftp->transfer = manager_register_transfer(os);
+
DBG("session %p created", ftp);
return ftp;
@@ -136,6 +139,10 @@ int ftp_get(struct obex_session *os, void *user_data)
if (ret < 0)
return ret;
+ /* Only track progress of file transfer */
+ if (type == NULL)
+ manager_emit_transfer_started(ftp->transfer);
+
return 0;
}
@@ -181,6 +188,9 @@ int ftp_chkput(struct obex_session *os, void *user_data)
ret = obex_put_stream_start(os, path);
+ if (ret == 0)
+ manager_emit_transfer_started(ftp->transfer);
+
g_free(path);
return ret;
@@ -471,16 +481,26 @@ void ftp_disconnect(struct obex_session *os, void *user_data)
manager_unregister_session(os);
+ manager_unregister_transfer(ftp->transfer);
+
g_free(ftp->folder);
g_free(ftp);
}
+static void ftp_progress(struct obex_session *os, void *user_data)
+{
+ struct ftp_session *ftp = user_data;
+
+ manager_emit_transfer_progress(ftp->transfer);
+}
+
static struct obex_service_driver ftp = {
.name = "File Transfer server",
.service = OBEX_FTP,
.target = FTP_TARGET,
.target_size = TARGET_SIZE,
.connect = ftp_connect,
+ .progress = ftp_progress,
.get = ftp_get,
.put = ftp_put,
.chkput = ftp_chkput,