Browse Source

[2267] refactoring: introduce a helper Loader class and move addFromLoad there.

JINMEI Tatuya 12 years ago
parent
commit
55f047a3e2
2 changed files with 17 additions and 11 deletions
  1. 13 11
      src/lib/datasrc/memory/memory_client.cc
  2. 4 0
      src/lib/datasrc/memory/memory_client.h

+ 13 - 11
src/lib/datasrc/memory/memory_client.cc

@@ -651,20 +651,22 @@ public:
 
         return (result::SUCCESS);
     }
+};
 
-    /*
-     * Wrapper around above.
-     */
-    void addFromLoad(const ConstRRsetPtr& set,
+// A helper internal class for load().
+class InMemoryClient::Loader {
+public:
+    Loader(InMemoryClientImpl* client_impl) : client_impl_(client_impl) {}
+    void addFromLoad(const ConstRRsetPtr& rrset,
                      const Name& zone_name, ZoneData* zone_data)
     {
-        switch (add(set, zone_name, *zone_data)) {
-        case result::SUCCESS:
-            return;
-        default:
-            assert(0);
-        }
+        const result::Result result =
+            client_impl_->add(rrset, zone_name, *zone_data);
+        assert(result == result::SUCCESS);
     }
+
+private:
+    InMemoryClientImpl* client_impl_;
 };
 
 result::Result
@@ -680,7 +682,7 @@ InMemoryClient::InMemoryClientImpl::load(
     assert(!last_rrset_);
 
     try {
-        rrset_installer(boost::bind(&InMemoryClientImpl::addFromLoad, this,
+        rrset_installer(boost::bind(&Loader::addFromLoad, Loader(this),
                                     _1, zone_name, holder.get()));
         // Add any last RRset that was left
         addRdataSet(zone_name, *holder.get(),

+ 4 - 0
src/lib/datasrc/memory/memory_client.h

@@ -244,6 +244,10 @@ private:
     // directly any more (it should be handled through DataSourceClient)?
     class InMemoryClientImpl;
     InMemoryClientImpl* impl_;
+
+    // A helper internal class used by load().  It maintains some intermediate
+    // states while loading RRs of the zone.
+    class Loader;
 };
 
 } // namespace memory