diff options
author | Bharat Panda <bharat.panda@samsung.com> | 2014-10-30 20:29:24 +0530 |
---|---|---|
committer | Luiz Augusto von Dentz <luiz.von.dentz@intel.com> | 2014-10-31 16:52:02 +0200 |
commit | 1e5a31d5c20e4fa1c6509a6376f33ed36c52c6a0 (patch) | |
tree | 06e7b2e8931be405acac7272d9c741947b26e7ea /obexd | |
parent | 6dccd4cc35483a18a0b9fed70b7af5a72935e61c (diff) | |
download | bluez-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.c | 20 |
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, |