[core] Introduce Timer abstraction

This commit is contained in:
Thiago Marcos P. Santos
2015-10-27 14:27:16 +02:00
parent 0d8ea6c0a2
commit 9b36c19aeb
8 changed files with 78 additions and 5 deletions

View File

@@ -7,7 +7,6 @@
#include <mbgl/platform/platform.hpp>
#include <mbgl/platform/log.hpp>
#include <mbgl/util/uv_detail.hpp>
#include <mbgl/util/thread.hpp>
#include <mbgl/util/mapbox.hpp>
#include <mbgl/util/exception.hpp>
@@ -236,11 +235,10 @@ void DefaultFileSource::Impl::reschedule(DefaultFileRequestImpl& request) {
update(request);
} else if (timeout > Seconds::zero()) {
if (!request.timerRequest) {
request.timerRequest = std::make_unique<uv::timer>(util::RunLoop::getLoop());
request.timerRequest = std::make_unique<util::Timer>();
}
// timeout is in seconds, but the timer takes milliseconds.
request.timerRequest->start(asMilliseconds(timeout).count(), 0, [this, &request] {
request.timerRequest->start(timeout, Duration::zero(), [this, &request] {
assert(!request.realRequest);
startRealRequest(request);
});

View File

@@ -7,6 +7,7 @@
#include <mbgl/util/async_task.hpp>
#include <mbgl/util/noncopyable.hpp>
#include <mbgl/util/chrono.hpp>
#include <mbgl/util/timer.hpp>
#include <set>
#include <unordered_map>
@@ -40,7 +41,7 @@ public:
const Resource resource;
std::unique_ptr<WorkRequest> cacheRequest;
RequestBase* realRequest = nullptr;
std::unique_ptr<uv::timer> timerRequest;
std::unique_ptr<util::Timer> timerRequest;
inline DefaultFileRequestImpl(const Resource& resource_)
: resource(resource_) {}