#ifndef LLARP_DHT_MESSAGES_FIND_INTRO_HPP #define LLARP_DHT_MESSAGES_FIND_INTRO_HPP #include #include #include #include namespace llarp { namespace dht { struct FindIntroMessage final : public IMessage { uint64_t R = 0; llarp::service::Address S; llarp::service::Tag N; uint64_t T = 0; bool relayed = false; FindIntroMessage(const Key_t& from, bool relay) : IMessage(from) { relayed = relay; } FindIntroMessage(const llarp::service::Tag& tag, uint64_t txid, bool iterate = true) : IMessage({}), N(tag), T(txid) { S.Zero(); if(iterate) R = 0; else R = 1; } FindIntroMessage(uint64_t txid, const llarp::service::Address& addr, bool iterate = true) : IMessage({}), S(addr), T(txid) { N.Zero(); if(iterate) R = 0; else R = 1; } ~FindIntroMessage(); bool BEncode(llarp_buffer_t* buf) const override; bool DecodeKey(const llarp_buffer_t& key, llarp_buffer_t* val) override; bool HandleMessage(llarp_dht_context* ctx, std::vector< IMessage::Ptr_t >& replies) const override; }; } // namespace dht } // namespace llarp #endif