llarp/endpoint_base.hpp
Namespaces
| Name |
|---|
| llarp [crypto.hpp] |
| llarp::quic |
| llarp::dns |
Classes
| Name | |
|---|---|
| class | llarp::EndpointBase |
| struct | llarp::EndpointBase::SendStat |
Source code
#pragma once
#include <llarp/service/address.hpp>
#include <llarp/service/convotag.hpp>
#include <llarp/service/protocol_type.hpp>
#include "router_id.hpp"
#include <llarp/ev/ev.hpp>
#include <llarp/dns/srv_data.hpp>
#include <functional>
#include <memory>
#include <string>
#include <tuple>
#include <optional>
#include <unordered_set>
#include <set>
namespace llarp
{
namespace quic
{
class TunnelManager;
}
namespace dns
{
class Server;
}
class EndpointBase
{
std::unordered_set<dns::SRVData> m_SRVRecords;
public:
virtual ~EndpointBase() = default;
using AddressVariant_t = std::variant<service::Address, RouterID>;
struct SendStat
{
uint64_t messagesSend;
uint64_t messagesRecv;
size_t numTotalConvos;
Duration_t estimatedRTT;
Duration_t lastSendAt;
Duration_t lastRecvAt;
};
void
PutSRVRecord(dns::SRVData srv);
virtual std::shared_ptr<dns::Server>
DNS() const
{
return nullptr;
};
virtual void
SRVRecordsChanged() = 0;
bool
DelSRVRecordIf(std::function<bool(const dns::SRVData&)> filter);
std::set<dns::SRVData>
SRVRecords() const;
virtual std::optional<SendStat>
GetStatFor(AddressVariant_t remote) const = 0;
virtual std::unordered_set<AddressVariant_t>
AllRemoteEndpoints() const = 0;
virtual AddressVariant_t
LocalAddress() const = 0;
virtual std::optional<AddressVariant_t>
GetEndpointWithConvoTag(service::ConvoTag tag) const = 0;
virtual std::optional<service::ConvoTag>
GetBestConvoTagFor(AddressVariant_t addr) const = 0;
virtual bool
EnsurePathTo(
AddressVariant_t addr,
std::function<void(std::optional<service::ConvoTag>)> hook,
llarp_time_t timeout) = 0;
virtual void
LookupNameAsync(
std::string name, std::function<void(std::optional<AddressVariant_t>)> resultHandler) = 0;
virtual const EventLoop_ptr&
Loop() = 0;
virtual bool
SendToOrQueue(
service::ConvoTag tag, const llarp_buffer_t& payload, service::ProtocolType t) = 0;
virtual void
LookupServiceAsync(
std::string name,
std::string service,
std::function<void(std::vector<dns::SRVData>)> resultHandler) = 0;
virtual void
MarkAddressOutbound(AddressVariant_t remote) = 0;
};
} // namespace llarp
Updated on 2026-01-10 at 22:49:46 +0000