libzypp  10.5.0
ZYppCommitResult.cc
Go to the documentation of this file.
00001 /*---------------------------------------------------------------------\
00002 |                          ____ _   __ __ ___                          |
00003 |                         |__  / \ / / . \ . \                         |
00004 |                           / / \ V /|  _/  _/                         |
00005 |                          / /__ | | | | | |                           |
00006 |                         /_____||_| |_| |_|                           |
00007 |                                                                      |
00008 \---------------------------------------------------------------------*/
00013 #include <iostream>
00014 #include "zypp/base/LogTools.h"
00015 
00016 #include "zypp/ZYppCommitResult.h"
00017 
00019 namespace zypp
00020 { 
00021 
00023   //
00024   //    CLASS NAME : ZYppCommitResult::Impl
00025   //
00027 
00028   class ZYppCommitResult::Impl
00029   {
00030     public:
00031       Impl()
00032       {}
00033 
00034     public:
00035       Pathname                  _root;
00036       sat::Transaction          _transaction;
00037       TransactionStepList       _transactionStepList;
00038       UpdateNotifications       _updateMessages;
00039 
00040     private:
00041       friend Impl * rwcowClone<Impl>( const Impl * rhs );
00043       Impl * clone() const { return new Impl( *this ); }
00044   };
00045 
00047   //
00048   //    CLASS NAME : ZYppCommitResult
00049   //
00051 
00052   ZYppCommitResult::ZYppCommitResult()
00053   : _result(0), _pimpl( new Impl )
00054   {}
00055 
00056   ZYppCommitResult::ZYppCommitResult( const ZYppCommitResult & lhs_r )
00057   : _result(0)
00058   , _errors( lhs_r._errors )
00059   , _remaining( lhs_r._remaining )
00060   , _srcremaining( lhs_r._srcremaining )
00061   , _pimpl( lhs_r._pimpl )
00062   {}
00063 
00064   ZYppCommitResult::ZYppCommitResult( const Pathname & root_r )
00065   : _result(0), _pimpl( new Impl )
00066   { _pimpl->_root = root_r; }
00067 
00068   ZYppCommitResult::~ZYppCommitResult()
00069   {}
00070 
00071   const Pathname & ZYppCommitResult::root() const
00072   { return _pimpl->_root; }
00073 
00074   const sat::Transaction & ZYppCommitResult::transaction() const
00075   { return _pimpl->_transaction; }
00076 
00077   sat::Transaction & ZYppCommitResult::rTransaction()
00078   { return _pimpl->_transaction; }
00079 
00080   const ZYppCommitResult::TransactionStepList & ZYppCommitResult::transactionStepList() const
00081   { return _pimpl->_transactionStepList; }
00082 
00083   ZYppCommitResult::TransactionStepList & ZYppCommitResult::rTransactionStepList()
00084   { return _pimpl->_transactionStepList; }
00085 
00086   const UpdateNotifications & ZYppCommitResult::updateMessages() const
00087   { return _pimpl->_updateMessages; }
00088 
00089   UpdateNotifications & ZYppCommitResult::rUpdateMessages()
00090   { return _pimpl->_updateMessages; }
00091 
00093 
00094   std::ostream & operator<<( std::ostream & str, const ZYppCommitResult & obj )
00095   {
00096     DefaultIntegral<unsigned,0> result[4];
00097     for_( it, obj.transaction().actionBegin(), obj.transaction().actionEnd() )
00098     {
00099       ++result[0];
00100       switch ( it->stepStage() )
00101       {
00102         case sat::Transaction::STEP_DONE :      ++result[1]; break;
00103         case sat::Transaction::STEP_ERROR :     ++result[2]; break;
00104         case sat::Transaction::STEP_TODO :      ++result[3]; break;
00105       }
00106     }
00107     str << "CommitResult "
00108         << " (total " << result[0]
00109         << ", done " << result[1]
00110         << ", error " << result[2]
00111         << ", skipped " << result[3]
00112         << ", updateMessages " << obj.updateMessages().size()
00113         << ")";
00114     return str;
00115   }
00116 
00118 } // namespace zypp