#
SET(LIBZYPP_MAJOR "4")
-SET(LIBZYPP_MINOR "21")
+SET(LIBZYPP_MINOR "22")
SET(LIBZYPP_COMPATMINOR "21")
-SET(LIBZYPP_PATCH "3")
+SET(LIBZYPP_PATCH "0")
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 );
}
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 );
return true;
}
+void Locks::merge()
+{
+ if( (_pimpl->toAdd.size() | _pimpl->toRemove.size())==0)
+ {
+ return; //nothing to merge
+ }
+
+ callback::SendReport<SavingLocksReport> 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)
* \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