libzypp  12.16.5
zypp::repo::PackageProvider::Impl Class Referenceabstract

PackageProvider implementation. More...

Inheritance diagram for zypp::repo::PackageProvider::Impl:
NonCopyable zypp::repo::PluginPackageProvider zypp::repo::RpmPackageProvider

Public Member Functions

 Impl (RepoMediaAccess &access_r, const Package::constPtr &package_r, const DeltaCandidates &deltas_r, const PackageProviderPolicy &policy_r)
 Ctor taking the Package to provide.
 
virtual ~Impl ()
 
ManagedFile providePackage () const
 Provide the package.
 

Static Public Member Functions

static ImplfactoryMake (RepoMediaAccess &access_r, const Package::constPtr &package_r, const DeltaCandidates &deltas_r, const PackageProviderPolicy &policy_r)
 Factory method providing the appropriate implementation.
 

Protected Types

typedef PackageProvider::Impl Base
 
typedef callback::SendReport
< repo::DownloadResolvableReport
Report
 

Protected Member Functions

virtual ManagedFile providePackageFromCache () const =0
 Lookup the final rpm in cache.
 
virtual ManagedFile doProvidePackage () const =0
 Actually provide the final rpm.
 
Reportreport () const
 Access to the DownloadResolvableReport.
 
bool progressPackageDownload (int value) const
 Redirect ProvideFilePolicy package download progress to this.
 
bool failOnChecksumError () const
 Redirect ProvideFilePolicy failOnChecksumError to this if needed.
 

Protected Attributes

PackageProviderPolicy _policy
 
Package::constPtr _package
 
DeltaCandidates _deltas
 
RepoMediaAccess_access
 

Private Types

typedef shared_ptr< void > ScopedGuard
 

Private Member Functions

ScopedGuard newReport () const
 

Private Attributes

bool _retry
 
shared_ptr< Report_report
 

Detailed Description

PackageProvider implementation.

Definition at line 53 of file PackageProvider.cc.

Member Typedef Documentation

Definition at line 158 of file PackageProvider.cc.

Constructor & Destructor Documentation

zypp::repo::PackageProvider::Impl::Impl ( RepoMediaAccess access_r,
const Package::constPtr package_r,
const DeltaCandidates deltas_r,
const PackageProviderPolicy policy_r 
)
inline

Ctor taking the Package to provide.

Definition at line 57 of file PackageProvider.cc.

virtual zypp::repo::PackageProvider::Impl::~Impl ( )
inlinevirtual

Definition at line 68 of file PackageProvider.cc.

Member Function Documentation

PackageProvider::Impl * zypp::repo::PackageProvider::Impl::factoryMake ( RepoMediaAccess access_r,
const Package::constPtr package_r,
const DeltaCandidates deltas_r,
const PackageProviderPolicy policy_r 
)
static

Factory method providing the appropriate implementation.

Called by PackageProvider ctor. Returned pointer should be immediately wrapped into a smartpointer.

Definition at line 443 of file PackageProvider.cc.

ManagedFile zypp::repo::PackageProvider::Impl::providePackage ( ) const

Provide the package.

The basic workflow.

Exceptions
Exception.

Definition at line 194 of file PackageProvider.cc.

ManagedFile zypp::repo::PackageProvider::Impl::providePackageFromCache ( ) const
protectedpure virtual

Lookup the final rpm in cache.

Default implementation (cache miss).

A non empty ManagedFile will be returned to the caller. File disposal depending on the repos keepPackages setting are handled in providePackage.

Note
The provoided default implementation returns an empty ManagedFile (cache miss).

Implemented in zypp::repo::PluginPackageProvider, and zypp::repo::RpmPackageProvider.

Definition at line 177 of file PackageProvider.cc.

ManagedFile zypp::repo::PackageProvider::Impl::doProvidePackage ( ) const
protectedpure virtual

Actually provide the final rpm.

Default implementation (provide full package)

Report start/problem/finish and retry loop are hadled by providePackage. Here you trigger just progress and delta/plugin callbacks as needed.

Proxy methods for progressPackageDownload and failOnChecksum are provided here. Create similar proxies for other progress callbacks in derived classes and link it to ProvideFilePolicy for download:

ProvideFilePolicy policy;
policy.progressCB( bind( &Base::progressPackageDownload, this, _1 ) );
policy.failOnChecksumErrorCB( bind( &Base::failOnChecksumError, this ) );
return _access.provideFile( _package->repoInfo(), loc, policy );
Note
The provoided default implementation retrieves the packages default location.

Implemented in zypp::repo::PluginPackageProvider, and zypp::repo::RpmPackageProvider.

Definition at line 181 of file PackageProvider.cc.

Report& zypp::repo::PackageProvider::Impl::report ( ) const
inlineprotected

Access to the DownloadResolvableReport.

Definition at line 121 of file PackageProvider.cc.

bool zypp::repo::PackageProvider::Impl::progressPackageDownload ( int  value) const
inlineprotected

Redirect ProvideFilePolicy package download progress to this.

Definition at line 125 of file PackageProvider.cc.

bool zypp::repo::PackageProvider::Impl::failOnChecksumError ( ) const
inlineprotected

Redirect ProvideFilePolicy failOnChecksumError to this if needed.

Definition at line 129 of file PackageProvider.cc.

ScopedGuard zypp::repo::PackageProvider::Impl::newReport ( ) const
inlineprivate

Definition at line 160 of file PackageProvider.cc.

Member Data Documentation

PackageProviderPolicy zypp::repo::PackageProvider::Impl::_policy
protected

Definition at line 152 of file PackageProvider.cc.

Package::constPtr zypp::repo::PackageProvider::Impl::_package
protected

Definition at line 153 of file PackageProvider.cc.

DeltaCandidates zypp::repo::PackageProvider::Impl::_deltas
protected

Definition at line 154 of file PackageProvider.cc.

RepoMediaAccess& zypp::repo::PackageProvider::Impl::_access
protected

Definition at line 155 of file PackageProvider.cc.

bool zypp::repo::PackageProvider::Impl::_retry
mutableprivate

Definition at line 171 of file PackageProvider.cc.

shared_ptr<Report> zypp::repo::PackageProvider::Impl::_report
mutableprivate

Definition at line 172 of file PackageProvider.cc.


The documentation for this class was generated from the following file: