Browse Source

[2377] Add missing callback to MasterLoader

The tentative interface of the MasterLoader was missing a callback to
add RRsets.

Also, include some small changes to the interface - pass RRClass as
reference and have DEFAULT options value for no special options.
Michal 'vorner' Vaner 12 years ago
parent
commit
3814969790

+ 9 - 5
src/lib/dns/master_loader.cc

@@ -21,13 +21,15 @@ class MasterLoader::MasterLoaderImpl {
 public:
 public:
     MasterLoaderImpl(const char* master_file,
     MasterLoaderImpl(const char* master_file,
                      const Name& zone_origin,
                      const Name& zone_origin,
-                     const RRClass zone_class,
-                     MasterLoaderCallbacks callbacks,
+                     const RRClass& zone_class,
+                     const MasterLoaderCallbacks& callbacks,
+                     const AddRRsetCallback& add_callback,
                      MasterLoader::Options options) :
                      MasterLoader::Options options) :
         lexer_(),
         lexer_(),
         zone_origin_(zone_origin),
         zone_origin_(zone_origin),
         zone_class_(zone_class),
         zone_class_(zone_class),
         callbacks_(callbacks),
         callbacks_(callbacks),
+        add_callback_(add_callback),
         options_(options)
         options_(options)
     {
     {
         lexer_.pushSource(master_file);
         lexer_.pushSource(master_file);
@@ -48,18 +50,20 @@ private:
     const Name& zone_origin_;
     const Name& zone_origin_;
     const RRClass zone_class_;
     const RRClass zone_class_;
     MasterLoaderCallbacks callbacks_;
     MasterLoaderCallbacks callbacks_;
+    AddRRsetCallback add_callback_;
     MasterLoader::Options options_;
     MasterLoader::Options options_;
     RRsetPtr current_rrset_;
     RRsetPtr current_rrset_;
 };
 };
 
 
 MasterLoader::MasterLoader(const char* master_file,
 MasterLoader::MasterLoader(const char* master_file,
                            const Name& zone_origin,
                            const Name& zone_origin,
-                           const RRClass zone_class,
-                           MasterLoaderCallbacks callbacks,
+                           const RRClass& zone_class,
+                           const MasterLoaderCallbacks& callbacks,
+                           const AddRRsetCallback& add_callback,
                            Options options)
                            Options options)
 {
 {
     impl_ = new MasterLoaderImpl(master_file, zone_origin,
     impl_ = new MasterLoaderImpl(master_file, zone_origin,
-                                 zone_class, callbacks, options);
+                                 zone_class, callbacks, add_callback, options);
 }
 }
 
 
 MasterLoader::~MasterLoader() {
 MasterLoader::~MasterLoader() {

+ 6 - 4
src/lib/dns/master_loader.h

@@ -25,13 +25,15 @@ namespace dns {
 class MasterLoader {
 class MasterLoader {
 public:
 public:
     enum Options {
     enum Options {
-        MANY_ERRORS,        ///< Lenient mode
+        DEFAULT = 0,
+        MANY_ERRORS        ///< Lenient mode
     };
     };
     MasterLoader(const char* master_file,
     MasterLoader(const char* master_file,
                  const Name& zone_origin,
                  const Name& zone_origin,
-                 const RRClass zone_class,
-                 MasterLoaderCallbacks callbacks,
-                 Options options);
+                 const RRClass& zone_class,
+                 const MasterLoaderCallbacks& callbacks,
+                 const AddRRsetCallback& add_callback,
+                 Options options = DEFAULT);
     ~MasterLoader();
     ~MasterLoader();
 
 
     bool loadIncremental(size_t count_limit);
     bool loadIncremental(size_t count_limit);

+ 7 - 1
src/lib/dns/tests/master_loader_unittest.cc

@@ -46,11 +46,17 @@ public:
         }
         }
     }
     }
 
 
+    void addRRset(const RRsetPtr&) {
+        // TODO
+    }
+
     void
     void
     setLoader(const char* file, const Name& origin, const RRClass rrclass,
     setLoader(const char* file, const Name& origin, const RRClass rrclass,
               const MasterLoader::Options options)
               const MasterLoader::Options options)
     {
     {
-        loader.reset(new MasterLoader(file, origin, rrclass, callbacks_, options));
+        loader.reset(new MasterLoader(file, origin, rrclass, callbacks_,
+                                      boost::bind(&MasterLoaderTest::addRRset,
+                                                  this, _1), options));
     }
     }
 
 
     MasterLoaderCallbacks callbacks_;
     MasterLoaderCallbacks callbacks_;