71 size_t max_addresses_per_response = 32;
72 size_t request_max = 32;
73 bool request_on_connect =
true;
74 bool public_only =
false;
75 std::chrono::milliseconds dial_cooldown{std::chrono::minutes(5)};
76 size_t max_recent_dials = 4096;
84 size_t peer_target = 0;
88 bool punch_on_dial_failure =
true;
91 std::chrono::milliseconds punch_window{std::chrono::seconds(30)};
93 size_t max_pending_dials = 512;
105 void on_connected(
const Peer& peer);
107 void handle_request(
const Peer& requester, uint16_t max);
108 void handle_response(
ByteView body);
110 void on_dial_failed(
const Address& address);
112 const Address* pick_shareable(
const std::vector<Address>& addrs)
const;
113 bool should_dial(
const Address& addr);
123 std::atomic<HolePunchService*> punch_{
nullptr};
124 std::atomic<bool> running_{
false};
128 std::chrono::steady_clock::time_point started;
132 std::unordered_map<Address, std::chrono::steady_clock::time_point> recent_dials_;
133 std::unordered_map<Address, PendingDial> pending_dials_;