libzypp  13.10.6
DiskUsageCounter.h
Go to the documentation of this file.
1 /*---------------------------------------------------------------------\
2 | ____ _ __ __ ___ |
3 | |__ / \ / / . \ . \ |
4 | / / \ V /| _/ _/ |
5 | / /__ | | | | | | |
6 | /_____||_| |_| |_| |
7 | |
8 \---------------------------------------------------------------------*/
12 #ifndef ZYPP_DISKUSAGE_COUNTER_H
13 #define ZYPP_DISKUSAGE_COUNTER_H
14 
15 #include "zypp/ResPool.h"
16 
17 #include <set>
18 #include <string>
19 #include <iosfwd>
20 
22 namespace zypp
23 {
24 
26  {
27 
28  public:
29 
33  struct MountPoint
34  {
38  std::string dir;
39 
43  long long block_size;
44 
48  long long total_size;
49 
53  long long used_size;
54 
58  mutable long long pkg_size;
59 
60  bool readonly;
61 
65  MountPoint(std::string d = "/", long long bs = 0LL, long long total = 0LL, long long used = 0LL, long long pkg = 0LL, bool ro=false) :
66  dir(d), block_size(bs), total_size(total), used_size(used), pkg_size(pkg), readonly(ro)
67  {}
68 
69  // sort by directory name
70  bool operator<( const MountPoint & rhs ) const
71  {
72  return dir < rhs.dir;
73  }
74 
76  { return ByteCount( block_size, ByteCount::B ); }
77 
79  { return ByteCount( total_size, ByteCount::K ); }
80 
82  { return ByteCount( used_size, ByteCount::K ); }
83 
86 
88  { return ByteCount( pkg_size, ByteCount::K ); }
89 
92 
95  };
96 
97  typedef std::set<MountPoint> MountPointSet;
98 
100  {}
101 
103  : mps( m )
104  {}
105 
106  bool setMountPoints( const MountPointSet & m )
107  {
108  mps = m;
109  return true;
110  }
111 
113  {
114  return mps;
115  }
116 
117  static MountPointSet detectMountPoints(const std::string &rootdir = "/");
118 
120 
124  MountPointSet disk_usage( const ResPool & pool );
125 
132  { return disk_usage( pi_r.satSolvable() ); }
135  {
136  if ( ! obj_r )
137  return MountPointSet();
138  return disk_usage( obj_r->satSolvable() );
139  }
140 
141  private:
142 
144  };
146 
148  std::ostream & operator<<( std::ostream & str, const DiskUsageCounter::MountPoint & obj );
149 
151 } // namespace zypp
153 #endif // ZYPP_DISKUSAGE_COUNTER_H
MountPointSet disk_usage(const ResPool &pool)
Compute disk usage of the pool.
A Solvable object within the sat Pool.
Definition: Solvable.h:55
bool setMountPoints(const MountPointSet &m)
MountPointSet disk_usage(const ResObject::constPtr &obj_r)
Store and operate with byte count.
Definition: ByteCount.h:30
static MountPointSet justRootPartition()
TraitsType::constPtrType constPtr
Definition: ResObject.h:50
long long total_size
Total size in K (1024)
long long used_size
Used size in K (1024)
std::set< MountPoint > MountPointSet
std::ostream & operator<<(std::ostream &str, const Exception &obj)
Definition: Exception.cc:120
Mount point description.
std::string dir
Directory name.
DiskUsageCounter(const MountPointSet &m)
MountPointSet disk_usage(const PoolItem &pi_r)
long long pkg_size
Used size after commiting the pool (in K)
Global ResObject pool.
Definition: ResPool.h:48
static const Unit B
1 Byte
Definition: ByteCount.h:42
bool operator<(const MountPoint &rhs) const
sat::Solvable satSolvable() const
Return the corresponding sat::Solvable.
Definition: PoolItem.h:114
static const Unit K
1024 Byte
Definition: ByteCount.h:45
Reference to a PoolItem connecting ResObject and ResStatus.
Definition: PoolItem.h:50
const MountPointSet & getMountPoints() const
long long block_size
Block size of the mount point.
MountPoint(std::string d="/", long long bs=0LL, long long total=0LL, long long used=0LL, long long pkg=0LL, bool ro=false)
Ctor - initialize directory and package size.
static MountPointSet detectMountPoints(const std::string &rootdir="/")