From 9792fc9d137b4dd702360ac0242f9a7a26e675c2 Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Mon, 21 Sep 2015 18:07:02 +0200 Subject: Add tracer_guard to restore database tracer --- bpkg/database | 11 +++++++++++ bpkg/pkg-unpack.cxx | 4 ++-- 2 files changed, 13 insertions(+), 2 deletions(-) (limited to 'bpkg') diff --git a/bpkg/database b/bpkg/database index c4ace56..05ffb04 100644 --- a/bpkg/database +++ b/bpkg/database @@ -17,6 +17,17 @@ namespace bpkg database open (const dir_path& configuration, tracer&, bool create = false); + + struct tracer_guard + { + tracer_guard (database& db, tracer& t) + : db_ (db), t_ (db.tracer ()) {db.tracer (t);} + ~tracer_guard () {db_.tracer (*t_);} + + private: + database& db_; + odb::tracer* t_; + }; } #endif // BPKG_DATABASE diff --git a/bpkg/pkg-unpack.cxx b/bpkg/pkg-unpack.cxx index 6979842..463531f 100644 --- a/bpkg/pkg-unpack.cxx +++ b/bpkg/pkg-unpack.cxx @@ -28,7 +28,7 @@ namespace bpkg pkg_unpack (database& db, const dir_path& c, const dir_path& d, bool purge) { tracer trace ("pkg_unpack(dir)"); - db.tracer (trace); // "Tail" call, never restored. + tracer_guard tg (db, trace); if (!exists (d)) fail << "package directory " << d << " does not exist"; @@ -82,7 +82,7 @@ namespace bpkg pkg_unpack (database& db, const dir_path& c, const string& name) { tracer trace ("pkg_unpack(pkg)"); - db.tracer (trace); // "Tail" call, never restored. + tracer_guard tg (db, trace); transaction t (db.begin ()); shared_ptr p (db.find (name)); -- cgit v1.1