Browse Source

pools per ident hash

pull/51/head
orignal 11 years ago
parent
commit
a10edb4cc5
  1. 13
      Tunnel.cpp
  2. 2
      Tunnel.h
  3. 1
      TunnelPool.h

13
Tunnel.cpp

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

2
Tunnel.h

@ -146,7 +146,7 @@ namespace tunnel
std::map<uint32_t, InboundTunnel *> m_InboundTunnels; std::map<uint32_t, InboundTunnel *> m_InboundTunnels;
std::list<OutboundTunnel *> m_OutboundTunnels; std::list<OutboundTunnel *> m_OutboundTunnels;
std::map<uint32_t, TransitTunnel *> m_TransitTunnels; 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; i2p::util::Queue<I2NPMessage> m_Queue;
public: public:

1
TunnelPool.h

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

Loading…
Cancel
Save