libzypp  11.13.5
CommitPackageCacheReadAhead.h
Go to the documentation of this file.
1 /*---------------------------------------------------------------------\
2 | ____ _ __ __ ___ |
3 | |__ / \ / / . \ . \ |
4 | / / \ V /| _/ _/ |
5 | / /__ | | | | | | |
6 | /_____||_| |_| |_| |
7 | |
8 \---------------------------------------------------------------------*/
12 #ifndef ZYPP_TARGET_COMMITPACKAGECACHEREADAHEAD_H
13 #define ZYPP_TARGET_COMMITPACKAGECACHEREADAHEAD_H
14 
15 #include <map>
16 
17 #include "zypp/base/Logger.h"
18 #include "zypp/base/Exception.h"
20 #include "zypp/Repository.h"
21 #include "zypp/TmpPath.h"
23 
25 namespace zypp
26 {
27 
28  namespace target
29  {
30 
32  //
33  // CLASS NAME : IMediaKey
34  //
36  struct IMediaKey
37  {
39  {}
40 
41  explicit
42  IMediaKey( const PoolItem & obj_r )
43  : _repo( obj_r->repository() )
44  , _mediaNr( obj_r->mediaNr() )
45  {}
46 
47  explicit
48  IMediaKey( const ResObject::constPtr & obj_r )
49  : _repo( obj_r->repository() )
50  , _mediaNr( obj_r->mediaNr() )
51  {}
52 
53  IMediaKey( const Repository & repo, unsigned mediaNr_r )
54  : _repo( repo )
55  , _mediaNr( mediaNr_r )
56  {}
57 
58  bool operator==( const IMediaKey & rhs ) const
59  { return( _repo == rhs._repo && _mediaNr == rhs._mediaNr ); }
60 
61  bool operator!=( const IMediaKey & rhs ) const
62  { return ! operator==( rhs ); }
63 
64  bool operator<( const IMediaKey & rhs ) const
65  {
66  return( _repo.id() < rhs._repo.id()
67  || ( _repo.id() == rhs._repo.id()
68  && _mediaNr < rhs._mediaNr ) );
69  }
70 
73  };
75 
76  std::ostream & operator<<( std::ostream & str, const IMediaKey & obj );
77 
79  //
80  // CLASS NAME : CommitPackageCacheReadAhead
81  //
84  {
85  typedef std::map<PoolItem,ManagedFile> CacheMap;
86 
87  public:
88  CommitPackageCacheReadAhead( const Pathname & rootDir_r,
89  const PackageProvider & packageProvider_r );
90 
91  public:
93  virtual ManagedFile get( const PoolItem & citem_r );
94 
95  private:
97  bool onInteractiveMedia( const PoolItem & pi ) const;
98 
99  private:
105  void cacheLastInteractive( const PoolItem & citem_r );
106 
108  void doCacheLastInteractive( const PoolItem & citem_r );
109 
110  private:
112 
114 
115  Pathname _rootDir;
116  shared_ptr<filesystem::TmpDir> _cacheDir;
118  };
120 
122  } // namespace target
125 } // namespace zypp
127 #endif // ZYPP_TARGET_COMMITPACKAGECACHEREADAHEAD_H