]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[2435] Move datasrc::RRsetCollection implementation into database.cc
authorMukund Sivaraman <muks@isc.org>
Thu, 10 Jan 2013 09:17:29 +0000 (14:47 +0530)
committerMukund Sivaraman <muks@isc.org>
Thu, 10 Jan 2013 09:17:32 +0000 (14:47 +0530)
This is so that it is not directly instantiated, but returned by
getRRsetCollection() on the updater.

src/lib/datasrc/Makefile.am
src/lib/datasrc/database.cc
src/lib/datasrc/rrset_collection.cc [deleted file]
src/lib/datasrc/rrset_collection.h [deleted file]
src/lib/datasrc/tests/database_unittest.cc

index ea70d9264b5bbc5a0a871e5efef2aa2a433449a9..a4edd4e5641ae83a46146211992791aa0b938e0b 100644 (file)
@@ -38,7 +38,6 @@ libb10_datasrc_la_SOURCES += client_list.h client_list.cc
 libb10_datasrc_la_SOURCES += memory_datasrc.h memory_datasrc.cc
 libb10_datasrc_la_SOURCES += master_loader_callbacks.h
 libb10_datasrc_la_SOURCES += master_loader_callbacks.cc
-libb10_datasrc_la_SOURCES += rrset_collection.h rrset_collection.cc
 libb10_datasrc_la_SOURCES += zone_loader.h zone_loader.cc
 nodist_libb10_datasrc_la_SOURCES = datasrc_messages.h datasrc_messages.cc
 libb10_datasrc_la_LDFLAGS = -no-undefined -version-info 1:0:1
index 12c3f87ecb6d74d2e60cca85b70c70e27dbd07fb..8257c2118ed6877cc4f47a4d6d0eeb064a839dda 100644 (file)
@@ -31,7 +31,6 @@
 
 #include <datasrc/data_source.h>
 #include <datasrc/logger.h>
-#include <datasrc/rrset_collection.h>
 
 #include <boost/foreach.hpp>
 #include <boost/scoped_ptr.hpp>
@@ -1373,6 +1372,81 @@ DatabaseClient::getIterator(const isc::dns::Name& name,
     return (iterator);
 }
 
+/// \brief datasrc implementation of RRsetCollectionBase.
+class RRsetCollection : public isc::dns::RRsetCollectionBase {
+public:
+    /// \brief Constructor.
+    ///
+    /// No reference (count via \c shared_ptr) to the ZoneUpdater is
+    /// acquired. As long as the collection object is alive, the
+    /// corresponding \c ZoneUpdater should be kept alive.
+    ///
+    /// \param updater The ZoneUpdater to wrap around.
+    /// \param rrclass The RRClass of the records in the zone.
+    RRsetCollection(ZoneUpdater& updater, const isc::dns::RRClass& rrclass) :
+        updater_(updater),
+        rrclass_(rrclass)
+    {}
+
+    /// \brief Destructor
+    virtual ~RRsetCollection() {}
+
+    /// \brief Find a matching RRset in the collection.
+    ///
+    /// Returns the RRset in the collection that exactly matches the
+    /// given \c name, \c rrclass and \c rrtype.  If no matching RRset
+    /// is found, \c NULL is returned.
+    ///
+    /// \throw FindError if find() results in some underlying datasrc error.
+    /// \param name The name of the RRset to search for.
+    /// \param rrclass The class of the RRset to search for.
+    /// \param rrtype The type of the RRset to search for.
+    /// \returns The RRset if found, \c NULL otherwise.
+    virtual isc::dns::ConstRRsetPtr find(const isc::dns::Name& name,
+                                         const isc::dns::RRClass& rrclass,
+                                         const isc::dns::RRType& rrtype) const {
+        if (rrclass != rrclass_) {
+            // We could throw an exception here, but RRsetCollection is
+            // expected to support an arbitrary collection of RRsets,
+            // and it can be queried just as arbitrarily. So we just
+            // return nothing here.
+            return (ConstRRsetPtr());
+        }
+
+        ZoneFinder& finder = updater_.getFinder();
+        try {
+            ZoneFinderContextPtr result =
+                finder.find(name, rrtype,
+                            ZoneFinder::NO_WILDCARD | ZoneFinder::FIND_GLUE_OK);
+            return (result->rrset);
+        } catch (const OutOfZone&) {
+            // As RRsetCollection is an arbitrary set of RRsets, in case
+            // the searched name is out of zone, we return nothing
+            // instead of propagating the exception.
+            return (ConstRRsetPtr());
+        } catch (const DataSourceError& e) {
+            isc_throw(FindError, "ZoneFinder threw a DataSourceError: " <<
+                      e.getMessage().c_str());
+        }
+    }
+
+private:
+    ZoneUpdater& updater_;
+    isc::dns::RRClass rrclass_;
+
+protected:
+    // TODO: RRsetCollectionBase::Iter is not implemented and the
+    // following two methods just throw.
+
+    virtual RRsetCollectionBase::IterPtr getBeginning() {
+        isc_throw(NotImplemented, "This method is not implemented.");
+    }
+
+    virtual RRsetCollectionBase::IterPtr getEnd() {
+        isc_throw(NotImplemented, "This method is not implemented.");
+    }
+};
+
 //
 // Zone updater using some database system as the underlying data source.
 //
diff --git a/src/lib/datasrc/rrset_collection.cc b/src/lib/datasrc/rrset_collection.cc
deleted file mode 100644 (file)
index 0651dec..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
-// Copyright (C) 2013  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.
-
-#include <datasrc/rrset_collection.h>
-#include <datasrc/zone_loader.h>
-#include <exceptions/exceptions.h>
-
-using namespace isc;
-using namespace isc::dns;
-
-namespace isc {
-namespace datasrc {
-
-ConstRRsetPtr
-RRsetCollection::find(const isc::dns::Name& name,
-                      const isc::dns::RRClass& rrclass,
-                      const isc::dns::RRType& rrtype) const
-{
-    if (rrclass != rrclass_) {
-        // We could throw an exception here, but RRsetCollection is
-        // expected to support an arbitrary collection of RRsets, and it
-        // can be queried just as arbitrarily. So we just return nothing
-        // here.
-        return (ConstRRsetPtr());
-    }
-
-    ZoneFinder& finder = updater_.getFinder();
-    try {
-        ZoneFinderContextPtr result =
-            finder.find(name, rrtype,
-                        ZoneFinder::NO_WILDCARD | ZoneFinder::FIND_GLUE_OK);
-        return (result->rrset);
-    } catch (const OutOfZone&) {
-        // As RRsetCollection is an arbitrary set of RRsets, in case the
-        // searched name is out of zone, we return nothing instead of
-        // propagating the exception.
-        return (ConstRRsetPtr());
-    } catch (const DataSourceError& e) {
-        isc_throw(FindError, "ZoneFinder threw a DataSourceError: " <<
-                  e.getMessage().c_str());
-    }
-}
-
-RRsetCollectionBase::IterPtr
-RRsetCollection::getBeginning() {
-    isc_throw(NotImplemented, "This method is not implemented.");
-}
-
-RRsetCollectionBase::IterPtr
-RRsetCollection::getEnd() {
-    isc_throw(NotImplemented, "This method is not implemented.");
-}
-
-} // end of namespace datasrc
-} // end of namespace isc
diff --git a/src/lib/datasrc/rrset_collection.h b/src/lib/datasrc/rrset_collection.h
deleted file mode 100644 (file)
index 0907323..0000000
+++ /dev/null
@@ -1,78 +0,0 @@
-// Copyright (C) 2013  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 RRSET_COLLECTION_DATASRC_H
-#define RRSET_COLLECTION_DATASRC_H 1
-
-#include <dns/rrset_collection_base.h>
-#include <dns/rrclass.h>
-#include <datasrc/zone.h>
-
-namespace isc {
-namespace datasrc {
-
-/// \brief datasrc implementation of RRsetCollectionBase.
-class RRsetCollection : public isc::dns::RRsetCollectionBase {
-public:
-    /// \brief Constructor.
-    ///
-    /// No reference (count via \c shared_ptr) to the ZoneUpdater is
-    /// acquired. As long as the collection object is alive, the
-    /// corresponding \c ZoneUpdater should be kept alive.
-    ///
-    /// \param updater The ZoneUpdater to wrap around.
-    /// \param rrclass The RRClass of the records in the zone.
-    RRsetCollection(ZoneUpdater& updater, const isc::dns::RRClass& rrclass) :
-        updater_(updater),
-        rrclass_(rrclass)
-    {}
-
-    /// \brief Destructor
-    virtual ~RRsetCollection() {}
-
-    /// \brief Find a matching RRset in the collection.
-    ///
-    /// Returns the RRset in the collection that exactly matches the
-    /// given \c name, \c rrclass and \c rrtype.  If no matching RRset
-    /// is found, \c NULL is returned.
-    ///
-    /// \throw FindError if find() results in some underlying datasrc error.
-    /// \param name The name of the RRset to search for.
-    /// \param rrclass The class of the RRset to search for.
-    /// \param rrtype The type of the RRset to search for.
-    /// \returns The RRset if found, \c NULL otherwise.
-    virtual isc::dns::ConstRRsetPtr find(const isc::dns::Name& name,
-                                         const isc::dns::RRClass& rrclass,
-                                         const isc::dns::RRType& rrtype) const;
-
-private:
-    ZoneUpdater& updater_;
-    isc::dns::RRClass rrclass_;
-
-protected:
-    // TODO: RRsetCollectionBase::Iter is not implemented and the
-    // following two methods just throw.
-
-    virtual RRsetCollectionBase::IterPtr getBeginning();
-    virtual RRsetCollectionBase::IterPtr getEnd();
-};
-
-} // end of namespace datasrc
-} // end of namespace isc
-
-#endif  // RRSET_COLLECTION_DATASRC_H
-
-// Local Variables:
-// mode: c++
-// End:
index 0c85aea6a7d8e3948b85179f4e5eb46df16b8429..297fd4c4f34059cbfbe3738dcfc7debbd7312944 100644 (file)
@@ -28,7 +28,6 @@
 #include <datasrc/data_source.h>
 #include <datasrc/iterator.h>
 #include <datasrc/sqlite3_accessor.h>
-#include <datasrc/rrset_collection.h>
 
 #include <testutils/dnsmessage_test.h>