libzypp  11.13.5
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