From 08d32a84b02f70c57a961ecfea7ff50864ccadcb Mon Sep 17 00:00:00 2001 From: Stanislav Visnovsky Date: Tue, 7 Feb 2006 14:29:35 +0000 Subject: [PATCH] resolvable download callback --- zypp/target/TargetImpl.cc | 25 +++++++++++++++++++++---- zypp/target/TargetImpl.h | 3 +++ 2 files changed, 24 insertions(+), 4 deletions(-) diff --git a/zypp/target/TargetImpl.cc b/zypp/target/TargetImpl.cc index 0d51c3b..7eb8fc1 100644 --- a/zypp/target/TargetImpl.cc +++ b/zypp/target/TargetImpl.cc @@ -80,6 +80,21 @@ namespace zypp // TODO objects from the XML store return _store; } + + Pathname TargetImpl::getRpmFile(Package::constPtr package) + { + callback::SendReport report; + + // FIXME: error handling + // FIXME: Url + report->start( package, Url() ); + + Pathname file = package->getPlainRpm(); + + report->finish( package, source::DownloadResolvableReport::NO_ERROR, "" ); + + return file; + } void TargetImpl::commit(ResPool pool_r) { @@ -141,8 +156,10 @@ namespace zypp Package::constPtr p = dynamic_pointer_cast(it->resolvable()); if (it->status().isToBeInstalled()) { + Pathname localfile = getRpmFile(p); + #warning Exception handling - // create a progress report proxy + // create a installation progress report proxy RpmInstallPackageReceiver progress(it->resolvable()); progress.connect(); @@ -150,7 +167,7 @@ namespace zypp try { progress.tryLevel( target::rpm::InstallResolvableReport::RPM ); - rpm().installPackage(p->getPlainRpm(), + rpm().installPackage(localfile, p->installOnly() ? rpm::RpmDb::RPMINST_NOUPGRADE : 0); } catch (Exception & excpt_r) { @@ -159,7 +176,7 @@ namespace zypp WAR << "Install failed, retrying with --nodeps" << endl; try { progress.tryLevel( target::rpm::InstallResolvableReport::RPM_NODEPS ); - rpm().installPackage(p->getPlainRpm(), + rpm().installPackage(localfile, p->installOnly() ? rpm::RpmDb::RPMINST_NOUPGRADE : rpm::RpmDb::RPMINST_NODEPS); } catch (Exception & excpt_r) { @@ -168,7 +185,7 @@ namespace zypp try { progress.tryLevel( target::rpm::InstallResolvableReport::RPM_NODEPS_FORCE ); - rpm().installPackage(p->getPlainRpm(), + rpm().installPackage(localfile, p->installOnly() ? rpm::RpmDb::RPMINST_NOUPGRADE : (rpm::RpmDb::RPMINST_NODEPS|rpm::RpmDb::RPMINST_FORCE)); } catch (Exception & excpt_r) { diff --git a/zypp/target/TargetImpl.h b/zypp/target/TargetImpl.h index bdd1a23..f9e620c 100644 --- a/zypp/target/TargetImpl.h +++ b/zypp/target/TargetImpl.h @@ -99,6 +99,9 @@ namespace zypp private: /** Null implementation */ static TargetImpl_Ptr _nullimpl; + + /** wrapper with callback around getPlainRpm */ + Pathname getRpmFile(Package::constPtr package); }; /////////////////////////////////////////////////////////////////// -- 2.7.4