Overte C++ Documentation
MappingRequest.h
1 //
2 // MappingRequest.h
3 // libraries/networking/src
4 //
5 // Created by Stephen Birarda on 2016-03-08.
6 // Copyright 2016 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_MappingRequest_h
15 #define hifi_MappingRequest_h
16 
17 #include <QtCore/QObject>
18 
19 #include "AssetUtils.h"
20 #include "AssetClient.h"
21 
22 class MappingRequest : public QObject {
23  Q_OBJECT
24 public:
25  enum Error {
26  NoError,
27  NotFound,
28  NetworkError,
29  PermissionDenied,
30  InvalidPath,
31  InvalidHash,
32  UnknownError
33  };
34 
35  virtual ~MappingRequest();
36 
37  Q_INVOKABLE void start();
38  Error getError() const { return _error; }
39  Q_INVOKABLE QString getErrorString() const;
40 
41 protected:
42  Error _error { NoError };
43  MessageID _mappingRequestID { INVALID_MESSAGE_ID };
44 
45 private:
46  virtual void doStart() = 0;
47 };
48 
49 
50 class GetMappingRequest : public MappingRequest {
51  Q_OBJECT
52 public:
53  GetMappingRequest(const AssetUtils::AssetPath& path);
54 
55  AssetUtils::AssetHash getHash() const { return _hash; }
56  AssetUtils::AssetPath getRedirectedPath() const { return _redirectedPath; }
57  bool wasRedirected() const { return _wasRedirected; }
58 
59 signals:
60  void finished(GetMappingRequest* thisRequest);
61 
62 private:
63  virtual void doStart() override;
64 
65  AssetUtils::AssetPath _path;
66  AssetUtils::AssetHash _hash;
67 
68 
69  AssetUtils::AssetPath _redirectedPath;
70  bool _wasRedirected { false };
71 };
72 
73 class SetMappingRequest : public MappingRequest {
74  Q_OBJECT
75 public:
76  SetMappingRequest(const AssetUtils::AssetPath& path, const AssetUtils::AssetHash& hash);
77 
78  AssetUtils::AssetPath getPath() const { return _path; }
79  AssetUtils::AssetHash getHash() const { return _hash; }
80 
81 signals:
82  void finished(SetMappingRequest* thisRequest);
83 
84 private:
85  virtual void doStart() override;
86 
87  AssetUtils::AssetPath _path;
88  AssetUtils::AssetHash _hash;
89 };
90 
91 class DeleteMappingsRequest : public MappingRequest {
92  Q_OBJECT
93 public:
94  DeleteMappingsRequest(const AssetUtils::AssetPathList& path);
95 
96 signals:
97  void finished(DeleteMappingsRequest* thisRequest);
98 
99 private:
100  virtual void doStart() override;
101 
102  AssetUtils::AssetPathList _paths;
103 };
104 
105 class RenameMappingRequest : public MappingRequest {
106  Q_OBJECT
107 public:
108  RenameMappingRequest(const AssetUtils::AssetPath& oldPath, const AssetUtils::AssetPath& newPath);
109 
110 signals:
111  void finished(RenameMappingRequest* thisRequest);
112 
113 private:
114  virtual void doStart() override;
115 
116  AssetUtils::AssetPath _oldPath;
117  AssetUtils::AssetPath _newPath;
118 };
119 
120 class GetAllMappingsRequest : public MappingRequest {
121  Q_OBJECT
122 public:
123  AssetUtils::AssetMappings getMappings() const { return _mappings; }
124 
125 signals:
126  void finished(GetAllMappingsRequest* thisRequest);
127 
128 private:
129  virtual void doStart() override;
130 
131  AssetUtils::AssetMappings _mappings;
132 };
133 
134 class SetBakingEnabledRequest : public MappingRequest {
135  Q_OBJECT
136 public:
137  SetBakingEnabledRequest(const AssetUtils::AssetPathList& path, bool enabled);
138 
139 signals:
140  void finished(SetBakingEnabledRequest* thisRequest);
141 
142 private:
143  virtual void doStart() override;
144 
145  AssetUtils::AssetPathList _paths;
146  bool _enabled;
147 };
148 
149 
150 #endif // hifi_MappingRequest_h