You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
lokinet/llarp/service/endpoint_state.hpp

74 lines
1.7 KiB
C++

#pragma once
#include "address.hpp"
#include "endpoint_types.hpp"
#include "lns_tracker.hpp"
#include "pendingbuffer.hpp"
#include "router_lookup_job.hpp"
#include "session.hpp"
#include <llarp/router_id.hpp>
#include <llarp/util/compare_ptr.hpp>
#include <llarp/util/decaying_hashtable.hpp>
#include <llarp/util/status.hpp>
12 months ago
#include <oxenc/variant.h>
#include <memory>
#include <queue>
#include <set>
#include <unordered_map>
1 year ago
namespace llarp::service
{
1 year ago
struct EndpointState
{
1 year ago
std::set<RouterID> snode_blacklist;
1 year ago
Router* router;
std::string key_file;
std::string name;
std::string net_NS;
bool is_exit_enabled = false;
1 year ago
PendingTrafficMap pending_traffic;
1 year ago
ConnectionMap remote_sessions;
ConnectionMap dead_sessions;
1 year ago
std::set<ConvoTag> inbound_convotags;
1 year ago
SNodeConnectionMap snode_sessions;
1 year ago
std::unordered_multimap<Address, EnsurePathCallback> pending_service_lookups;
std::unordered_map<Address, llarp_time_t> last_service_lookup_time;
1 year ago
std::unordered_map<RouterID, uint32_t> service_lookup_fails;
1 year ago
PendingRoutersMap pending_routers;
1 year ago
llarp_time_t last_publish = 0s;
llarp_time_t last_publish_attempt = 0s;
/// our introset
IntroSet local_introset;
/// on initialize functions
std::list<std::function<bool(void)>> on_init_callbacks;
1 year ago
/// conversations
std::unordered_map<ConvoTag, Session> m_Sessions;
1 year ago
std::unordered_set<Address> m_OutboundSessions;
5 years ago
1 year ago
util::DecayingHashTable<std::string, std::variant<Address, RouterID>, std::hash<std::string>>
nameCache;
1 year ago
LNSLookupTracker lnsTracker;
1 year ago
bool
Configure(const NetworkConfig& conf);
1 year ago
util::StatusObject
ExtractStatus(util::StatusObject& obj) const;
};
} // namespace llarp::service