]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[2850] Add different exception definitions for the kind of exceptions reset() may...
authorMukund Sivaraman <muks@isc.org>
Fri, 3 May 2013 09:48:30 +0000 (15:18 +0530)
committerMukund Sivaraman <muks@isc.org>
Fri, 3 May 2013 09:48:30 +0000 (15:18 +0530)
src/lib/datasrc/memory/zone_table_segment.h

index 90fdcbbb0c991258d084d33b3b95cd069b364581..756aa49e4612ca8b5f2256580a00afe9e975dfb1 100644 (file)
@@ -49,6 +49,43 @@ public:
     {}
 };
 
+/// \brief Exception thrown when a \c reset() on a ZoneTableSegment
+/// fails (due to various reasons). When this exception is thrown, there
+/// is still a strong guarantee that the previously existing backing
+/// memory store was not unloaded.
+class ResetFailed : public isc::Exception {
+public:
+    ResetFailed(const char* file, size_t line, const char* what) :
+        isc::Exception(file, line, what)
+    {}
+};
+
+/// \brief Exception thrown when a \c reset() on a ZoneTableSegment
+/// fails (due to various reasons), and it was not able to preserve any
+/// existing backing memory store. When this exception is thrown, there
+/// is a strong guarantee that the previously existing backing memory
+/// store was cleared.
+class ResetFailedAndSegmentCleared : public isc::Exception {
+public:
+    ResetFailedAndSegmentCleared(const char* file, size_t line,
+                                const char* what) :
+        isc::Exception(file, line, what)
+    {}
+};
+
+/// \brief Exception thrown when a \c reset() on a ZoneTableSegment
+/// fails because it was determined that the backing memory store is
+/// corrupted. This is typically an unexpected condition that may arise
+/// in rare cases. When this exception is thrown, there is a strong
+/// guarantee that the previously existing backing memory store was
+/// cleared.
+class BrokenSegment : public ResetFailedAndSegmentCleared {
+public:
+    BrokenSegment(const char* file, size_t line, const char* what) :
+        ResetFailedAndSegmentCleared(file, line, what)
+    {}
+};
+
 /// \brief Memory-management independent entry point that contains a
 /// pointer to a zone table in memory.
 ///