From adf3dea4e58f0fcd59899937ed050e7174aebd42 Mon Sep 17 00:00:00 2001 From: John Firebaugh Date: Thu, 7 Jan 2016 21:06:44 -0800 Subject: [PATCH] [core] Simplify OnlineFileSource's Timer use There is no need for the timer to be created only under certain conditions. Stopping a non-started timer is a no-op. Therefore it can simply be a direct member. While here, rename the variable. It's a timer, not a request. --- platform/default/online_file_source.cpp | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/platform/default/online_file_source.cpp b/platform/default/online_file_source.cpp index 120f21230..4d9a13bd8 100644 --- a/platform/default/online_file_source.cpp +++ b/platform/default/online_file_source.cpp @@ -50,7 +50,7 @@ public: const Resource resource; std::unique_ptr cacheRequest; RequestBase* realRequest = nullptr; - std::unique_ptr timerRequest; + util::Timer realRequestTimer; inline OnlineFileRequestImpl(const Resource& resource_) : resource(resource_) {} @@ -268,10 +268,8 @@ void OnlineFileSource::Impl::startCacheRequest(OnlineFileRequestImpl& request) { void OnlineFileSource::Impl::startRealRequest(OnlineFileRequestImpl& request) { assert(!request.realRequest); - // Cancel the timer if we have one. - if (request.timerRequest) { - request.timerRequest->stop(); - } + // Ensure the timer is stopped. + request.realRequestTimer.stop(); auto callback = [this, &request](std::shared_ptr response) { request.realRequest = nullptr; @@ -332,11 +330,7 @@ void OnlineFileSource::Impl::reschedule(OnlineFileRequestImpl& request) { if (timeout == Seconds::zero()) { update(request); } else if (timeout > Seconds::zero()) { - if (!request.timerRequest) { - request.timerRequest = std::make_unique(); - } - - request.timerRequest->start(timeout, Duration::zero(), [this, &request] { + request.realRequestTimer.start(timeout, Duration::zero(), [this, &request] { assert(!request.realRequest); startRealRequest(request); }); @@ -350,7 +344,7 @@ OnlineFileRequestImpl::~OnlineFileRequestImpl() { realRequest->cancel(); realRequest = nullptr; } - // timerRequest and cacheRequest are automatically canceld upon destruction. + // realRequestTimer and cacheRequest are automatically canceled upon destruction. } void OnlineFileRequestImpl::addObserver(FileRequest* req, Callback callback) {