reapack

Package manager for REAPER
Log | Files | Refs | Submodules | README | LICENSE

commit f40853665f512d3fc952369d97d02c3705bf24d2
parent 150f8d8044a1c6bc8476fd36d355aa58c5e603a0
Author: cfillion <cfillion@users.noreply.github.com>
Date:   Wed, 20 Jan 2016 15:28:22 -0800

prevent syncing the same remote multiple times in a single transaction

Diffstat:
Msrc/transaction.cpp | 4++++
Msrc/transaction.hpp | 7++++---
2 files changed, 8 insertions(+), 3 deletions(-)

diff --git a/src/transaction.cpp b/src/transaction.cpp @@ -59,10 +59,14 @@ Transaction::~Transaction() void Transaction::synchronize(const Remote &remote) { + if(m_remotes.count(remote)) + return; + Download *dl = new Download(remote.name(), remote.url()); dl->onFinish(bind(&Transaction::upgradeAll, this, dl)); m_downloadQueue.push(dl); + m_remotes.insert(remote); } void Transaction::upgradeAll(Download *dl) diff --git a/src/transaction.hpp b/src/transaction.hpp @@ -85,17 +85,18 @@ private: Path m_dbPath; bool m_isCancelled; + std::set<Remote> m_remotes; std::vector<RemoteIndex *> m_remoteIndexes; DownloadQueue m_downloadQueue; std::queue<PackageEntry> m_installQueue; + std::vector<Task *> m_tasks; + std::queue<Task *> m_taskQueue; + PackageEntryList m_new; PackageEntryList m_updates; std::set<Path> m_removals; ErrorList m_errors; - std::vector<Task *> m_tasks; - std::queue<Task *> m_taskQueue; - Signal m_onFinish; Signal m_onDestroy; };