libzypp  11.13.5
WatchFile.h
Go to the documentation of this file.
1 /*---------------------------------------------------------------------\
2 | ____ _ __ __ ___ |
3 | |__ / \ / / . \ . \ |
4 | / / \ V /| _/ _/ |
5 | / /__ | | | | | | |
6 | /_____||_| |_| |_| |
7 | |
8 \---------------------------------------------------------------------*/
12 #ifndef ZYPP_BASE_WATCHFILE_H
13 #define ZYPP_BASE_WATCHFILE_H
14 
15 #include <iosfwd>
16 
17 #include "zypp/PathInfo.h"
18 
20 namespace zypp
21 {
22 
24  //
25  // CLASS NAME : WatchFile
26  //
49  class WatchFile
50  {
51  public:
52  enum Initial { NO_INIT, INIT };
53 
54  public:
56  WatchFile( const Pathname & path_r = Pathname(),
57  Initial mode = INIT )
58  : _path( path_r )
59  {
60  PathInfo pi( mode == INIT ? path_r : Pathname() );
61  _size = pi.size();
62  _mtime = pi.mtime();
63  }
64 
65  const Pathname & path() const
66  { return _path; }
67 
68  bool hasChanged()
69  {
70  PathInfo pi( _path );
71  if ( _size != pi.size() || _mtime != pi.mtime() )
72  {
73  _size = pi.size();
74  _mtime = pi.mtime();
75  return true;
76  }
77  return false;
78  }
79 
80  private:
81  Pathname _path;
82  off_t _size;
83  time_t _mtime;
84  };
86 
88 } // namespace zypp
90 #endif // ZYPP_BASE_WATCHFILE_H