]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mon/MonClient: schedule tick using lambda 18283/head
authorKefu Chai <kchai@redhat.com>
Fri, 13 Oct 2017 03:32:13 +0000 (11:32 +0800)
committerKefu Chai <kchai@redhat.com>
Fri, 13 Oct 2017 04:06:18 +0000 (12:06 +0800)
simpler this way without defining a local struct.

Signed-off-by: Kefu Chai <kchai@redhat.com>
src/mon/MonClient.cc

index 850b38d69b605b47ba84b5989a00494134502a57..250620cb56b7a47c3fd460516b73db6e13a383de 100644 (file)
@@ -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);
+  }
 }
 
 // ---------