From 2819d05054f3b0a41cfbf442373bf0fd193cc22d Mon Sep 17 00:00:00 2001 From: Kefu Chai Date: Fri, 13 Oct 2017 11:32:13 +0800 Subject: [PATCH] mon/MonClient: schedule tick using lambda simpler this way without defining a local struct. Signed-off-by: Kefu Chai --- src/mon/MonClient.cc | 20 +++++++------------- 1 file changed, 7 insertions(+), 13 deletions(-) diff --git a/src/mon/MonClient.cc b/src/mon/MonClient.cc index 850b38d69b60..250620cb56b7 100644 --- a/src/mon/MonClient.cc +++ b/src/mon/MonClient.cc @@ -792,20 +792,14 @@ void MonClient::_un_backoff() void MonClient::schedule_tick() { - struct C_Tick : public Context { - MonClient *monc; - explicit C_Tick(MonClient *m) : monc(m) {} - void finish(int r) override { - monc->tick(); - } - }; - + auto do_tick = make_lambda_context([this]() { tick(); }); if (_hunting()) { - timer.add_event_after(cct->_conf->mon_client_hunt_interval - * reopen_interval_multiplier, - new C_Tick(this)); - } else - timer.add_event_after(cct->_conf->mon_client_ping_interval, new C_Tick(this)); + const auto hunt_interval = (cct->_conf->mon_client_hunt_interval * + reopen_interval_multiplier); + timer.add_event_after(hunt_interval, do_tick); + } else { + timer.add_event_after(cct->_conf->mon_client_ping_interval, do_tick); + } } // --------- -- 2.47.3