libzypp  10.5.0
TargetCallbackReceiver.cc
Go to the documentation of this file.
00001 /*---------------------------------------------------------------------\
00002 |                          ____ _   __ __ ___                          |
00003 |                         |__  / \ / / . \ . \                         |
00004 |                           / / \ V /|  _/  _/                         |
00005 |                          / /__ | | | | | |                           |
00006 |                         /_____||_| |_| |_|                           |
00007 |                                                                      |
00008 \---------------------------------------------------------------------*/
00013 #include "zypp/target/TargetCallbackReceiver.h"
00014 
00015 #include "zypp/target/rpm/RpmCallbacks.h"
00016 
00018 namespace zypp
00019 { 
00020 
00021   namespace target
00022   { 
00023 
00024         RpmInstallPackageReceiver::RpmInstallPackageReceiver (Resolvable::constPtr res)
00025             : callback::ReceiveReport<rpm::RpmInstallReport> ()
00026             , _resolvable (res)
00027             , _level( target::rpm::InstallResolvableReport::RPM )
00028             , _abort (false)
00029         {
00030         }
00031 
00032         RpmInstallPackageReceiver::~RpmInstallPackageReceiver ()
00033         {
00034         }
00035 
00036         void RpmInstallPackageReceiver::reportbegin()
00037         {
00038         }
00039 
00040         void RpmInstallPackageReceiver::reportend()
00041         {
00042         }
00043 
00045         void RpmInstallPackageReceiver::start( const Pathname & name )
00046         {
00047             _report->start( _resolvable );
00048             _abort = false;
00049         }
00050 
00055         bool RpmInstallPackageReceiver::progress( unsigned percent )
00056         {
00057             _abort = ! _report->progress( percent, _resolvable );
00058             return _abort;
00059         }
00060 
00061         rpm::RpmInstallReport::Action
00062         RpmInstallPackageReceiver::problem( Exception & excpt_r )
00063         {
00064             rpm::InstallResolvableReport::Action user =
00065                 _report->problem( _resolvable
00066                     , rpm::InstallResolvableReport::INVALID
00067                     , excpt_r.asUserHistory()
00068                     , _level
00069                 );
00070 
00071             switch (user) {
00072                 case rpm::InstallResolvableReport::RETRY:
00073                     return rpm::RpmInstallReport::RETRY;
00074                 case rpm::InstallResolvableReport::ABORT:
00075                     _abort = true;
00076                     return rpm::RpmInstallReport::ABORT;
00077                 case rpm::InstallResolvableReport::IGNORE:
00078                     return rpm::RpmInstallReport::IGNORE;
00079             }
00080 
00081             return rpm::RpmInstallReport::problem( excpt_r );
00082         }
00083 
00084         void RpmInstallPackageReceiver::finishInfo( const std::string & info_r )
00085         {
00086           _finishInfo = info_r;
00087         }
00088 
00090         void RpmInstallPackageReceiver::finish()
00091         {
00092             _report->finish( _resolvable, rpm::InstallResolvableReport::NO_ERROR, _finishInfo, _level );
00093         }
00094 
00096         void RpmInstallPackageReceiver::finish( Exception & excpt_r )
00097         {
00098             _report->finish( _resolvable, rpm::InstallResolvableReport::INVALID, std::string(), _level );
00099         }
00100 
00101         void RpmInstallPackageReceiver::tryLevel( target::rpm::InstallResolvableReport::RpmLevel level_r )
00102         {
00103             _level = level_r;
00104         }
00105 
00106 
00110 
00111         RpmRemovePackageReceiver::RpmRemovePackageReceiver (Resolvable::constPtr res)
00112             : callback::ReceiveReport<rpm::RpmRemoveReport> ()
00113             , _resolvable (res)
00114             , _abort(false)
00115         {
00116         }
00117 
00118         RpmRemovePackageReceiver::~RpmRemovePackageReceiver ()
00119         {
00120         }
00121 
00122         void RpmRemovePackageReceiver::reportbegin()
00123         {
00124         }
00125 
00126         void RpmRemovePackageReceiver::reportend()
00127         {
00128         }
00129 
00131         void RpmRemovePackageReceiver::start( const std::string & name )
00132         {
00133             _report->start( _resolvable );
00134             _abort = false;
00135         }
00136 
00141         bool RpmRemovePackageReceiver::progress( unsigned percent )
00142         {
00143             _abort = ! _report->progress( percent, _resolvable );
00144             return _abort;
00145         }
00146 
00147         rpm::RpmRemoveReport::Action
00148         RpmRemovePackageReceiver::problem( Exception & excpt_r )
00149         {
00150             rpm::RemoveResolvableReport::Action user =
00151                 _report->problem( _resolvable
00152                     , rpm::RemoveResolvableReport::INVALID
00153                     , excpt_r.asUserHistory()
00154                 );
00155 
00156             switch (user) {
00157                 case rpm::RemoveResolvableReport::RETRY:
00158                     return rpm::RpmRemoveReport::RETRY;
00159                 case rpm::RemoveResolvableReport::ABORT:
00160                     _abort = true;
00161                     return rpm::RpmRemoveReport::ABORT;
00162                 case rpm::RemoveResolvableReport::IGNORE:
00163                     return rpm::RpmRemoveReport::IGNORE;
00164             }
00165 
00166             return rpm::RpmRemoveReport::problem( excpt_r );
00167         }
00168 
00169         void RpmRemovePackageReceiver::finishInfo( const std::string & info_r )
00170         {
00171           _finishInfo = info_r;
00172         }
00173 
00175         void RpmRemovePackageReceiver::finish()
00176         {
00177             _report->progress( 100, _resolvable );
00178             _report->finish( _resolvable, rpm::RemoveResolvableReport::NO_ERROR, _finishInfo );
00179         }
00180 
00182         void RpmRemovePackageReceiver::finish( Exception & excpt_r )
00183         {
00184             _report->finish( _resolvable, rpm::RemoveResolvableReport::INVALID, std::string() );
00185         }
00186 
00188   } // namespace target
00190 
00192 } // namespace zypp