1 /*---------------------------------------------------------------------\
3 | |__ / \ / / . \ . \ |
8 \---------------------------------------------------------------------*/
9 /** \file zypp/target/CommitPackageCacheReadAhead.h
12 #ifndef ZYPP_TARGET_COMMITPACKAGECACHEREADAHEAD_H
13 #define ZYPP_TARGET_COMMITPACKAGECACHEREADAHEAD_H
17 #include "zypp/base/Logger.h"
18 #include "zypp/base/Exception.h"
19 #include "zypp/base/DefaultIntegral.h"
20 #include "zypp/Repository.h"
21 #include "zypp/TmpPath.h"
22 #include "zypp/target/CommitPackageCacheImpl.h"
24 ///////////////////////////////////////////////////////////////////
26 { /////////////////////////////////////////////////////////////////
27 ///////////////////////////////////////////////////////////////////
29 { /////////////////////////////////////////////////////////////////
31 ///////////////////////////////////////////////////////////////////
33 // CLASS NAME : IMediaKey
35 /** Helper storing a source id and media number. */
42 IMediaKey( const PoolItem & obj_r )
43 : _repo( obj_r->repository() )
44 , _mediaNr( obj_r->mediaNr() )
48 IMediaKey( const ResObject::constPtr & obj_r )
49 : _repo( obj_r->repository() )
50 , _mediaNr( obj_r->mediaNr() )
53 IMediaKey( const Repository & repo, unsigned mediaNr_r )
55 , _mediaNr( mediaNr_r )
58 bool operator==( const IMediaKey & rhs ) const
59 { return( _repo == rhs._repo && _mediaNr == rhs._mediaNr ); }
61 bool operator!=( const IMediaKey & rhs ) const
62 { return ! operator==( rhs ); }
64 bool operator<( const IMediaKey & rhs ) const
66 return( _repo.id() < rhs._repo.id()
67 || ( _repo.id() == rhs._repo.id()
68 && _mediaNr < rhs._mediaNr ) );
72 DefaultIntegral<unsigned,0> _mediaNr;
74 ///////////////////////////////////////////////////////////////////
76 std::ostream & operator<<( std::ostream & str, const IMediaKey & obj );
78 ///////////////////////////////////////////////////////////////////
80 // CLASS NAME : CommitPackageCacheReadAhead
83 class CommitPackageCacheReadAhead : public CommitPackageCache::Impl
86 CommitPackageCacheReadAhead( const PackageProvider & packageProvider_r );
89 /** Provide the package. Either from Source or from cache. */
90 virtual ManagedFile get( const PoolItem & citem_r );
93 /** Return whether \a pi is located on a CD/DVD */
94 bool onInteractiveMedia( const PoolItem & pi ) const;
98 * Called before changing from one interactive media to another.
99 * Performs the read ahead of packages trying to avoid the necessity
100 * of switching back to the current media later.
102 void cacheLastInteractive( const PoolItem & citem_r );
104 /** cacheLastInteractive helper . */
105 void doCacheLastInteractive( const PoolItem & citem_r );
108 DefaultIntegral<unsigned,0> _dbgChanges;
109 IMediaKey _lastInteractive;
112 ///////////////////////////////////////////////////////////////////
114 /////////////////////////////////////////////////////////////////
115 } // namespace target
116 ///////////////////////////////////////////////////////////////////
117 /////////////////////////////////////////////////////////////////
119 ///////////////////////////////////////////////////////////////////
120 #endif // ZYPP_TARGET_COMMITPACKAGECACHEREADAHEAD_H