From: Michal 'vorner' Vaner Date: Fri, 12 Jul 2013 09:35:07 +0000 (+0200) Subject: [2862] Pass the update command to the list manager X-Git-Tag: bind10-1.2.0beta1-release~317^2~7 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=0d8bee5c0cc3cf65a0a14890d7ff76de328e4316;p=thirdparty%2Fkea.git [2862] Pass the update command to the list manager Pass the sgmtinfo-update command to the client list manager and ack the segment when done. Not tested, as there's interaction with the command channel and threads and external modules. Too much plumbing and too little functionality to test. --- diff --git a/src/bin/auth/auth_srv.cc b/src/bin/auth/auth_srv.cc index 36b495ae53..9f14ac1c27 100644 --- a/src/bin/auth/auth_srv.cc +++ b/src/bin/auth/auth_srv.cc @@ -972,9 +972,34 @@ AuthSrv::listsReconfigured() { const bool has_remote = hasRemoteSegment(impl_->datasrc_clients_mgr_); if (has_remote && !impl_->readers_subscribed_) { impl_->config_session_->subscribe("SegmentReader"); + impl_->config_session_-> + setUnhandledCallback(boost::bind(&AuthSrv::foreignCommand, this, + _1, _2, _3)); impl_->readers_subscribed_ = true; } else if (!has_remote && impl_->readers_subscribed_) { impl_->config_session_->unsubscribe("SegmentReader"); + impl_->config_session_-> + setUnhandledCallback(isc::config::ModuleCCSession:: + UnhandledCallback()); impl_->readers_subscribed_ = false; } } + +void +AuthSrv::reconfigureDone(ConstElementPtr params) { + // ACK the segment + impl_->config_session_-> + groupSendMsg(isc::config::createCommand("sgmtinfo-update-ack", + params), "MemMgr"); +} + +void +AuthSrv::foreignCommand(const std::string& command, const std::string&, + const ConstElementPtr& params) +{ + if (command == "sgmtinfo-update") { + impl_->datasrc_clients_mgr_. + segmentInfoUpdate(params, boost::bind(&AuthSrv::reconfigureDone, + this, params)); + } +} diff --git a/src/bin/auth/auth_srv.h b/src/bin/auth/auth_srv.h index a57ed0cf54..1c49d4f783 100644 --- a/src/bin/auth/auth_srv.h +++ b/src/bin/auth/auth_srv.h @@ -282,6 +282,9 @@ public: void listsReconfigured(); private: + void reconfigureDone(isc::data::ConstElementPtr request); + void foreignCommand(const std::string& command, const std::string&, + const isc::data::ConstElementPtr& params); AuthSrvImpl* impl_; isc::asiolink::SimpleCallback* checkin_; isc::asiodns::DNSLookup* dns_lookup_;