~unity-api-team/storage-framework/vivid

« back to all changes in this revision

Viewing changes to src/qt/client/internal/remote_client/CreateFileHandler.cpp

  • Committer: Michi Henning
  • Date: 2016-07-11 05:44:31 UTC
  • mfrom: (8.10.31 decltype)
  • mto: (8.1.15 devel)
  • mto: This revision was merged to the branch mainline in revision 9.
  • Revision ID: michi.henning@canonical.com-20160711054431-jj23l6adsm7367b7
Merged decltype branch.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
#include <unity/storage/qt/client/internal/remote_client/CreateFileHandler.h>
2
 
 
3
 
#include "ProviderInterface.h"
4
 
#include <unity/storage/qt/client/Exceptions.h>
5
 
#include <unity/storage/qt/client/internal/remote_client/UploaderImpl.h>
6
 
 
7
 
#include <cassert>
8
 
 
9
 
using namespace std;
10
 
 
11
 
namespace unity
12
 
{
13
 
namespace storage
14
 
{
15
 
namespace qt
16
 
{
17
 
namespace client
18
 
{
19
 
namespace internal
20
 
{
21
 
namespace remote_client
22
 
{
23
 
 
24
 
CreateFileHandler::CreateFileHandler(QDBusPendingReply<QString, QDBusUnixFileDescriptor> const& reply,
25
 
                                     weak_ptr<Root> const& root,
26
 
                                     ProviderInterface& provider)
27
 
    : watcher_(reply, this)
28
 
    , root_(root.lock())
29
 
    , provider_(provider)
30
 
{
31
 
    assert(root_);
32
 
    connect(&watcher_, &QDBusPendingCallWatcher::finished, this, &CreateFileHandler::finished);
33
 
    qf_.reportStarted();
34
 
}
35
 
 
36
 
QFuture<shared_ptr<Uploader>> CreateFileHandler::future()
37
 
{
38
 
    return qf_.future();
39
 
}
40
 
 
41
 
void CreateFileHandler::finished(QDBusPendingCallWatcher* call)
42
 
{
43
 
    deleteLater();
44
 
 
45
 
    QDBusPendingReply<QString, QDBusUnixFileDescriptor> reply = *call;
46
 
    if (reply.isError())
47
 
    {
48
 
        qDebug() << reply.error().message();  // TODO, remove this
49
 
        qf_.reportException(StorageException());  // TODO
50
 
        qf_.reportFinished();
51
 
        return;
52
 
    }
53
 
 
54
 
    auto upload_id = reply.argumentAt<0>();
55
 
    auto fd = reply.argumentAt<1>();
56
 
    auto uploader = UploaderImpl::make_uploader(upload_id, fd.fileDescriptor(), "", root_, provider_);
57
 
    qf_.reportResult(uploader);
58
 
    qf_.reportFinished();
59
 
}
60
 
 
61
 
}  // namespace remote_client
62
 
}  // namespace internal
63
 
}  // namespace client
64
 
}  // namespace qt
65
 
}  // namespace storage
66
 
}  // namespace unity
67
 
 
68
 
#include "CreateFileHandler.moc"