12 #ifndef hifi_ResourceRequest_h
13 #define hifi_ResourceRequest_h
20 #include "ByteRange.h"
22 const QString STAT_ATP_REQUEST_STARTED =
"StartedATPRequest";
23 const QString STAT_HTTP_REQUEST_STARTED =
"StartedHTTPRequest";
24 const QString STAT_FILE_REQUEST_STARTED =
"StartedFileRequest";
25 const QString STAT_ATP_REQUEST_SUCCESS =
"SuccessfulATPRequest";
26 const QString STAT_HTTP_REQUEST_SUCCESS =
"SuccessfulHTTPRequest";
27 const QString STAT_FILE_REQUEST_SUCCESS =
"SuccessfulFileRequest";
28 const QString STAT_ATP_REQUEST_FAILED =
"FailedATPRequest";
29 const QString STAT_HTTP_REQUEST_FAILED =
"FailedHTTPRequest";
30 const QString STAT_FILE_REQUEST_FAILED =
"FailedFileRequest";
31 const QString STAT_ATP_REQUEST_CACHE =
"CacheATPRequest";
32 const QString STAT_HTTP_REQUEST_CACHE =
"CacheHTTPRequest";
33 const QString STAT_ATP_MAPPING_REQUEST_STARTED =
"StartedATPMappingRequest";
34 const QString STAT_ATP_MAPPING_REQUEST_FAILED =
"FailedATPMappingRequest";
35 const QString STAT_ATP_MAPPING_REQUEST_SUCCESS =
"SuccessfulATPMappingRequest";
36 const QString STAT_HTTP_RESOURCE_TOTAL_BYTES =
"HTTPBytesDownloaded";
37 const QString STAT_ATP_RESOURCE_TOTAL_BYTES =
"ATPBytesDownloaded";
38 const QString STAT_FILE_RESOURCE_TOTAL_BYTES =
"FILEBytesDownloaded";
40 class ResourceRequest :
public QObject {
43 static const bool IS_OBSERVABLE =
true;
44 static const bool IS_NOT_OBSERVABLE =
false;
48 const bool isObservable = IS_OBSERVABLE,
49 const qint64 callerId = -1,
50 const QString& extra =
""
52 _isObservable(isObservable),
57 virtual ~ResourceRequest() =
default;
78 QByteArray getData() {
return _data; }
79 State getState()
const {
return _state; }
80 Result getResult()
const {
return _result; }
81 QString getResultString()
const;
82 QUrl getUrl()
const {
return _url; }
83 QUrl getRelativePathUrl()
const {
return _relativePathURL; }
84 bool loadedFromCache()
const {
return _loadedFromCache; }
85 bool getRangeRequestSuccessful()
const {
return _rangeRequestSuccessful; }
86 bool getTotalSizeOfResource()
const {
return _totalSizeOfResource; }
87 QString getWebMediaType()
const {
return _webMediaType; }
88 void setFailOnRedirect(
bool failOnRedirect) { _failOnRedirect = failOnRedirect; }
90 void setCacheEnabled(
bool value) { _cacheEnabled = value; }
91 void setByteRange(ByteRange byteRange) { _byteRange = byteRange; }
93 static QString toHttpDateString(uint64_t msecsSinceEpoch);
98 void progress(qint64 bytesReceived, qint64 bytesTotal);
102 virtual void doSend() = 0;
103 void recordBytesDownloadedInStats(
const QString& statName, int64_t bytesReceived);
106 QUrl _relativePathURL;
107 State _state { NotStarted };
110 bool _failOnRedirect {
false };
111 bool _cacheEnabled {
true };
112 bool _loadedFromCache {
false };
113 ByteRange _byteRange;
114 bool _rangeRequestSuccessful {
false };
115 uint64_t _totalSizeOfResource { 0 };
116 QString _webMediaType;
117 int64_t _lastRecordedBytesDownloaded { 0 };