diff options
author | Roman Smrž <roman.smrz@seznam.cz> | 2023-05-28 20:48:07 +0200 |
---|---|---|
committer | Roman Smrž <roman.smrz@seznam.cz> | 2023-06-14 22:17:17 +0200 |
commit | be323e65108f4c1d57312a4d26a6a24d3a380c75 (patch) | |
tree | 2ddc81ef079f3d42fb4d4780a5fd1cf0d27ef7b5 /include/erebos | |
parent | 15ad6ae7bd64d8d7319d75dbbb0827addd22fef2 (diff) |
Storage: wait for scheduled watch callbacks
Diffstat (limited to 'include/erebos')
-rw-r--r-- | include/erebos/storage.h | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/include/erebos/storage.h b/include/erebos/storage.h index ed537eb..3a3073d 100644 --- a/include/erebos/storage.h +++ b/include/erebos/storage.h @@ -563,6 +563,9 @@ private: Stored<T> mstored; }; +/** + * Manages registered watch callbacks to Head<T> object using RAII principle. + */ template<class T> class WatchedHead : public Head<T> { @@ -590,6 +593,18 @@ public: static_cast<Head<T> &>(*this) = h; return *this; } + + /// Destructor stops the watching started with Head<T>::watch call. + /** + * Once the WatchedHead object is destroyed, no further Head<T> changes + * will trigger the associated callback. + * + * The destructor also ensures that any scheduled callback run + * triggered by a previous change to the head is executed and finished + * before the destructor returns. The exception is when the destructor + * is called directly from the callback itself, in which case the + * destructor returns immediately. + */ ~WatchedHead(); }; |