pools per ident hash

This commit is contained in:
orignal 2014-04-01 15:08:53 -04:00
parent 81e06769dc
commit a10edb4cc5
3 changed files with 12 additions and 8 deletions

View File

@ -190,7 +190,7 @@ namespace tunnel
m_PendingTunnels.clear ();
for (auto& it: m_Pools)
delete it;
delete it.second;
m_Pools.clear ();
}
@ -258,14 +258,17 @@ namespace tunnel
TunnelPool * Tunnels::CreateTunnelPool (i2p::data::LocalDestination& localDestination)
{
auto pool = new TunnelPool (localDestination);
m_Pools.push_back (pool);
m_Pools[pool->GetIdentHash ()] = pool;
return pool;
}
void Tunnels::DeleteTunnelPool (TunnelPool * pool)
{
m_Pools.remove (pool);
delete pool;
if (pool)
{
m_Pools.erase (pool->GetIdentHash ());
delete pool;
}
}
void Tunnels::AddTransitTunnel (TransitTunnel * tunnel)
@ -485,8 +488,8 @@ namespace tunnel
{
for (auto& it: m_Pools)
{
it->CreateTunnels ();
it->TestTunnels ();
it.second->CreateTunnels ();
it.second->TestTunnels ();
}
}

View File

@ -146,7 +146,7 @@ namespace tunnel
std::map<uint32_t, InboundTunnel *> m_InboundTunnels;
std::list<OutboundTunnel *> m_OutboundTunnels;
std::map<uint32_t, TransitTunnel *> m_TransitTunnels;
std::list<TunnelPool *> m_Pools;
std::map<i2p::data::IdentHash, TunnelPool *> m_Pools;
i2p::util::Queue<I2NPMessage> m_Queue;
public:

View File

@ -35,7 +35,8 @@ namespace tunnel
void TunnelExpired (OutboundTunnel * expiredTunnel);
std::vector<InboundTunnel *> GetInboundTunnels (int num) const;
OutboundTunnel * GetNextOutboundTunnel ();
const i2p::data::IdentHash& GetIdentHash () { return m_LocalDestination.GetIdentHash (); };
void TestTunnels ();
void ProcessDeliveryStatus (I2NPMessage * msg);