1
1
Fork 0
mirror of https://github.com/oxen-io/lokinet synced 2023-12-14 06:53:00 +01:00

use a std::map instead of a std::unordered_map for holding message buffers by their sequentially increasing message id.

when retransmissions happen, they will be executed in a deterministic order by their delivery id.
this reduces the jitter from delayed message delivery on link layer as with an unordered map the order of iteration is "random",
so when we iterate all messages for retransmission we do it lowest id first (the messages queued first).
This commit is contained in:
Jeff Becker 2021-02-14 07:57:47 -05:00
parent 74f707ee01
commit e6ac7e721d
No known key found for this signature in database
GPG key ID: F357B3B42F6F9B05

View file

@ -6,6 +6,7 @@
#include <iwp/message_buffer.hpp>
#include <net/ip_address.hpp>
#include <map>
#include <unordered_set>
#include <deque>
#include <queue>
@ -185,8 +186,8 @@ namespace llarp
void
ResetRates();
std::unordered_map<uint64_t, InboundMessage> m_RXMsgs;
std::unordered_map<uint64_t, OutboundMessage> m_TXMsgs;
std::map<uint64_t, InboundMessage> m_RXMsgs;
std::map<uint64_t, OutboundMessage> m_TXMsgs;
/// maps rxid to time recieved
std::unordered_map<uint64_t, llarp_time_t> m_ReplayFilter;