diff --git a/platform/darwin/http_request_nsurl.mm b/platform/darwin/http_request_nsurl.mm index 0fd4a4e8f..24b31ae0a 100644 --- a/platform/darwin/http_request_nsurl.mm +++ b/platform/darwin/http_request_nsurl.mm @@ -397,7 +397,7 @@ void HTTPRequestImpl::restart(uv_timer_t *timer, int) { // ------------------------------------------------------------------------------------------------- -HTTPRequest::HTTPRequest(DefaultFileSource::Impl *source, const Resource &resource) +HTTPRequest::HTTPRequest(DefaultFileSource::Impl &source, const Resource &resource) : SharedRequestBase(source, resource) { } diff --git a/platform/default/asset_request_fs.cpp b/platform/default/asset_request_fs.cpp index 08b336ad3..fbb739c5c 100644 --- a/platform/default/asset_request_fs.cpp +++ b/platform/default/asset_request_fs.cpp @@ -62,7 +62,7 @@ AssetRequestImpl::AssetRequestImpl(AssetRequest *request_, uv_loop_t *loop) : re path = url.substr(8); } else { // This is a relative path. Prefix with the application root. - path = request->source->assetRoot + "/" + url.substr(8); + path = request->source.assetRoot + "/" + url.substr(8); } uv_fs_open(loop, &req, path.c_str(), O_RDONLY, S_IRUSR, fileOpened); @@ -207,7 +207,7 @@ void AssetRequestImpl::cleanup(uv_fs_t *req) { // ------------------------------------------------------------------------------------------------- -AssetRequest::AssetRequest(DefaultFileSource::Impl *source_, const Resource &resource_) +AssetRequest::AssetRequest(DefaultFileSource::Impl &source_, const Resource &resource_) : SharedRequestBase(source_, resource_) { assert(algo::starts_with(resource.url, "asset://")); } diff --git a/platform/default/asset_request_zip.cpp b/platform/default/asset_request_zip.cpp index f66ca619b..ba91809f1 100644 --- a/platform/default/asset_request_zip.cpp +++ b/platform/default/asset_request_zip.cpp @@ -114,7 +114,7 @@ AssetRequestImpl::~AssetRequestImpl() { AssetRequestImpl::AssetRequestImpl(AssetRequest *request_, uv_loop_t *loop) : context(*AssetZipContext::Get(loop)), request(request_), - root(request->source->assetRoot), + root(request->source.assetRoot), path(std::string { "assets/" } + request->resource.url.substr(8)) { auto zip = context.getHandle(root); if (zip) { @@ -129,7 +129,6 @@ void AssetRequestImpl::openZipArchive() { req->data = this; assert(request); - assert(request->source); // We're using uv_fs_open first to obtain a file descriptor. Then, uv_zip_fdopen will operate // on a read-only file. @@ -275,7 +274,7 @@ void AssetRequestImpl::cancel() { // ------------------------------------------------------------------------------------------------- -AssetRequest::AssetRequest(DefaultFileSource::Impl *source_, const Resource &resource_) +AssetRequest::AssetRequest(DefaultFileSource::Impl &source_, const Resource &resource_) : SharedRequestBase(source_, resource_) { assert(algo::starts_with(resource.url, "asset://")); } diff --git a/platform/default/http_request_curl.cpp b/platform/default/http_request_curl.cpp index 1672c9cdb..a5de61104 100644 --- a/platform/default/http_request_curl.cpp +++ b/platform/default/http_request_curl.cpp @@ -722,7 +722,7 @@ void HTTPRequestImpl::handleResult(CURLcode code) { // ------------------------------------------------------------------------------------------------- -HTTPRequest::HTTPRequest(DefaultFileSource::Impl *source_, const Resource &resource_) +HTTPRequest::HTTPRequest(DefaultFileSource::Impl &source_, const Resource &resource_) : SharedRequestBase(source_, resource_) { } diff --git a/src/mbgl/storage/asset_request.hpp b/src/mbgl/storage/asset_request.hpp index 48d421c3b..22e63c1ad 100644 --- a/src/mbgl/storage/asset_request.hpp +++ b/src/mbgl/storage/asset_request.hpp @@ -7,7 +7,7 @@ namespace mbgl { class AssetRequest : public SharedRequestBase { public: - AssetRequest(DefaultFileSource::Impl *source, const Resource &resource); + AssetRequest(DefaultFileSource::Impl &source, const Resource &resource); void start(uv_loop_t *loop, std::shared_ptr response = nullptr); void cancel(); diff --git a/src/mbgl/storage/default_file_source.cpp b/src/mbgl/storage/default_file_source.cpp index 208a529bc..cc48e8473 100644 --- a/src/mbgl/storage/default_file_source.cpp +++ b/src/mbgl/storage/default_file_source.cpp @@ -89,9 +89,9 @@ void DefaultFileSource::Impl::add(Request* req, uv_loop_t* loop) { if (!sharedRequest) { // There is no request for this URL yet. Create a new one and start it. if (algo::starts_with(resource.url, "asset://")) { - sharedRequest = new AssetRequest(this, resource); + sharedRequest = new AssetRequest(*this, resource); } else { - sharedRequest = new HTTPRequest(this, resource); + sharedRequest = new HTTPRequest(*this, resource); } const bool inserted = pending.emplace(resource, sharedRequest).second; diff --git a/src/mbgl/storage/http_request.hpp b/src/mbgl/storage/http_request.hpp index 54e9a77ef..6232bd22e 100644 --- a/src/mbgl/storage/http_request.hpp +++ b/src/mbgl/storage/http_request.hpp @@ -7,7 +7,7 @@ namespace mbgl { class HTTPRequest : public SharedRequestBase { public: - HTTPRequest(DefaultFileSource::Impl *source, const Resource &resource); + HTTPRequest(DefaultFileSource::Impl &source, const Resource &resource); void start(uv_loop_t *loop, std::shared_ptr response = nullptr); void cancel(); diff --git a/src/mbgl/storage/shared_request_base.hpp b/src/mbgl/storage/shared_request_base.hpp index d7ed00264..8fc23b7bd 100644 --- a/src/mbgl/storage/shared_request_base.hpp +++ b/src/mbgl/storage/shared_request_base.hpp @@ -26,7 +26,7 @@ protected: MBGL_STORE_THREAD(tid) public: - SharedRequestBase(DefaultFileSource::Impl *source_, const Resource &resource_) + SharedRequestBase(DefaultFileSource::Impl &source_, const Resource &resource_) : resource(resource_), source(source_) {} virtual void start(uv_loop_t *loop, std::shared_ptr response = nullptr) = 0; @@ -35,9 +35,7 @@ public: void notify(std::shared_ptr response, FileCache::Hint hint) { MBGL_VERIFY_THREAD(tid); - if (source) { - source->notify(this, observers, response, hint); - } + source.notify(this, observers, response, hint); } void subscribe(Request *request) { @@ -53,10 +51,8 @@ public: if (abandoned()) { // There are no observers anymore. We are initiating cancelation. - if (source) { - // First, remove this SharedRequestBase from the source. - source->notify(this, observers, nullptr, FileCache::Hint::No); - } + // First, remove this SharedRequestBase from the source. + source.notify(this, observers, nullptr, FileCache::Hint::No); // Then, initiate cancelation of this request cancel(); @@ -95,7 +91,7 @@ public: const Resource resource; protected: - DefaultFileSource::Impl *source = nullptr; + DefaultFileSource::Impl &source; private: std::set observers;