#pragma once #include #include "address.hpp" #include "pendingbuffer.hpp" #include "router_lookup_job.hpp" #include "session.hpp" #include "endpoint_types.hpp" #include #include #include #include "lns_tracker.hpp" #include #include #include #include #include namespace llarp { namespace service { struct EndpointState { std::set m_SnodeBlacklist; AbstractRouter* m_Router; std::string m_Keyfile; std::string m_Name; std::string m_NetNS; bool m_ExitEnabled = false; PendingTraffic m_PendingTraffic; Sessions m_RemoteSessions; Sessions m_DeadSessions; std::set m_InboundConvos; SNodeSessions m_SNodeSessions; std::unordered_multimap m_PendingServiceLookups; std::unordered_map m_LastServiceLookupTimes; std::unordered_map m_ServiceLookupFails; PendingRouters m_PendingRouters; llarp_time_t m_LastPublish = 0s; llarp_time_t m_LastPublishAttempt = 0s; /// our introset IntroSet m_IntroSet; /// pending remote service lookups by id PendingLookups m_PendingLookups; /// on initialize functions std::list> m_OnInit; /// conversations ConvoMap m_Sessions; OutboundSessions_t m_OutboundSessions; util::DecayingHashTable, std::hash> nameCache; LNSLookupTracker lnsTracker; bool Configure(const NetworkConfig& conf); util::StatusObject ExtractStatus(util::StatusObject& obj) const; }; } // namespace service } // namespace llarp