Commit 0d8bee5c authored by Michal 'vorner' Vaner's avatar Michal 'vorner' Vaner
Browse files

[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.
parent 2aa3e8e3
......@@ -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));
}
}
......@@ -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_;
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment