From: Michal 'vorner' Vaner Date: Wed, 17 Oct 2012 10:15:05 +0000 (+0200) Subject: [2207] Split off the local Writer X-Git-Tag: trac2402_base~12^2~17 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=5b77cd205f08b1bc76ec5ff4248f4c9cb4e0ac27;p=thirdparty%2Fkea.git [2207] Split off the local Writer Into a separate file. It is not needed to be too public. --- diff --git a/src/lib/datasrc/memory/Makefile.am b/src/lib/datasrc/memory/Makefile.am index b626068bbe..25fc0fa40a 100644 --- a/src/lib/datasrc/memory/Makefile.am +++ b/src/lib/datasrc/memory/Makefile.am @@ -22,7 +22,8 @@ libdatasrc_memory_la_SOURCES += zone_table.h zone_table.cc libdatasrc_memory_la_SOURCES += zone_finder.h zone_finder.cc libdatasrc_memory_la_SOURCES += zone_table_segment.h zone_table_segment.cc libdatasrc_memory_la_SOURCES += zone_table_segment_local.h zone_table_segment_local.cc -libdatasrc_memory_la_SOURCES += zone_writer.h zone_writer.cc +libdatasrc_memory_la_SOURCES += zone_writer.h +libdatasrc_memory_la_SOURCES += zone_writer_local.h zone_writer_local.cc libdatasrc_memory_la_SOURCES += load_action.h nodist_libdatasrc_memory_la_SOURCES = memory_messages.h memory_messages.cc diff --git a/src/lib/datasrc/memory/zone_table_segment_local.cc b/src/lib/datasrc/memory/zone_table_segment_local.cc index 218c8a2f26..2630d1eaba 100644 --- a/src/lib/datasrc/memory/zone_table_segment_local.cc +++ b/src/lib/datasrc/memory/zone_table_segment_local.cc @@ -13,7 +13,7 @@ // PERFORMANCE OF THIS SOFTWARE. #include -#include "zone_writer.h" +#include "zone_writer_local.h" using namespace isc::util; diff --git a/src/lib/datasrc/memory/zone_writer.h b/src/lib/datasrc/memory/zone_writer.h index d763fba11a..1fdfbfd643 100644 --- a/src/lib/datasrc/memory/zone_writer.h +++ b/src/lib/datasrc/memory/zone_writer.h @@ -12,19 +12,14 @@ // OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR // PERFORMANCE OF THIS SOFTWARE. -#ifndef ZONE_RELOADER_H -#define ZONE_RELOADER_H +#ifndef MEM_ZONE_WRITER_H +#define MEM_ZONE_WRITER_H #include "load_action.h" -#include -#include - namespace isc { namespace datasrc { namespace memory { -class ZoneData; -class ZoneTableSegment; /// \brief Does an update to a zone. /// @@ -82,64 +77,6 @@ public: virtual void cleanup() = 0; }; -/// \brief Writer implementation which loads data locally. -/// -/// This implementation prepares a clean zone data and lets one callback -/// to fill it and another to install it somewhere. The class does mostly -/// nothing (and delegates the work to the callbacks), just stores little bit -/// of state between the calls. -class ZoneWriterLocal : public ZoneWriter { -public: - /// \brief Constructor - /// - /// \param segment The zone table segment to store the zone into. - /// \param load_action The callback used to load data. - /// \param install_action The callback used to install the loaded zone. - /// \param rrclass The class of the zone. - ZoneWriterLocal(ZoneTableSegment* segment, const LoadAction& load_action, - const dns::Name& name, const dns::RRClass& rrclass); - - /// \brief Destructor - ~ZoneWriterLocal(); - - /// \brief Loads the data. - /// - /// This prepares an empty ZoneData and calls load_action (passed to - /// constructor) to fill it with data. - /// - /// \throw std::bad_alloc If there's a problem allocating the ZoneData. - /// \throw isc::Unexpected if it is called the second time in lifetime - /// of the object. - /// \throw Whatever the load_action throws, it is propagated up. - virtual void load(); - - /// \brief Installs the zone. - /// - /// This simply calls the install_action. - /// - /// \throw isc::Unexpected if it is called the second time in lifetime - /// of the object or if load() was not called previously or if - /// cleanup() was already called. - /// \throw Whatever the install_action throws, it is propagated up. - virtual void install(); - - /// \brief Clean up memory. - /// - /// Cleans up the memory used by load()ed zone if not yet installed, or - /// the old zone replaced by install(). - virtual void cleanup(); -private: - ZoneTableSegment* segment_; - LoadAction load_action_; - dns::Name origin_; - dns::RRClass rrclass_; - ZoneData* zone_data_; - // The load was performed - bool loaded_; - // The data are ready to be installed - bool data_ready_; -}; - } } } diff --git a/src/lib/datasrc/memory/zone_writer.cc b/src/lib/datasrc/memory/zone_writer_local.cc similarity index 98% rename from src/lib/datasrc/memory/zone_writer.cc rename to src/lib/datasrc/memory/zone_writer_local.cc index f7f90c6f5c..01df3da6cb 100644 --- a/src/lib/datasrc/memory/zone_writer.cc +++ b/src/lib/datasrc/memory/zone_writer_local.cc @@ -12,7 +12,7 @@ // OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR // PERFORMANCE OF THIS SOFTWARE. -#include "zone_writer.h" +#include "zone_writer_local.h" #include "zone_data.h" #include "zone_table_segment.h" diff --git a/src/lib/datasrc/memory/zone_writer_local.h b/src/lib/datasrc/memory/zone_writer_local.h new file mode 100644 index 0000000000..6a92056772 --- /dev/null +++ b/src/lib/datasrc/memory/zone_writer_local.h @@ -0,0 +1,92 @@ +// Copyright (C) 2012 Internet Systems Consortium, Inc. ("ISC") +// +// Permission to use, copy, modify, and/or distribute this software for any +// purpose with or without fee is hereby granted, provided that the above +// copyright notice and this permission notice appear in all copies. +// +// THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH +// REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +// AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, +// INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +// LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE +// OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +// PERFORMANCE OF THIS SOFTWARE. + +#ifndef MEM_ZONE_WRITER_LOCAL_H +#define MEM_ZONE_WRITER_LOCAL_H + +#include "zone_writer.h" + +#include +#include + +namespace isc { +namespace datasrc { +namespace memory { + +class ZoneData; +class ZoneTableSegment; + +/// \brief Writer implementation which loads data locally. +/// +/// This implementation prepares a clean zone data and lets one callback +/// to fill it and another to install it somewhere. The class does mostly +/// nothing (and delegates the work to the callbacks), just stores little bit +/// of state between the calls. +class ZoneWriterLocal : public ZoneWriter { +public: + /// \brief Constructor + /// + /// \param segment The zone table segment to store the zone into. + /// \param load_action The callback used to load data. + /// \param install_action The callback used to install the loaded zone. + /// \param rrclass The class of the zone. + ZoneWriterLocal(ZoneTableSegment* segment, const LoadAction& load_action, + const dns::Name& name, const dns::RRClass& rrclass); + + /// \brief Destructor + ~ZoneWriterLocal(); + + /// \brief Loads the data. + /// + /// This prepares an empty ZoneData and calls load_action (passed to + /// constructor) to fill it with data. + /// + /// \throw std::bad_alloc If there's a problem allocating the ZoneData. + /// \throw isc::Unexpected if it is called the second time in lifetime + /// of the object. + /// \throw Whatever the load_action throws, it is propagated up. + virtual void load(); + + /// \brief Installs the zone. + /// + /// This simply calls the install_action. + /// + /// \throw isc::Unexpected if it is called the second time in lifetime + /// of the object or if load() was not called previously or if + /// cleanup() was already called. + /// \throw Whatever the install_action throws, it is propagated up. + virtual void install(); + + /// \brief Clean up memory. + /// + /// Cleans up the memory used by load()ed zone if not yet installed, or + /// the old zone replaced by install(). + virtual void cleanup(); +private: + ZoneTableSegment* segment_; + LoadAction load_action_; + dns::Name origin_; + dns::RRClass rrclass_; + ZoneData* zone_data_; + // The load was performed + bool loaded_; + // The data are ready to be installed + bool data_ready_; +}; + +} +} +} + +#endif diff --git a/src/lib/datasrc/tests/memory/zone_table_segment_unittest.cc b/src/lib/datasrc/tests/memory/zone_table_segment_unittest.cc index d1d32e025b..36f06ad2c4 100644 --- a/src/lib/datasrc/tests/memory/zone_table_segment_unittest.cc +++ b/src/lib/datasrc/tests/memory/zone_table_segment_unittest.cc @@ -13,7 +13,7 @@ // PERFORMANCE OF THIS SOFTWARE. #include -#include +#include #include #include diff --git a/src/lib/datasrc/tests/memory/zone_writer_unittest.cc b/src/lib/datasrc/tests/memory/zone_writer_unittest.cc index e9c698f70f..2719cb452f 100644 --- a/src/lib/datasrc/tests/memory/zone_writer_unittest.cc +++ b/src/lib/datasrc/tests/memory/zone_writer_unittest.cc @@ -12,7 +12,7 @@ // OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR // PERFORMANCE OF THIS SOFTWARE. -#include +#include #include #include