llarp::Router
Inherits from llarp::AbstractRouter, std::enable_shared_from_this< AbstractRouter >
Inherited by tooling::HiveRouter
Public Types
| Name | |
|---|---|
| using std::chrono::steady_clock | Clock_t |
| using Clock_t::time_point | TimePoint_t |
Public Functions
| Name | |
|---|---|
| virtual path::BuildLimiter & | pathBuildLimiter() override |
| virtual const llarp::net::Platform & | Net() const override |
| virtual llarp_dht_context * | dht() const override |
| virtual std::optional< std::variant< nuint32_t, nuint128_t > > | OurPublicIP() const override get what our real public ip is if we can know it |
| virtual const std::shared_ptr< NodeDB > & | nodedb() const override |
| virtual const path::PathContext & | pathContext() const override |
| virtual path::PathContext & | pathContext() override |
| virtual const RouterContact & | rc() const override |
| virtual void | TearDown() override Issue immediate teardown of all resources. |
| virtual void | ModifyOurRC(std::function< std::optional< RouterContact >(RouterContact)> modify) override modify our rc modify returns nullopt if unmodified otherwise it returns the new rc to be sigend and published out |
| virtual void | SetRouterWhitelist(const std::vector< RouterID > & whitelist, const std::vector< RouterID > & greylist, const std::vector< RouterID > & unfundedlist) override set router's service node whitelist |
| virtual std::unordered_set< RouterID > | GetRouterWhitelist() const override |
| virtual exit::Context & | exitContext() override |
| virtual const std::shared_ptr< KeyManager > & | keyManager() const override |
| virtual const SecretKey & | identity() const override |
| virtual const SecretKey & | encryption() const override |
| virtual Profiling & | routerProfiling() override |
| virtual const EventLoop_ptr & | loop() const override |
| virtual vpn::Platform * | GetVPNPlatform() const override |
| virtual void | QueueWork(std::function< void(void)> ) override call function in crypto worker |
| virtual void | QueueDiskIO(std::function< void(void)> ) override call function in disk io thread |
| bool | LooksDecommissioned() const return true if we look like we are a decommissioned service node |
| bool | LooksFunded() const return true if we look like we are a registered, fully-staked service node (either active or decommissioned). |
| bool | LooksRegistered() const return true if we a registered service node; not that this only requires a partial stake, and does not imply that this service node is active or fully funded. |
| bool | ShouldTestOtherRouters() const return true if we look like we are allowed and able to test other routers |
| virtual llarp_time_t | Uptime() const override returns milliseconds since started |
| virtual bool | Sign(Signature & sig, const llarp_buffer_t & buf) const override |
| virtual service::Context & | hiddenServiceContext() override |
| virtual const service::Context & | hiddenServiceContext() const override |
| virtual void | SetDownHook(std::function< void(void)> hook) override |
| virtual bool | LooksAlive() const override |
| virtual const std::shared_ptr< RoutePoker > & | routePoker() const override |
| virtual void | TriggerPump() override Trigger a pump of low level links. Idempotent. |
| void | PumpLL() |
| virtual std::string | status_line() override |
| virtual IOutboundMessageHandler & | outboundMessageHandler() override |
| virtual IOutboundSessionMaker & | outboundSessionMaker() override |
| virtual ILinkManager & | linkManager() override |
| virtual I_RCLookupHandler & | rcLookupHandler() override |
| virtual int | OutboundUDPSocket() const override |
| virtual void | GossipRCIfNeeded(const RouterContact rc) override gossip an rc if required |
| Router(EventLoop_ptr loop, std::shared_ptr< vpn::Platform > vpnPlatform) | |
| ~Router() override | |
| virtual bool | HandleRecvLinkMessageBuffer(ILinkSession * from, const llarp_buffer_t & msg) override |
| void | InitInboundLinks() |
| void | InitOutboundLinks() |
| virtual bool | GetRandomGoodRouter(RouterID & r) override |
| bool | InitServiceNode() initialize us as a service node return true on success |
| virtual bool | IsRunning() const override |
| virtual bool | IsServiceNode() const override return true if we are running in service node mode |
| virtual std::optional< std::string > | OxendErrorState() const override Called to determine if we're in a bad state (which gets reported to our oxend) that should prevent uptime proofs from going out to the network (so that the error state gets noticed). |
| void | Close() |
| virtual bool | Configure(std::shared_ptr< Config > conf, bool isSNode, std::shared_ptr< NodeDB > nodedb) override |
| virtual void | Freeze() override indicate we are about to sleep for a while |
| virtual void | Thaw() override thaw from long sleep or network changed event |
| virtual bool | Run() override |
| virtual void | Stop() override stop running the router logic gracefully |
| virtual void | Die() override non graceful stop router |
| void | StopLinks() close all sessions and shutdown all links |
| virtual void | PersistSessionUntil(const RouterID & remote, llarp_time_t until) override |
| bool | EnsureIdentity() |
| bool | EnsureEncryptionKey() |
| virtual bool | SessionToRouterAllowed(const RouterID & router) const override |
| virtual bool | PathToRouterAllowed(const RouterID & router) const override |
| void | HandleSaveRC() const |
| bool | SaveRC() |
| virtual bool | HasClientExit() const override return true if we are a client with an exit configured |
| virtual const byte_t * | pubkey() const override |
| void | try_connect(fs::path rcfile) |
| virtual bool | TryConnectAsync(RouterContact rc, uint16_t tries) override |
| virtual bool | SendToOrQueue(const RouterID & remote, const ILinkMessage & msg, SendStatusHandler handler) override send to remote router or queue for sending returns false on overflow returns true on successful queue NOT threadsafe MUST be called in the logic thread |
| virtual void | ForEachPeer(std::function< void(const ILinkSession *, bool)> visit, bool randomize =false) const override visit each connected link session |
| void | ForEachPeer(std::function< void(ILinkSession *)> visit) |
| virtual bool | IsBootstrapNode(RouterID ) const override |
| virtual bool | CheckRenegotiateValid(RouterContact newRc, RouterContact oldRC) override check if newRc matches oldRC and update local rc for this remote contact if valid returns true on valid and updated returns false otherwise |
| virtual void | SessionClosed(RouterID remote) override called by link when a remote session has no more sessions open |
| void | ConnectionTimedOut(ILinkSession * session) called by link when an unestablished connection times out |
| bool | ConnectionEstablished(ILinkSession * session, bool inbound) called by link when session is fully established |
| void | Tick() call internal router ticker |
| virtual llarp_time_t | Now() const override returns system clock milliseconds since epoch |
| virtual bool | ParseRoutingMessageBuffer(const llarp_buffer_t & buf, routing::IMessageHandler * h, const PathID_t & rxid) override parse a routing message in a buffer and handle it with a handler if successful parsing return true on parse and handle success otherwise return false |
| virtual void | ConnectToRandomRouters(int N) override connect to N random routers |
| virtual size_t | NumberOfConnectedRouters() const override count the number of unique service nodes connected via pubkey |
| virtual size_t | NumberOfConnectedClients() const override count the number of unique clients connected by pubkey |
| virtual bool | GetRandomConnectedRouter(RouterContact & result) const override |
| virtual void | HandleDHTLookupForExplore(RouterID remote, const std::vector< RouterContact > & results) override |
| virtual void | LookupRouter(RouterID remote, RouterLookupHandler resultHandler) override lookup router by pubkey if we are a service node this is done direct otherwise it's done via path |
| virtual bool | HasSessionTo(const RouterID & router) const override return true if we have at least 1 session to this router in either direction |
| virtual std::string | ShortName() const override |
| virtual uint32_t | NextPathBuildNumber() override |
| void | AfterStopLinks() |
| void | AfterStopIssued() |
| virtual std::shared_ptr< Config > | GetConfig() const override |
Protected Functions
| Name | |
|---|---|
| virtual void | HandleRouterEvent(tooling::RouterEventPtr event) const override Virtual function to handle RouterEvent. |
| virtual bool | disableGossipingRC_TestingOnly() |
Public Attributes
Additional inherited members
Public Functions inherited from llarp::AbstractRouter
| Name | |
|---|---|
| virtual | ~AbstractRouter() =default |
| template <class EventType ,class... Params> void |
NotifyRouterEvent(Params &&... args) const Templated convenience function to generate a RouterHive event and delegate to non-templated (and overridable) function for handling. |
Public Types Documentation
using Clock_t
using llarp::Router::Clock_t = std::chrono::steady_clock;
using TimePoint_t
using llarp::Router::TimePoint_t = Clock_t::time_point;
Public Functions Documentation
function pathBuildLimiter
inline virtual path::BuildLimiter & pathBuildLimiter() override
Reimplements: llarp::AbstractRouter::pathBuildLimiter
function Net
virtual const llarp::net::Platform & Net() const override
Reimplements: llarp::AbstractRouter::Net
function dht
inline virtual llarp_dht_context * dht() const override
Reimplements: llarp::AbstractRouter::dht
function OurPublicIP
virtual std::optional< std::variant< nuint32_t, nuint128_t > > OurPublicIP() const override
get what our real public ip is if we can know it
Reimplements: llarp::AbstractRouter::OurPublicIP
function nodedb
inline virtual const std::shared_ptr< NodeDB > & nodedb() const override
Reimplements: llarp::AbstractRouter::nodedb
function pathContext
inline virtual const path::PathContext & pathContext() const override
Reimplements: llarp::AbstractRouter::pathContext
function pathContext
inline virtual path::PathContext & pathContext() override
Reimplements: llarp::AbstractRouter::pathContext
function rc
inline virtual const RouterContact & rc() const override
Reimplements: llarp::AbstractRouter::rc
function TearDown
virtual void TearDown() override
Issue immediate teardown of all resources.
Reimplements: llarp::AbstractRouter::TearDown
function ModifyOurRC
virtual void ModifyOurRC(
std::function< std::optional< RouterContact >(RouterContact)> modify
) override
modify our rc modify returns nullopt if unmodified otherwise it returns the new rc to be sigend and published out
Reimplements: llarp::AbstractRouter::ModifyOurRC
function SetRouterWhitelist
virtual void SetRouterWhitelist(
const std::vector< RouterID > & whitelist,
const std::vector< RouterID > & greylist,
const std::vector< RouterID > & unfundedlist
) override
set router's service node whitelist
Reimplements: llarp::AbstractRouter::SetRouterWhitelist
function GetRouterWhitelist
inline virtual std::unordered_set< RouterID > GetRouterWhitelist() const override
Reimplements: llarp::AbstractRouter::GetRouterWhitelist
function exitContext
inline virtual exit::Context & exitContext() override
Reimplements: llarp::AbstractRouter::exitContext
function keyManager
inline virtual const std::shared_ptr< KeyManager > & keyManager() const override
Reimplements: llarp::AbstractRouter::keyManager
function identity
inline virtual const SecretKey & identity() const override
Reimplements: llarp::AbstractRouter::identity
function encryption
inline virtual const SecretKey & encryption() const override
Reimplements: llarp::AbstractRouter::encryption
function routerProfiling
inline virtual Profiling & routerProfiling() override
Reimplements: llarp::AbstractRouter::routerProfiling
function loop
inline virtual const EventLoop_ptr & loop() const override
Reimplements: llarp::AbstractRouter::loop
function GetVPNPlatform
inline virtual vpn::Platform * GetVPNPlatform() const override
Reimplements: llarp::AbstractRouter::GetVPNPlatform
function QueueWork
virtual void QueueWork(
std::function< void(void)>
) override
call function in crypto worker
Reimplements: llarp::AbstractRouter::QueueWork
function QueueDiskIO
virtual void QueueDiskIO(
std::function< void(void)>
) override
call function in disk io thread
Reimplements: llarp::AbstractRouter::QueueDiskIO
function LooksDecommissioned
bool LooksDecommissioned() const
return true if we look like we are a decommissioned service node
function LooksFunded
bool LooksFunded() const
return true if we look like we are a registered, fully-staked service node (either active or decommissioned).
This condition determines when we are allowed to (and attempt to) connect to other peers when running as a service node.
function LooksRegistered
bool LooksRegistered() const
return true if we a registered service node; not that this only requires a partial stake, and does not imply that this service node is active or fully funded.
function ShouldTestOtherRouters
bool ShouldTestOtherRouters() const
return true if we look like we are allowed and able to test other routers
function Uptime
virtual llarp_time_t Uptime() const override
returns milliseconds since started
Reimplements: llarp::AbstractRouter::Uptime
function Sign
virtual bool Sign(
Signature & sig,
const llarp_buffer_t & buf
) const override
Reimplements: llarp::AbstractRouter::Sign
function hiddenServiceContext
inline virtual service::Context & hiddenServiceContext() override
Reimplements: llarp::AbstractRouter::hiddenServiceContext
function hiddenServiceContext
inline virtual const service::Context & hiddenServiceContext() const override
Reimplements: llarp::AbstractRouter::hiddenServiceContext
function SetDownHook
inline virtual void SetDownHook(
std::function< void(void)> hook
) override
Reimplements: llarp::AbstractRouter::SetDownHook
function LooksAlive
inline virtual bool LooksAlive() const override
Reimplements: llarp::AbstractRouter::LooksAlive
function routePoker
inline virtual const std::shared_ptr< RoutePoker > & routePoker() const override
Reimplements: llarp::AbstractRouter::routePoker
function TriggerPump
virtual void TriggerPump() override
Trigger a pump of low level links. Idempotent.
Reimplements: llarp::AbstractRouter::TriggerPump
function PumpLL
void PumpLL()
function status_line
virtual std::string status_line() override
Reimplements: llarp::AbstractRouter::status_line
function outboundMessageHandler
inline virtual IOutboundMessageHandler & outboundMessageHandler() override
Reimplements: llarp::AbstractRouter::outboundMessageHandler
function outboundSessionMaker
inline virtual IOutboundSessionMaker & outboundSessionMaker() override
Reimplements: llarp::AbstractRouter::outboundSessionMaker
function linkManager
inline virtual ILinkManager & linkManager() override
Reimplements: llarp::AbstractRouter::linkManager
function rcLookupHandler
inline virtual I_RCLookupHandler & rcLookupHandler() override
Reimplements: llarp::AbstractRouter::rcLookupHandler
function OutboundUDPSocket
inline virtual int OutboundUDPSocket() const override
Reimplements: llarp::AbstractRouter::OutboundUDPSocket
function GossipRCIfNeeded
virtual void GossipRCIfNeeded(
const RouterContact rc
) override
gossip an rc if required
Reimplements: llarp::AbstractRouter::GossipRCIfNeeded
function Router
explicit Router(
EventLoop_ptr loop,
std::shared_ptr< vpn::Platform > vpnPlatform
)
function ~Router
~Router() override
function HandleRecvLinkMessageBuffer
virtual bool HandleRecvLinkMessageBuffer(
ILinkSession * from,
const llarp_buffer_t & msg
) override
Reimplements: llarp::AbstractRouter::HandleRecvLinkMessageBuffer
function InitInboundLinks
void InitInboundLinks()
function InitOutboundLinks
void InitOutboundLinks()
function GetRandomGoodRouter
virtual bool GetRandomGoodRouter(
RouterID & r
) override
Reimplements: llarp::AbstractRouter::GetRandomGoodRouter
function InitServiceNode
bool InitServiceNode()
initialize us as a service node return true on success
function IsRunning
virtual bool IsRunning() const override
Reimplements: llarp::AbstractRouter::IsRunning
function IsServiceNode
virtual bool IsServiceNode() const override
return true if we are running in service node mode
Reimplements: llarp::AbstractRouter::IsServiceNode
function OxendErrorState
virtual std::optional< std::string > OxendErrorState() const override
Called to determine if we're in a bad state (which gets reported to our oxend) that should prevent uptime proofs from going out to the network (so that the error state gets noticed).
Reimplements: llarp::AbstractRouter::OxendErrorState
Currently this means we require a decent number of peers whenever we are fully staked (active or decommed).
function Close
void Close()
function Configure
virtual bool Configure(
std::shared_ptr< Config > conf,
bool isSNode,
std::shared_ptr< NodeDB > nodedb
) override
Reimplements: llarp::AbstractRouter::Configure
function Freeze
virtual void Freeze() override
indicate we are about to sleep for a while
Reimplements: llarp::AbstractRouter::Freeze
function Thaw
virtual void Thaw() override
thaw from long sleep or network changed event
Reimplements: llarp::AbstractRouter::Thaw
function Run
virtual bool Run() override
Reimplements: llarp::AbstractRouter::Run
function Stop
virtual void Stop() override
stop running the router logic gracefully
Reimplements: llarp::AbstractRouter::Stop
function Die
virtual void Die() override
non graceful stop router
Reimplements: llarp::AbstractRouter::Die
function StopLinks
void StopLinks()
close all sessions and shutdown all links
function PersistSessionUntil
virtual void PersistSessionUntil(
const RouterID & remote,
llarp_time_t until
) override
Reimplements: llarp::AbstractRouter::PersistSessionUntil
function EnsureIdentity
bool EnsureIdentity()
function EnsureEncryptionKey
bool EnsureEncryptionKey()
function SessionToRouterAllowed
virtual bool SessionToRouterAllowed(
const RouterID & router
) const override
Reimplements: llarp::AbstractRouter::SessionToRouterAllowed
function PathToRouterAllowed
virtual bool PathToRouterAllowed(
const RouterID & router
) const override
Reimplements: llarp::AbstractRouter::PathToRouterAllowed
function HandleSaveRC
void HandleSaveRC() const
function SaveRC
bool SaveRC()
function HasClientExit
virtual bool HasClientExit() const override
return true if we are a client with an exit configured
Reimplements: llarp::AbstractRouter::HasClientExit
function pubkey
inline virtual const byte_t * pubkey() const override
Reimplements: llarp::AbstractRouter::pubkey
function try_connect
void try_connect(
fs::path rcfile
)
function TryConnectAsync
virtual bool TryConnectAsync(
RouterContact rc,
uint16_t tries
) override
Reimplements: llarp::AbstractRouter::TryConnectAsync
function SendToOrQueue
virtual bool SendToOrQueue(
const RouterID & remote,
const ILinkMessage & msg,
SendStatusHandler handler
) override
send to remote router or queue for sending returns false on overflow returns true on successful queue NOT threadsafe MUST be called in the logic thread
Reimplements: llarp::AbstractRouter::SendToOrQueue
function ForEachPeer
virtual void ForEachPeer(
std::function< void(const ILinkSession *, bool)> visit,
bool randomize =false
) const override
visit each connected link session
Reimplements: llarp::AbstractRouter::ForEachPeer
function ForEachPeer
void ForEachPeer(
std::function< void(ILinkSession *)> visit
)
function IsBootstrapNode
virtual bool IsBootstrapNode(
RouterID
) const override
Reimplements: llarp::AbstractRouter::IsBootstrapNode
function CheckRenegotiateValid
virtual bool CheckRenegotiateValid(
RouterContact newRc,
RouterContact oldRC
) override
check if newRc matches oldRC and update local rc for this remote contact if valid returns true on valid and updated returns false otherwise
Reimplements: llarp::AbstractRouter::CheckRenegotiateValid
function SessionClosed
virtual void SessionClosed(
RouterID remote
) override
called by link when a remote session has no more sessions open
Reimplements: llarp::AbstractRouter::SessionClosed
function ConnectionTimedOut
void ConnectionTimedOut(
ILinkSession * session
)
called by link when an unestablished connection times out
function ConnectionEstablished
bool ConnectionEstablished(
ILinkSession * session,
bool inbound
)
called by link when session is fully established
function Tick
void Tick()
call internal router ticker
function Now
inline virtual llarp_time_t Now() const override
returns system clock milliseconds since epoch
Reimplements: llarp::AbstractRouter::Now
function ParseRoutingMessageBuffer
virtual bool ParseRoutingMessageBuffer(
const llarp_buffer_t & buf,
routing::IMessageHandler * h,
const PathID_t & rxid
) override
parse a routing message in a buffer and handle it with a handler if successful parsing return true on parse and handle success otherwise return false
Reimplements: llarp::AbstractRouter::ParseRoutingMessageBuffer
function ConnectToRandomRouters
virtual void ConnectToRandomRouters(
int N
) override
connect to N random routers
Reimplements: llarp::AbstractRouter::ConnectToRandomRouters
function NumberOfConnectedRouters
virtual size_t NumberOfConnectedRouters() const override
count the number of unique service nodes connected via pubkey
Reimplements: llarp::AbstractRouter::NumberOfConnectedRouters
function NumberOfConnectedClients
virtual size_t NumberOfConnectedClients() const override
count the number of unique clients connected by pubkey
Reimplements: llarp::AbstractRouter::NumberOfConnectedClients
function GetRandomConnectedRouter
virtual bool GetRandomConnectedRouter(
RouterContact & result
) const override
Reimplements: llarp::AbstractRouter::GetRandomConnectedRouter
function HandleDHTLookupForExplore
virtual void HandleDHTLookupForExplore(
RouterID remote,
const std::vector< RouterContact > & results
) override
Reimplements: llarp::AbstractRouter::HandleDHTLookupForExplore
function LookupRouter
virtual void LookupRouter(
RouterID remote,
RouterLookupHandler resultHandler
) override
lookup router by pubkey if we are a service node this is done direct otherwise it's done via path
Reimplements: llarp::AbstractRouter::LookupRouter
function HasSessionTo
virtual bool HasSessionTo(
const RouterID & router
) const override
return true if we have at least 1 session to this router in either direction
Reimplements: llarp::AbstractRouter::HasSessionTo
function ShortName
virtual std::string ShortName() const override
Reimplements: llarp::AbstractRouter::ShortName
function NextPathBuildNumber
virtual uint32_t NextPathBuildNumber() override
Reimplements: llarp::AbstractRouter::NextPathBuildNumber
function AfterStopLinks
void AfterStopLinks()
function AfterStopIssued
void AfterStopIssued()
function GetConfig
inline virtual std::shared_ptr< Config > GetConfig() const override
Reimplements: llarp::AbstractRouter::GetConfig
Protected Functions Documentation
function HandleRouterEvent
virtual void HandleRouterEvent(
tooling::RouterEventPtr event
) const override
Virtual function to handle RouterEvent.
Reimplements: llarp::AbstractRouter::HandleRouterEvent
Reimplemented by: tooling::HiveRouter::HandleRouterEvent
HiveRouter overrides this in order to inject the event. The default implementation in Router simply logs it.
function disableGossipingRC_TestingOnly
inline virtual bool disableGossipingRC_TestingOnly()
Reimplemented by: tooling::HiveRouter::disableGossipingRC_TestingOnly
Public Attributes Documentation
variable _lastPump
llarp_time_t _lastPump = 0s;
variable ready
bool ready;
variable transport_keyfile
fs::path transport_keyfile;
variable ident_keyfile
fs::path ident_keyfile;
variable encryption_keyfile
fs::path encryption_keyfile;
variable our_rc_file
fs::path our_rc_file;
variable m_UseFileLogging
bool m_UseFileLogging = false;
variable _rc
RouterContact _rc;
variable whitelistRouters
bool whitelistRouters = false;
should we obey the service node whitelist?
variable m_PathBuildLimiter
path::BuildLimiter m_PathBuildLimiter;
variable m_Pump
std::shared_ptr< EventLoopWakeup > m_Pump;
variable m_CurrentEvLoopWork
std::unique_ptr< EventLoopWork > m_CurrentEvLoopWork;
variable m_LoopWorkPumper
std::shared_ptr< EventLoopWakeup > m_LoopWorkPumper;
variable _ourAddress
std::optional< SockAddr > _ourAddress;
variable _loop
EventLoop_ptr _loop;
variable _vpnPlatform
std::shared_ptr< vpn::Platform > _vpnPlatform;
variable paths
path::PathContext paths;
variable _exitContext
exit::Context _exitContext;
variable _identity
SecretKey _identity;
variable _encryption
SecretKey _encryption;
variable _dht
llarp_dht_context * _dht = nullptr;
variable _nodedb
std::shared_ptr< NodeDB > _nodedb;
variable _startedAt
llarp_time_t _startedAt;
variable rcRegenInterval
llarp_time_t rcRegenInterval = 1h;
how often do we resign our RC? milliseconds.
variable sendPadding
bool sendPadding = false;
variable inbound_link_msg_parser
LinkMessageParser inbound_link_msg_parser;
variable inbound_routing_msg_parser
routing::InboundMessageParser inbound_routing_msg_parser;
variable _hiddenServiceContext
service::Context _hiddenServiceContext;
variable _lastTick
llarp_time_t _lastTick = 0s;
variable _onDown
std::function< void(void)> _onDown;
variable bootstrapRCList
BootstrapList bootstrapRCList;
bootstrap RCs
variable m_RoutePoker
std::shared_ptr< RoutePoker > m_RoutePoker;
variable _randomStartDelay
const llarp_time_t _randomStartDelay;
variable _routerProfiling
Profiling _routerProfiling;
variable _profilesFile
fs::path _profilesFile;
variable _outboundMessageHandler
OutboundMessageHandler _outboundMessageHandler;
variable _outboundSessionMaker
OutboundSessionMaker _outboundSessionMaker;
variable _linkManager
LinkManager _linkManager;
variable _rcLookupHandler
RCLookupHandler _rcLookupHandler;
variable _rcGossiper
RCGossiper _rcGossiper;
variable m_NextExploreAt
TimePoint_t m_NextExploreAt;
variable m_Config
std::shared_ptr< Config > m_Config;
variable m_OutboundUDPSocket
int m_OutboundUDPSocket = -1;
Updated on 2026-01-10 at 22:49:45 +0000