22
22
#include <unity/storage/qt/client/Exceptions.h>
23
23
#include <unity/storage/qt/client/File.h>
24
24
#include <unity/storage/qt/client/internal/local_client/DownloaderImpl.h>
25
#include <unity/storage/qt/client/internal/local_client/storage_exception.h>
25
26
#include <unity/storage/qt/client/internal/local_client/UploaderImpl.h>
26
27
#include <unity/storage/qt/client/internal/make_future.h>
27
28
#include <unity/storage/qt/client/Uploader.h>
51
52
QString FileImpl::name() const
53
lock_guard<mutex> guard(mutex_);
54
lock_guard<decltype(mutex_)> guard(mutex_);
57
throw deleted_ex("File::name()");
56
throw_if_destroyed("File::name()");
62
60
int64_t FileImpl::size() const
64
lock_guard<mutex> guard(mutex_);
68
throw deleted_ex("File::size()");
62
lock_guard<decltype(mutex_)> guard(mutex_);
64
throw_if_destroyed("File::size()");
73
67
boost::filesystem::path p = identity_.toStdString();
74
68
return file_size(p);
76
catch (std::exception const& e)
70
catch (std::exception const&)
78
throw ResourceException(e.what());
72
throw_storage_exception(QString("File::size()"), current_exception());
82
76
QFuture<Uploader::SPtr> FileImpl::create_uploader(ConflictPolicy policy, int64_t size)
84
lock_guard<mutex> guard(mutex_);
78
lock_guard<decltype(mutex_)> guard(mutex_);
88
return make_exceptional_future<Uploader::SPtr>(deleted_ex("File::create_uploader()"));
82
throw_if_destroyed("File::create_uploader()");
84
catch (StorageException const& e)
86
return internal::make_exceptional_future<Uploader::SPtr>(e);
92
90
QString msg = "File::create_uploader(): size must be >= 0";
93
return make_exceptional_future<shared_ptr<Uploader>>(InvalidArgumentException(msg));
91
return internal::make_exceptional_future<shared_ptr<Uploader>>(InvalidArgumentException(msg));
96
94
auto file = dynamic_pointer_cast<File>(public_instance_.lock());
103
101
QFuture<Downloader::SPtr> FileImpl::create_downloader()
105
lock_guard<mutex> guard(mutex_);
103
lock_guard<decltype(mutex_)> guard(mutex_);
109
return make_exceptional_future<Downloader::SPtr>(deleted_ex("File::create_downloader()"));
107
throw_if_destroyed("File::create_downloader()");
109
catch (StorageException const& e)
111
return internal::make_exceptional_future<Downloader::SPtr>(e);
112
114
auto pi = public_instance_.lock();