#ifndef LLARP_DHT_EXPLORENETWORKJOB #define LLARP_DHT_EXPLORENETWORKJOB #include #include namespace llarp { namespace dht { struct ExploreNetworkJob : public TX< RouterID, RouterID > { ExploreNetworkJob(const RouterID &peer, AbstractContext *ctx) : TX< RouterID, RouterID >(TXOwner{}, peer, ctx) { } bool Validate(const RouterID &) const override { // TODO: check with lokid return true; } void Start(const TXOwner &peer) override; bool GetNextPeer(Key_t &, const std::set< Key_t > &) override { return false; } void ExtractStatus(util::StatusObject &obj) const override { std::vector< std::string > foundObjs; for(const auto &found : valuesFound) { foundObjs.emplace_back(found.ToHex()); } obj.PutStringArray("found", foundObjs); util::StatusObject txownerObj; txownerObj.PutInt("txid", whoasked.txid); txownerObj.PutString("node", whoasked.node.ToHex()); obj.PutObject("whoasked", txownerObj); std::vector< std::string > asked; for(const auto &peer : peersAsked) asked.emplace_back(peer.ToHex()); obj.PutStringArray("asked", asked); obj.PutString("target", target.ToHex()); } void DoNextRequest(const Key_t &) override { } void SendReply() override; }; } // namespace dht } // namespace llarp #endif