- invert arguments in sqlite3x setprogresshandler
authorDuncan Mac-Vicar P <dmacvicar@suse.de>
Fri, 27 Jul 2007 15:35:30 +0000 (15:35 +0000)
committerDuncan Mac-Vicar P <dmacvicar@suse.de>
Fri, 27 Jul 2007 15:35:30 +0000 (15:35 +0000)
- add some docu
- try to make clean cache also tick

zypp/RepoManager.cc
zypp/cache/CacheStore.cc
zypp/cache/sqlite3x/sqlite3x.hpp
zypp/cache/sqlite3x/sqlite3x_connection.cpp
zypp/repo/cached/RepoImpl.cc

index 1df57f3..85c05b7 100644 (file)
@@ -604,11 +604,13 @@ namespace zypp
     callback::SendReport<ProgressReport> report;
     progress.sendTo( ProgressReportAdaptor( progressrcv, report ) );
     progress.name(str::form(_("Cleaning repository '%s' cache"), info.alias().c_str()));
-    progress.toMin();
-
+    
     cache::CacheStore store(_pimpl->options.repoCachePath);
 
     data::RecordId id = store.lookupRepository(info.alias());
+    
+    CombinedProgressData subprogrcv(progress);
+    
     store.cleanRepository(id);
     store.commit();
   }
index e4da305..4e62af9 100644 (file)
@@ -767,6 +767,7 @@ void CacheStore::cleanRepository( const data::RecordId &id,
                                   const ProgressData::ReceiverFnc & progressrcv )
 {
   sqlite3_command cmd( _pimpl->con, "delete from repositories where id=:id");
+  _pimpl->con.setprogresshandler(progressrcv);
   cmd.bind(":id", id);
 
   try
@@ -775,8 +776,10 @@ void CacheStore::cleanRepository( const data::RecordId &id,
   }
   catch ( const sqlite3x::database_error &e )
   {
+    _pimpl->con.resetprogresshandler();
     ZYPP_THROW(CacheRecordNotFoundException());
   }
+  _pimpl->con.resetprogresshandler();
 }
 
 void CacheStore::cleanRepository( const std::string &alias,
index 0ff2b0d..0a11ce3 100644 (file)
@@ -47,8 +47,17 @@ public:
   sqlite3_connection(const char *db);\r
   sqlite3_connection(const wchar_t *db);\r
   \r
-  void setprogresshandler( int,\r
-                           const zypp::ProgressData::ReceiverFnc & );\r
+  /**\r
+   * \short Sets a tick progress callback\r
+   * \param fnc callback\r
+   * \param n number of sqlite vm opcodes per tick\r
+   */\r
+  void setprogresshandler( const zypp::ProgressData::ReceiverFnc &fnc,\r
+                           int n = 100 );\r
+  /**\r
+   * \short Disables tick progress callback\r
+   */\r
+  void resetprogresshandler();\r
   \r
   ~sqlite3_connection();\r
 \r
index b5af44e..e3ad870 100644 (file)
@@ -73,8 +73,8 @@ sqlite3_connection::~sqlite3_connection()
   if (this->db) sqlite3_close(this->db);\r
 }\r
 \r
-void sqlite3_connection::setprogresshandler( int n,\r
-                                             const zypp::ProgressData::ReceiverFnc &fnc )\r
+void sqlite3_connection::setprogresshandler( const zypp::ProgressData::ReceiverFnc &fnc,\r
+                                             int n)\r
 {\r
   _ticks.sendTo(fnc);\r
   if ( fnc )\r
@@ -83,6 +83,11 @@ void sqlite3_connection::setprogresshandler( int n,
     sqlite3_progress_handler(db, n, NULL, (void*)this);\r
 }\r
 \r
+void sqlite3_connection::resetprogresshandler()\r
+{\r
+  sqlite3_progress_handler(db, 0, NULL, (void*)this);\r
+}\r
+\r
 void sqlite3_connection::open(const char *db)\r
 {\r
   if (sqlite3_open(db, &this->db)!=SQLITE_OK)\r
index 2634512..236e543 100644 (file)
@@ -83,7 +83,7 @@ void RepoImpl::createResolvables()
   try
   {
     sqlite3_connection con((_options.dbdir + "zypp.db").asString().c_str());
-    con.setprogresshandler(100, subprogrcv);
+    con.setprogresshandler(subprogrcv, 100);
 
     con.executenonquery("PRAGMA cache_size=8000;");
     con.executenonquery("BEGIN;");
@@ -171,7 +171,7 @@ void RepoImpl::createResolvables()
       }
     }
     con.executenonquery("COMMIT;");
-    con.setprogresshandler(00, ProgressData::ReceiverFnc());
+    con.resetprogresshandler();
   }
   catch(exception &ex) {
       cerr << "Exception Occured: " << ex.what() << endl;
@@ -201,7 +201,7 @@ void RepoImpl::createPatchAndDeltas()
   try
   {
     sqlite3_connection con((_options.dbdir + "zypp.db").asString().c_str());
-    //con.setprogresshandler(500, global_progress_handler, (void*)this);
+    con.setprogresshandler(subprogrcv);
     con.executenonquery("PRAGMA cache_size=8000;");
     con.executenonquery("BEGIN;");
 
@@ -300,7 +300,7 @@ void RepoImpl::createPatchAndDeltas()
 
       _patchRpms.push_back(patch);
     }
-    con.setprogresshandler(0, ProgressData::ReceiverFnc());
+    con.resetprogresshandler();
   }
   catch(exception &ex) {
       cerr << "Exception Occured: " << ex.what() << endl;