From: Mukund Sivaraman Date: Fri, 3 May 2013 09:48:30 +0000 (+0530) Subject: [2850] Add different exception definitions for the kind of exceptions reset() may... X-Git-Tag: bind10-1.2.0beta1-release~467^2~53 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=366cf13a9ca23ea0ace26677754d1968106c277b;p=thirdparty%2Fkea.git [2850] Add different exception definitions for the kind of exceptions reset() may throw --- diff --git a/src/lib/datasrc/memory/zone_table_segment.h b/src/lib/datasrc/memory/zone_table_segment.h index 90fdcbbb0c..756aa49e46 100644 --- a/src/lib/datasrc/memory/zone_table_segment.h +++ b/src/lib/datasrc/memory/zone_table_segment.h @@ -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. ///