From 394c6e6c84adc2d7ea6ed47d5c62b870b9a84a6b Mon Sep 17 00:00:00 2001 From: Michael Andres Date: Thu, 6 Apr 2006 16:07:38 +0000 Subject: [PATCH] added LogControl::TmpLineWriter --- zypp/base/LogControl.cc | 13 +++++++++++++ zypp/base/LogControl.h | 9 +++++++++ 2 files changed, 22 insertions(+) diff --git a/zypp/base/LogControl.cc b/zypp/base/LogControl.cc index ac36480..b1e12dd 100644 --- a/zypp/base/LogControl.cc +++ b/zypp/base/LogControl.cc @@ -214,6 +214,9 @@ namespace zypp void setLineWriter( const shared_ptr & writer_r ) { _lineWriter = writer_r; } + shared_ptr getLineWriter() const + { return _lineWriter; } + /** Assert \a _lineFormater is not NULL. */ void setLineFormater( const shared_ptr & format_r ) { @@ -381,6 +384,16 @@ namespace zypp LogControl::TmpExcessive::~TmpExcessive() { LogControlImpl::instance.excessive( false ); } + /////////////////////////////////////////////////////////////////// + // + // LogControl::TmpLineWriter + // + /////////////////////////////////////////////////////////////////// + LogControl::TmpLineWriter::TmpLineWriter( const shared_ptr & writer_r ) + : _writer( LogControlImpl::instance.getLineWriter() ) + { LogControlImpl::instance.setLineWriter( writer_r ); } + LogControl::TmpLineWriter::~TmpLineWriter() + { LogControlImpl::instance.setLineWriter( _writer ); } /****************************************************************** ** ** FUNCTION NAME : operator<< diff --git a/zypp/base/LogControl.h b/zypp/base/LogControl.h index 1606f4a..48cf830 100644 --- a/zypp/base/LogControl.h +++ b/zypp/base/LogControl.h @@ -105,6 +105,15 @@ namespace zypp ~TmpExcessive(); }; + /** Exchange LineWriter for the lifetime of this object. */ + struct TmpLineWriter + { + TmpLineWriter( const shared_ptr & writer_r = shared_ptr() ); + ~TmpLineWriter(); + private: + shared_ptr _writer; + }; + private: /** Default ctor: Singleton */ LogControl() -- 2.7.4