summaryrefslogtreecommitdiff
path: root/daemon/uploadmanager.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'daemon/uploadmanager.cpp')
-rw-r--r--daemon/uploadmanager.cpp26
1 files changed, 24 insertions, 2 deletions
diff --git a/daemon/uploadmanager.cpp b/daemon/uploadmanager.cpp
index ccbf12a..29c436e 100644
--- a/daemon/uploadmanager.cpp
+++ b/daemon/uploadmanager.cpp
@@ -20,13 +20,14 @@ UploadManager::UploadManager(WatchConnector *watch, QObject *parent) :
});
}
-uint UploadManager::upload(WatchConnector::UploadType type, int index, QIODevice *device, int size,
- function<void()> successCallback, function<void(int)> errorCallback)
+uint UploadManager::upload(WatchConnector::UploadType type, int index, const QString &filename, QIODevice *device, int size,
+ SuccessCallback successCallback, ErrorCallback errorCallback)
{
PendingUpload upload;
upload.id = ++_lastUploadId;
upload.type = type;
upload.index = index;
+ upload.filename = filename;
upload.device = device;
if (size < 0) {
upload.remaining = device->size();
@@ -53,6 +54,22 @@ uint UploadManager::upload(WatchConnector::UploadType type, int index, QIODevice
return upload.id;
}
+uint UploadManager::uploadAppBinary(int slot, QIODevice *device, SuccessCallback successCallback, ErrorCallback errorCallback)
+{
+ return upload(WatchConnector::uploadBINARY, slot, QString(), device, -1, successCallback, errorCallback);
+}
+
+uint UploadManager::uploadAppResources(int slot, QIODevice *device, SuccessCallback successCallback, ErrorCallback errorCallback)
+{
+ return upload(WatchConnector::uploadRESOURCES, slot, QString(), device, -1, successCallback, errorCallback);
+}
+
+uint UploadManager::uploadFile(const QString &filename, QIODevice *device, SuccessCallback successCallback, ErrorCallback errorCallback)
+{
+ Q_ASSERT(!filename.isEmpty());
+ return upload(WatchConnector::uploadFILE, 0, filename, device, -1, successCallback, errorCallback);
+}
+
void UploadManager::cancel(uint id, int code)
{
if (_pending.empty()) {
@@ -112,6 +129,11 @@ void UploadManager::startNextUpload()
p.write<quint32>(upload.remaining);
p.write<quint8>(upload.type);
p.write<quint8>(upload.index);
+ if (!upload.filename.isEmpty()) {
+ p.writeCString(upload.filename);
+ }
+
+ logger()->debug() << "starting new upload, size:" << upload.remaining << ", type:" << upload.type << ", slot:" << upload.index;
_state = StateWaitForToken;
watch->sendMessage(WatchConnector::watchPUTBYTES, msg);