From f471aa2f8db768e2a4bca4fe9b19443d3c90b582 Mon Sep 17 00:00:00 2001 From: Josef Reidinger Date: Thu, 15 May 2008 13:16:51 +0000 Subject: [PATCH] allow call only merge old locks and newly added/removed without saving it to file --- VERSION.cmake | 4 ++-- tests/zypp/Locks_test.cc | 8 ++++---- zypp/Locks.cc | 19 +++++++++++++++++++ zypp/Locks.h | 7 +++++++ 4 files changed, 32 insertions(+), 6 deletions(-) diff --git a/VERSION.cmake b/VERSION.cmake index 4e9b345..3588388 100644 --- a/VERSION.cmake +++ b/VERSION.cmake @@ -45,6 +45,6 @@ # SET(LIBZYPP_MAJOR "4") -SET(LIBZYPP_MINOR "21") +SET(LIBZYPP_MINOR "22") SET(LIBZYPP_COMPATMINOR "21") -SET(LIBZYPP_PATCH "3") +SET(LIBZYPP_PATCH "0") diff --git a/tests/zypp/Locks_test.cc b/tests/zypp/Locks_test.cc index ff2a47f..bd804b0 100644 --- a/tests/zypp/Locks_test.cc +++ b/tests/zypp/Locks_test.cc @@ -101,13 +101,13 @@ BOOST_AUTO_TEST_CASE(locks_save_without_redundancy) Locks& locks = Locks::instance(); locks.addLock(q); locks.addLock(q); - locks.save("/dev/null"); + locks.merge(); BOOST_CHECK( locks.size()==1 ); locks.addLock(q); - locks.save("/dev/null"); + locks.merge(); BOOST_CHECK( locks.size()==1 ); locks.removeLock(q); - locks.save("/dev/null"); + locks.merge(); BOOST_CHECK( locks.size() == 0 ); } @@ -118,7 +118,7 @@ BOOST_AUTO_TEST_CASE( locks_empty ) q.addString("foo-bar-nonexist"); Locks& locks = Locks::instance(); locks.addLock(q); - locks.save( "/dev/null" ); //only need merge list + locks.merge(); //only need merge list BOOST_CHECK( locks.existEmpty() ); locks.removeEmpty(); BOOST_CHECK( locks.size() == 0 ); diff --git a/zypp/Locks.cc b/zypp/Locks.cc index 5976423..84d647e 100644 --- a/zypp/Locks.cc +++ b/zypp/Locks.cc @@ -402,6 +402,25 @@ bool Locks::Impl::mergeList(callback::SendReport& report) return true; } +void Locks::merge() +{ + if( (_pimpl->toAdd.size() | _pimpl->toRemove.size())==0) + { + return; //nothing to merge + } + + callback::SendReport report; + report->start(); + if (!_pimpl->mergeList(report)) + { + report->finish(SavingLocksReport::ABORTED); + return; + } + DBG << "locks merged" << endl; + report->finish(SavingLocksReport::NO_ERROR); + _pimpl->locksDirty = true; +} + void Locks::save( const Pathname& file ) { if( ((_pimpl->toAdd.size() | _pimpl->toRemove.size())==0) diff --git a/zypp/Locks.h b/zypp/Locks.h index ee5c4e1..1e18b00 100644 --- a/zypp/Locks.h +++ b/zypp/Locks.h @@ -113,6 +113,13 @@ namespace zypp * \see SavingLocksReport */ void save( const Pathname& file = ZConfig::instance().locksFile() ); + + /** + * Merges toAdd and ToRemove list to stable list. + * \note Can call callback if problem during merging occure + * \see SavingLocksReport + */ + void merge(); /** * Gets true if some lock doesn't lock any object in pool -- 2.7.4