libzypp 17.31.1
watchfile.h
Go to the documentation of this file.
1/*---------------------------------------------------------------------\
2| ____ _ __ __ ___ |
3| |__ / \ / / . \ . \ |
4| / / \ V /| _/ _/ |
5| / /__ | | | | | | |
6| /_____||_| |_| |_| |
7| |
8\---------------------------------------------------------------------*/
12#ifndef ZYPP_CORE_FS_WATCHFILE_H
13#define ZYPP_CORE_FS_WATCHFILE_H
14
15#include <iosfwd>
16
17#include <zypp/PathInfo.h>
18
20namespace zypp
21{
22
24 //
25 // CLASS NAME : WatchFile
26 //
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 { ctorInit( mode ); }
60
61 WatchFile( Pathname && path_r, Initial mode = INIT )
62 : _path( std::move(path_r) )
63 { ctorInit( mode ); }
64
65 const Pathname & path() const
66 { return _path; }
67
68 off_t lastSize() const
69 { return _size;}
70
71 time_t lastMtime() const
72 { return _mtime; }
73
74 bool isDirty() const
75 {
76 PathInfo pi( _path );
77 return( _size != pi.size() || _mtime != pi.mtime() );
78 }
79
81 {
82 PathInfo pi( _path );
83 if ( _size != pi.size() || _mtime != pi.mtime() )
84 {
85 _size = pi.size();
86 _mtime = pi.mtime();
87 return true;
88 }
89 return false;
90 }
91
92 private:
93 void ctorInit( Initial mode )
94 {
95 PathInfo pi( mode == INIT ? _path : Pathname() );
96 _size = pi.size();
97 _mtime = pi.mtime();
98 }
99
100 private:
102 off_t _size;
103 time_t _mtime;
104 };
106
108} // namespace zypp
110#endif // ZYPP_CORE_FS_WATCHFILE_H
Remember a files attributes to detect content changes.
Definition: watchfile.h:50
WatchFile(const Pathname &path_r=Pathname(), Initial mode=INIT)
Definition: watchfile.h:56
bool hasChanged()
Definition: watchfile.h:80
void ctorInit(Initial mode)
Definition: watchfile.h:93
bool isDirty() const
Definition: watchfile.h:74
off_t lastSize() const
Definition: watchfile.h:68
const Pathname & path() const
Definition: watchfile.h:65
Pathname _path
Definition: watchfile.h:101
WatchFile(Pathname &&path_r, Initial mode=INIT)
Definition: watchfile.h:61
time_t lastMtime() const
Definition: watchfile.h:71
Wrapper class for ::stat/::lstat.
Definition: PathInfo.h:221
time_t mtime() const
Definition: PathInfo.h:376
Definition: Arch.h:352
Easy-to use interface to the ZYPP dependency resolver.
Definition: CodePitfalls.doc:2