Result activate (Slot::ptr const& slot, RipplePublicKey const& key, bool cluster) override { SlotImp::ptr impl (std::dynamic_pointer_cast <SlotImp> (slot)); return m_logic.activate (impl, key, cluster); }
// with activate void test_backoff2() { auto const seconds = 10000; testcase("backoff 2"); TestStore store; TestChecker checker; TestStopwatch clock; Logic<TestChecker> logic (clock, store, checker, beast::Journal{}); logic.addFixedPeer ("test", beast::IP::Endpoint::from_string("65.0.0.1:5")); { Config c; c.autoConnect = false; c.listeningPort = 1024; logic.config(c); } std::size_t n = 0; std::array<std::uint8_t, 33> key; key.fill(0); for (std::size_t i = 0; i < seconds; ++i) { auto const list = logic.autoconnect(); if (! list.empty()) { expect (list.size() == 1); auto const slot = logic.new_outbound_slot(list.front()); if (! expect (logic.onConnected(slot, beast::IP::Endpoint::from_string("65.0.0.2:5")))) return; std::string s = "."; RipplePublicKey pk (key.begin(), key.end()); if (! expect (logic.activate(slot, pk, false) == PeerFinder::Result::success, "activate")) return; logic.on_closed(slot); ++n; } clock.advance(std::chrono::seconds(1)); logic.once_per_second(); } // No more often than once per minute expect (n <= (seconds+59)/60, "backoff"); }