[core] Remove Resource dependency from low-level classes
These classes should not be coupled to domain-specific resource types.
This commit is contained in:
@@ -1,6 +1,5 @@
|
||||
#include <mbgl/storage/http_context_base.hpp>
|
||||
#include <mbgl/storage/http_request_base.hpp>
|
||||
#include <mbgl/storage/resource.hpp>
|
||||
#include <mbgl/storage/response.hpp>
|
||||
#include <mbgl/platform/log.hpp>
|
||||
#include "jni.hpp"
|
||||
@@ -25,7 +24,7 @@ public:
|
||||
explicit HTTPAndroidContext();
|
||||
~HTTPAndroidContext();
|
||||
|
||||
HTTPRequestBase* createRequest(const Resource&,
|
||||
HTTPRequestBase* createRequest(const std::string& url,
|
||||
RequestBase::Callback,
|
||||
std::shared_ptr<const Response>) final;
|
||||
|
||||
@@ -36,7 +35,7 @@ public:
|
||||
class HTTPAndroidRequest : public HTTPRequestBase {
|
||||
public:
|
||||
HTTPAndroidRequest(HTTPAndroidContext*,
|
||||
const Resource&,
|
||||
const std::string& url,
|
||||
Callback,
|
||||
std::shared_ptr<const Response>);
|
||||
~HTTPAndroidRequest();
|
||||
@@ -110,14 +109,14 @@ HTTPAndroidContext::~HTTPAndroidContext() {
|
||||
vm = nullptr;
|
||||
}
|
||||
|
||||
HTTPRequestBase* HTTPAndroidContext::createRequest(const Resource& resource,
|
||||
HTTPRequestBase* HTTPAndroidContext::createRequest(const std::string& url,
|
||||
RequestBase::Callback callback,
|
||||
std::shared_ptr<const Response> response) {
|
||||
return new HTTPAndroidRequest(this, resource, callback, response);
|
||||
return new HTTPAndroidRequest(this, url, callback, response);
|
||||
}
|
||||
|
||||
HTTPAndroidRequest::HTTPAndroidRequest(HTTPAndroidContext* context_, const Resource& resource_, Callback callback_, std::shared_ptr<const Response> response_)
|
||||
: HTTPRequestBase(resource_, callback_),
|
||||
HTTPAndroidRequest::HTTPAndroidRequest(HTTPAndroidContext* context_, const std::string& url_, Callback callback_, std::shared_ptr<const Response> response_)
|
||||
: HTTPRequestBase(url_, callback_),
|
||||
context(context_),
|
||||
existingResponse(response_),
|
||||
async([this] { finish(); }) {
|
||||
@@ -135,7 +134,7 @@ HTTPAndroidRequest::HTTPAndroidRequest(HTTPAndroidContext* context_, const Resou
|
||||
JNIEnv *env = nullptr;
|
||||
bool detach = mbgl::android::attach_jni_thread(context->vm, &env, "HTTPAndroidContext::HTTPAndroidRequest()");
|
||||
|
||||
jstring resourceUrl = mbgl::android::std_string_to_jstring(env, resource.url);
|
||||
jstring resourceUrl = mbgl::android::std_string_to_jstring(env, url);
|
||||
jstring userAgent = mbgl::android::std_string_to_jstring(env, "MapboxGL/1.0");
|
||||
jstring etag = mbgl::android::std_string_to_jstring(env, etagStr);
|
||||
jstring modified = mbgl::android::std_string_to_jstring(env, modifiedStr);
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
#include <mbgl/storage/http_context_base.hpp>
|
||||
#include <mbgl/storage/http_request_base.hpp>
|
||||
#include <mbgl/storage/resource.hpp>
|
||||
#include <mbgl/storage/response.hpp>
|
||||
|
||||
#include <mbgl/util/async_task.hpp>
|
||||
@@ -19,7 +18,7 @@ class HTTPNSURLContext;
|
||||
class HTTPNSURLRequest : public HTTPRequestBase {
|
||||
public:
|
||||
HTTPNSURLRequest(HTTPNSURLContext*,
|
||||
const Resource&,
|
||||
const std::string& url,
|
||||
Callback,
|
||||
std::shared_ptr<const Response>);
|
||||
~HTTPNSURLRequest();
|
||||
@@ -45,7 +44,7 @@ public:
|
||||
HTTPNSURLContext();
|
||||
~HTTPNSURLContext();
|
||||
|
||||
HTTPRequestBase* createRequest(const Resource&,
|
||||
HTTPRequestBase* createRequest(const std::string& url,
|
||||
RequestBase::Callback,
|
||||
std::shared_ptr<const Response>) final;
|
||||
|
||||
@@ -81,24 +80,24 @@ HTTPNSURLContext::~HTTPNSURLContext() {
|
||||
userAgent = nullptr;
|
||||
}
|
||||
|
||||
HTTPRequestBase* HTTPNSURLContext::createRequest(const Resource& resource,
|
||||
HTTPRequestBase* HTTPNSURLContext::createRequest(const std::string& url,
|
||||
RequestBase::Callback callback,
|
||||
std::shared_ptr<const Response> response) {
|
||||
return new HTTPNSURLRequest(this, resource, callback, response);
|
||||
return new HTTPNSURLRequest(this, url, callback, response);
|
||||
}
|
||||
|
||||
// -------------------------------------------------------------------------------------------------
|
||||
|
||||
HTTPNSURLRequest::HTTPNSURLRequest(HTTPNSURLContext* context_,
|
||||
const Resource& resource_,
|
||||
const std::string& url_,
|
||||
Callback callback_,
|
||||
std::shared_ptr<const Response> existingResponse_)
|
||||
: HTTPRequestBase(resource_, callback_),
|
||||
: HTTPRequestBase(url_, callback_),
|
||||
context(context_),
|
||||
existingResponse(existingResponse_),
|
||||
async([this] { handleResponse(); }) {
|
||||
@autoreleasepool {
|
||||
NSURL* url = [NSURL URLWithString:@(resource.url.c_str())];
|
||||
NSURL* url = [NSURL URLWithString:@(url_.c_str())];
|
||||
if (context->accountType == 0 &&
|
||||
([url.host isEqualToString:@"mapbox.com"] || [url.host hasSuffix:@".mapbox.com"])) {
|
||||
NSString* absoluteString = [url.absoluteString
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
#include <mbgl/storage/asset_context_base.hpp>
|
||||
#include <mbgl/storage/resource.hpp>
|
||||
#include <mbgl/storage/response.hpp>
|
||||
#include <mbgl/util/string.hpp>
|
||||
#include <mbgl/util/thread.hpp>
|
||||
@@ -67,7 +66,7 @@ class AssetRequest : public RequestBase {
|
||||
MBGL_STORE_THREAD(tid)
|
||||
|
||||
public:
|
||||
AssetRequest(const Resource&, Callback, const std::string& assetRoot,
|
||||
AssetRequest(const std::string& url, Callback, const std::string& assetRoot,
|
||||
util::Thread<FileIOWorker> *worker);
|
||||
~AssetRequest();
|
||||
|
||||
@@ -100,10 +99,10 @@ public:
|
||||
: worker({"FileIOWorker", util::ThreadType::Worker, util::ThreadPriority::Regular}) {}
|
||||
|
||||
private:
|
||||
RequestBase* createRequest(const Resource& resource,
|
||||
RequestBase* createRequest(const std::string& url,
|
||||
RequestBase::Callback callback,
|
||||
const std::string& assetRoot) final {
|
||||
return new AssetRequest(resource, callback, assetRoot, &worker);
|
||||
return new AssetRequest(url, callback, assetRoot, &worker);
|
||||
}
|
||||
|
||||
util::Thread<FileIOWorker> worker;
|
||||
@@ -113,12 +112,11 @@ AssetRequest::~AssetRequest() {
|
||||
MBGL_VERIFY_THREAD(tid);
|
||||
}
|
||||
|
||||
AssetRequest::AssetRequest(const Resource& resource_, Callback callback_,
|
||||
AssetRequest::AssetRequest(const std::string& url_, Callback callback_,
|
||||
const std::string& assetRoot_, util::Thread<FileIOWorker> *worker_)
|
||||
: RequestBase(resource_, callback_),
|
||||
: RequestBase(url_, callback_),
|
||||
assetRoot(assetRoot_),
|
||||
worker(worker_) {
|
||||
const auto &url = resource.url;
|
||||
std::string path;
|
||||
if (url.size() <= 8 || url[8] == '/') {
|
||||
// This is an empty or absolute path.
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
#include <mbgl/storage/asset_context_base.hpp>
|
||||
#include <mbgl/storage/resource.hpp>
|
||||
#include <mbgl/storage/response.hpp>
|
||||
#include <mbgl/util/chrono.hpp>
|
||||
#include <mbgl/util/util.hpp>
|
||||
@@ -97,7 +96,7 @@ class AssetRequest : public RequestBase {
|
||||
MBGL_STORE_THREAD(tid)
|
||||
|
||||
public:
|
||||
AssetRequest(const Resource&, Callback, const std::string& assetRoot,
|
||||
AssetRequest(const std::string& url, Callback, const std::string& assetRoot,
|
||||
AssetZipContext* context, util::Thread<ZipIOWorker>* worker);
|
||||
~AssetRequest();
|
||||
|
||||
@@ -136,10 +135,10 @@ public:
|
||||
AssetZipContext();
|
||||
~AssetZipContext();
|
||||
|
||||
RequestBase* createRequest(const Resource& resource,
|
||||
RequestBase* createRequest(const std::string& url,
|
||||
RequestBase::Callback callback,
|
||||
const std::string& assetRoot) final {
|
||||
return new AssetRequest(resource, callback, assetRoot, this, &worker);
|
||||
return new AssetRequest(url, callback, assetRoot, this, &worker);
|
||||
}
|
||||
|
||||
struct zip *getHandle(const std::string &path);
|
||||
@@ -182,11 +181,11 @@ void AssetZipContext::returnHandle(const std::string &path, struct zip* archive)
|
||||
handles[path].push_front(archive);
|
||||
}
|
||||
|
||||
AssetRequest::AssetRequest(const Resource& resource_, Callback callback_,
|
||||
AssetRequest::AssetRequest(const std::string& url_, Callback callback_,
|
||||
const std::string& assetRoot, AssetZipContext* context_, util::Thread<ZipIOWorker>* worker_)
|
||||
: RequestBase(resource_, callback_),
|
||||
: RequestBase(url_, callback_),
|
||||
root(assetRoot),
|
||||
path(std::string("assets/") + resource.url.substr(8)),
|
||||
path(std::string("assets/") + url.substr(8)),
|
||||
context(context_),
|
||||
worker(worker_) {
|
||||
archive = context->getHandle(root);
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
#include <mbgl/storage/http_context_base.hpp>
|
||||
#include <mbgl/storage/http_request_base.hpp>
|
||||
#include <mbgl/storage/resource.hpp>
|
||||
#include <mbgl/storage/response.hpp>
|
||||
#include <mbgl/platform/log.hpp>
|
||||
|
||||
@@ -47,7 +46,7 @@ public:
|
||||
HTTPCURLContext();
|
||||
~HTTPCURLContext();
|
||||
|
||||
HTTPRequestBase* createRequest(const Resource&,
|
||||
HTTPRequestBase* createRequest(const std::string& url,
|
||||
RequestBase::Callback,
|
||||
std::shared_ptr<const Response>) final;
|
||||
|
||||
@@ -80,7 +79,7 @@ class HTTPCURLRequest : public HTTPRequestBase {
|
||||
|
||||
public:
|
||||
HTTPCURLRequest(HTTPCURLContext*,
|
||||
const Resource&,
|
||||
const std::string& url,
|
||||
Callback,
|
||||
std::shared_ptr<const Response>);
|
||||
~HTTPCURLRequest();
|
||||
@@ -139,10 +138,10 @@ HTTPCURLContext::~HTTPCURLContext() {
|
||||
timeout.stop();
|
||||
}
|
||||
|
||||
HTTPRequestBase* HTTPCURLContext::createRequest(const Resource& resource,
|
||||
HTTPRequestBase* HTTPCURLContext::createRequest(const std::string& url,
|
||||
RequestBase::Callback callback,
|
||||
std::shared_ptr<const Response> response) {
|
||||
return new HTTPCURLRequest(this, resource, callback, response);
|
||||
return new HTTPCURLRequest(this, url, callback, response);
|
||||
}
|
||||
|
||||
CURL *HTTPCURLContext::getHandle() {
|
||||
@@ -353,8 +352,8 @@ static CURLcode sslctx_function(CURL * /* curl */, void *sslctx, void * /* parm
|
||||
}
|
||||
#endif
|
||||
|
||||
HTTPCURLRequest::HTTPCURLRequest(HTTPCURLContext* context_, const Resource& resource_, Callback callback_, std::shared_ptr<const Response> response_)
|
||||
: HTTPRequestBase(resource_, callback_),
|
||||
HTTPCURLRequest::HTTPCURLRequest(HTTPCURLContext* context_, const std::string& url_, Callback callback_, std::shared_ptr<const Response> response_)
|
||||
: HTTPRequestBase(url_, callback_),
|
||||
context(context_),
|
||||
existingResponse(response_),
|
||||
handle(context->getHandle()) {
|
||||
@@ -387,7 +386,7 @@ HTTPCURLRequest::HTTPCURLRequest(HTTPCURLContext* context_, const Resource& reso
|
||||
handleError(curl_easy_setopt(handle, CURLOPT_CAINFO, "ca-bundle.crt"));
|
||||
#endif
|
||||
handleError(curl_easy_setopt(handle, CURLOPT_FOLLOWLOCATION, 1));
|
||||
handleError(curl_easy_setopt(handle, CURLOPT_URL, resource.url.c_str()));
|
||||
handleError(curl_easy_setopt(handle, CURLOPT_URL, url.c_str()));
|
||||
handleError(curl_easy_setopt(handle, CURLOPT_WRITEFUNCTION, writeCallback));
|
||||
handleError(curl_easy_setopt(handle, CURLOPT_WRITEDATA, this));
|
||||
handleError(curl_easy_setopt(handle, CURLOPT_HEADERFUNCTION, headerCallback));
|
||||
|
||||
@@ -301,10 +301,10 @@ void OnlineFileSource::Impl::startRealRequest(OnlineFileRequestImpl& request) {
|
||||
|
||||
if (algo::starts_with(request.resource.url, "asset://")) {
|
||||
request.realRequest =
|
||||
assetContext->createRequest(request.resource, callback, assetRoot);
|
||||
assetContext->createRequest(request.resource.url, callback, assetRoot);
|
||||
} else {
|
||||
request.realRequest =
|
||||
httpContext->createRequest(request.resource, callback, request.getResponse());
|
||||
httpContext->createRequest(request.resource.url, callback, request.getResponse());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@ public:
|
||||
static std::unique_ptr<AssetContextBase> createContext();
|
||||
|
||||
virtual ~AssetContextBase() = default;
|
||||
virtual RequestBase* createRequest(const Resource&,
|
||||
virtual RequestBase* createRequest(const std::string& url,
|
||||
RequestBase::Callback,
|
||||
const std::string& assetRoot) = 0;
|
||||
};
|
||||
|
||||
@@ -14,7 +14,7 @@ public:
|
||||
static std::unique_ptr<HTTPContextBase> createContext();
|
||||
|
||||
virtual ~HTTPContextBase() = default;
|
||||
virtual HTTPRequestBase* createRequest(const Resource&,
|
||||
virtual HTTPRequestBase* createRequest(const std::string& url,
|
||||
RequestBase::Callback,
|
||||
std::shared_ptr<const Response>) = 0;
|
||||
};
|
||||
|
||||
@@ -8,8 +8,8 @@ namespace mbgl {
|
||||
|
||||
class HTTPRequestBase : public RequestBase {
|
||||
public:
|
||||
HTTPRequestBase(const Resource& resource_, Callback notify_)
|
||||
: RequestBase(resource_, notify_)
|
||||
HTTPRequestBase(const std::string& url_, Callback notify_)
|
||||
: RequestBase(url_, notify_)
|
||||
, cancelled(false) {
|
||||
}
|
||||
|
||||
|
||||
@@ -3,11 +3,11 @@
|
||||
|
||||
#include <mbgl/util/noncopyable.hpp>
|
||||
#include <mbgl/storage/file_cache.hpp>
|
||||
#include <mbgl/storage/resource.hpp>
|
||||
|
||||
#include <memory>
|
||||
#include <functional>
|
||||
#include <utility>
|
||||
#include <string>
|
||||
|
||||
namespace mbgl {
|
||||
|
||||
@@ -17,8 +17,8 @@ class RequestBase : private util::noncopyable {
|
||||
public:
|
||||
using Callback = std::function<void (std::shared_ptr<const Response> response)>;
|
||||
|
||||
RequestBase(const Resource& resource_, Callback notify_)
|
||||
: resource(resource_)
|
||||
RequestBase(const std::string& url_, Callback notify_)
|
||||
: url(url_)
|
||||
, notify(std::move(notify_)) {
|
||||
}
|
||||
|
||||
@@ -26,7 +26,7 @@ public:
|
||||
virtual void cancel() = 0;
|
||||
|
||||
protected:
|
||||
Resource resource;
|
||||
std::string url;
|
||||
Callback notify;
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user