libzypp  13.10.6
SerialNumber.h
Go to the documentation of this file.
1 /*---------------------------------------------------------------------\
2 | ____ _ __ __ ___ |
3 | |__ / \ / / . \ . \ |
4 | / / \ V /| _/ _/ |
5 | / /__ | | | | | | |
6 | /_____||_| |_| |_| |
7 | |
8 \---------------------------------------------------------------------*/
12 #ifndef ZYPP_BASE_SERIALNUMBER_H
13 #define ZYPP_BASE_SERIALNUMBER_H
14 
15 #include <iosfwd>
16 
17 #include "zypp/base/PtrTypes.h"
18 
20 namespace zypp
21 {
22 
24  //
25  // CLASS NAME : SerialNumber
26  //
45  {
46  friend std::ostream & operator<<( std::ostream & str, const SerialNumber & obj );
47 
48  public:
50  SerialNumber( bool dirty_r = false );
52  virtual ~SerialNumber();
53 
54  public:
55  void setDirty()
56  { _dirty = true; }
57 
58  public:
59  bool dirty() const
60  { return _dirty; }
61 
62  bool clean() const
63  { return !_dirty; }
64 
65  unsigned serial() const
66  {
67  if ( _dirty )
68  {
69  ++_serial;
70  _dirty = false;
71  }
72  return _serial;
73  }
74 
75  private:
76  mutable bool _dirty;
77  mutable unsigned _serial;
78  };
80 
82  std::ostream & operator<<( std::ostream & str, const SerialNumber & obj );
83 
85  //
86  // CLASS NAME : SerialNumberWatcher
87  //
123  {
124  friend std::ostream & operator<<( std::ostream & str, const SerialNumberWatcher & obj );
125 
126  public:
137  SerialNumberWatcher( unsigned serial_r = (unsigned)-1 );
139  SerialNumberWatcher( const SerialNumber & serial_r );
141  virtual ~SerialNumberWatcher();
142 
143  public:
145  bool isDirty( unsigned serial_r ) const
146  { return( _serial != serial_r ); }
148  bool isDirty( const SerialNumber & serial_r ) const
149  { return( _serial != serial_r.serial() ); }
150 
152  bool isClean( unsigned serial_r ) const
153  { return( _serial == serial_r ); }
155  bool isClean( const SerialNumber & serial_r ) const
156  { return( _serial == serial_r.serial() ); }
157 
158  public:
160  bool remember( unsigned serial_r ) const
161  {
162  if ( isDirty( serial_r ) )
163  {
164  _serial = serial_r;
165  return true;
166  }
167  return false;
168  }
170  bool remember( const SerialNumber & serial_r ) const
171  { return remember( serial_r.serial() ); }
172 
173  private:
174  mutable unsigned _serial;
175  };
177 
179  std::ostream & operator<<( std::ostream & str, const SerialNumberWatcher & obj );
180 
182 } // namespace zypp
184 #endif // ZYPP_BASE_SERIALNUMBER_H
Simple serial number watcher.
Definition: SerialNumber.h:122
bool remember(const SerialNumber &serial_r) const
Definition: SerialNumber.h:170
friend std::ostream & operator<<(std::ostream &str, const SerialNumberWatcher &obj)
Definition: SerialNumber.cc:94
bool dirty() const
Definition: SerialNumber.h:59
bool isDirty(const SerialNumber &serial_r) const
Definition: SerialNumber.h:148
std::ostream & operator<<(std::ostream &str, const Exception &obj)
Definition: Exception.cc:120
unsigned serial() const
Definition: SerialNumber.h:65
virtual ~SerialNumberWatcher()
Dtor.
Definition: SerialNumber.cc:86
bool clean() const
Definition: SerialNumber.h:62
bool isClean(unsigned serial_r) const
Return whether serial_r is still unchanged.
Definition: SerialNumber.h:152
SerialNumber(bool dirty_r=false)
Ctor taking initial dirty value.
Definition: SerialNumber.cc:34
bool isClean(const SerialNumber &serial_r) const
Definition: SerialNumber.h:155
Simple serial number provider.
Definition: SerialNumber.h:44
SerialNumberWatcher(unsigned serial_r=(unsigned)-1)
Ctor taking an initial serial value.
Definition: SerialNumber.cc:68
virtual ~SerialNumber()
Dtor.
Definition: SerialNumber.cc:44
friend std::ostream & operator<<(std::ostream &str, const SerialNumber &obj)
Definition: SerialNumber.cc:52
bool remember(unsigned serial_r) const
Return isDirty, storing serial_r as new value.
Definition: SerialNumber.h:160
bool isDirty(unsigned serial_r) const
Return whether serial_r differs.
Definition: SerialNumber.h:145