Overte C++ Documentation
AssetUpload.h
1 //
2 // AssetUpload.h
3 // libraries/networking/src
4 //
5 // Created by Stephen Birarda on 2015-08-26.
6 // Copyright 2015 High Fidelity, Inc.
7 //
8 // Distributed under the Apache License, Version 2.0.
9 // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
10 //
11 
12 #pragma once
13 
14 #ifndef hifi_AssetUpload_h
15 #define hifi_AssetUpload_h
16 
17 #include <QtCore/QObject>
18 
19 #include <cstdint>
20 
21 // You should be able to upload an asset from any thread, and handle the responses in a safe way
22 // on your own thread. Everything should happen on AssetClient's thread, the caller should
23 // receive events by connecting to signals on an object that lives on AssetClient's threads.
24 
25 class AssetUpload : public QObject {
26  Q_OBJECT
27 public:
28 
29  enum Error {
30  NoError = 0,
31  NetworkError,
32  Timeout,
33  TooLarge,
34  PermissionDenied,
35  FileOpenError,
36  ServerFileError
37  };
38 
39  static const QString PERMISSION_DENIED_ERROR;
40 
41  AssetUpload(const QString& filename);
42  AssetUpload(const QByteArray& data);
43 
44  Q_INVOKABLE void start();
45 
46  const QString& getFilename() const { return _filename; }
47  const Error& getError() const { return _error; }
48  QString getErrorString() const;
49 
50 signals:
51  void finished(AssetUpload* upload, const QString& hash);
52  void progress(uint64_t totalReceived, uint64_t total);
53 
54 private:
55  QString _filename;
56  QByteArray _data;
57  Error _error;
58 };
59 
60 #endif // hifi_AssetUpload_h