Browse Source

[2862] Reset the segment upon command

Michal 'vorner' Vaner 11 years ago
parent
commit
3194a2019c
1 changed files with 15 additions and 1 deletions
  1. 15 1
      src/bin/auth/datasrc_clients_mgr.h

+ 15 - 1
src/bin/auth/datasrc_clients_mgr.h

@@ -627,7 +627,21 @@ private:
     }
     }
 
 
     void doSegmentUpdate(const isc::data::ConstElementPtr& arg) {
     void doSegmentUpdate(const isc::data::ConstElementPtr& arg) {
-        (void) arg;
+        // TODO: Error handling. Invalid RRClass, non-existing stuff, exceptions
+        const isc::dns::RRClass
+            rrclass(arg->get("data-source-class")->stringValue());
+        const std::string& name(arg->get("data-source-name")->stringValue());
+        const isc::data::ConstElementPtr& segment_params =
+            arg->get("segment-params");
+        typename MutexType::Locker locker(*map_mutex_);
+        const boost::shared_ptr<isc::datasrc::ConfigurableClientList>& list =
+            (**clients_map_)[rrclass];
+        if (!list) {
+            // TODO: Log error
+            return;
+        }
+        list->resetMemorySegment(name,
+            isc::datasrc::memory::ZoneTableSegment::READ_ONLY, segment_params);
     }
     }
 
 
     void doLoadZone(const isc::data::ConstElementPtr& arg);
     void doLoadZone(const isc::data::ConstElementPtr& arg);