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).
pull/1535/head
Jeff Becker 3 years ago
parent 74f707ee01
commit e6ac7e721d
No known key found for this signature in database
GPG Key ID: F357B3B42F6F9B05

@ -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;

Loading…
Cancel
Save