#pragma once #include #include "intro_set.hpp" #include "lookup.hpp" namespace llarp { namespace service { /// interval for which we will add to lookup timeout interval constexpr auto IntrosetLookupGraceInterval = 20s; struct Endpoint; struct HiddenServiceAddressLookup : public IServiceLookup { const PubKey rootkey; uint64_t relayOrder; const dht::Key_t location; using HandlerFunc = std::function, const RouterID&, llarp_time_t, uint64_t)>; HandlerFunc handle; HiddenServiceAddressLookup( Endpoint* p, HandlerFunc h, const dht::Key_t& location, const PubKey& rootkey, const RouterID& routerAsked, uint64_t relayOrder, uint64_t tx, llarp_time_t timeout); ~HiddenServiceAddressLookup() override = default; virtual bool IsFor(EndpointBase::AddressVariant_t addr) const override { if (const auto* ptr = std::get_if
(&addr)) { return Address{rootkey} == *ptr; } return false; } bool HandleIntrosetResponse(const std::set& results) override; std::shared_ptr BuildRequestMessage() override; }; } // namespace service } // namespace llarp