mirror of
https://github.com/PurpleI2P/i2pd.git
synced 2025-04-28 11:47:48 +02:00
common rng for random shuffle
This commit is contained in:
parent
56619caa71
commit
dddbca6ffb
3 changed files with 10 additions and 7 deletions
|
@ -7,7 +7,6 @@
|
|||
*/
|
||||
|
||||
#include <algorithm>
|
||||
#include <random>
|
||||
#include "I2PEndian.h"
|
||||
#include "Crypto.h"
|
||||
#include "Tunnel.h"
|
||||
|
@ -45,7 +44,7 @@ namespace tunnel
|
|||
m_NumInboundHops (numInboundHops), m_NumOutboundHops (numOutboundHops),
|
||||
m_NumInboundTunnels (numInboundTunnels), m_NumOutboundTunnels (numOutboundTunnels),
|
||||
m_InboundVariance (inboundVariance), m_OutboundVariance (outboundVariance),
|
||||
m_IsActive (true), m_CustomPeerSelector(nullptr)
|
||||
m_IsActive (true), m_CustomPeerSelector(nullptr), m_Rng(m_Rd())
|
||||
{
|
||||
if (m_NumInboundTunnels > TUNNEL_POOL_MAX_INBOUND_TUNNELS_QUANTITY)
|
||||
m_NumInboundTunnels = TUNNEL_POOL_MAX_INBOUND_TUNNELS_QUANTITY;
|
||||
|
@ -361,22 +360,20 @@ namespace tunnel
|
|||
|
||||
// new tests
|
||||
std::vector<std::pair<std::shared_ptr<OutboundTunnel>, std::shared_ptr<InboundTunnel> > > newTests;
|
||||
std::random_device rd;
|
||||
std::mt19937 rnd(rd());
|
||||
std::vector<std::shared_ptr<OutboundTunnel> > outboundTunnels;
|
||||
{
|
||||
std::unique_lock<std::mutex> l(m_OutboundTunnelsMutex);
|
||||
for (auto& it: m_OutboundTunnels)
|
||||
outboundTunnels.push_back (it);
|
||||
}
|
||||
std::shuffle (outboundTunnels.begin(), outboundTunnels.end(), rnd);
|
||||
std::shuffle (outboundTunnels.begin(), outboundTunnels.end(), m_Rng);
|
||||
std::vector<std::shared_ptr<InboundTunnel> > inboundTunnels;
|
||||
{
|
||||
std::unique_lock<std::mutex> l(m_InboundTunnelsMutex);
|
||||
for (auto& it: m_InboundTunnels)
|
||||
inboundTunnels.push_back (it);
|
||||
}
|
||||
std::shuffle (inboundTunnels.begin(), inboundTunnels.end(), rnd);
|
||||
std::shuffle (inboundTunnels.begin(), inboundTunnels.end(), m_Rng);
|
||||
auto it1 = outboundTunnels.begin ();
|
||||
auto it2 = inboundTunnels.begin ();
|
||||
while (it1 != outboundTunnels.end () && it2 != inboundTunnels.end ())
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue