From 0f4e4a7944db692768b603b9908f55f5b6c606f6 Mon Sep 17 00:00:00 2001 From: orignal Date: Thu, 20 Nov 2014 16:20:02 -0500 Subject: [PATCH] return shared_ptr to RI --- NetDb.cpp | 22 +++++++++++----------- NetDb.h | 8 ++++---- Transports.cpp | 2 +- Tunnel.cpp | 4 ++-- TunnelPool.cpp | 6 +++--- 5 files changed, 21 insertions(+), 21 deletions(-) diff --git a/NetDb.cpp b/NetDb.cpp index 618c2ee4..c411096d 100644 --- a/NetDb.cpp +++ b/NetDb.cpp @@ -778,37 +778,37 @@ namespace data } } - const RouterInfo * NetDb::GetRandomRouter () const + std::shared_ptr NetDb::GetRandomRouter () const { return GetRandomRouter ( - [](const RouterInfo * router)->bool + [](std::shared_ptr router)->bool { return !router->IsHidden (); }); } - const RouterInfo * NetDb::GetRandomRouter (const RouterInfo * compatibleWith) const + std::shared_ptr NetDb::GetRandomRouter (const RouterInfo * compatibleWith) const { return GetRandomRouter ( - [compatibleWith](const RouterInfo * router)->bool + [compatibleWith](std::shared_ptr router)->bool { - return !router->IsHidden () && router != compatibleWith && + return !router->IsHidden () && router.get () != compatibleWith && router->IsCompatible (*compatibleWith); }); } - const RouterInfo * NetDb::GetHighBandwidthRandomRouter (const RouterInfo * compatibleWith) const + std::shared_ptr NetDb::GetHighBandwidthRandomRouter (const RouterInfo * compatibleWith) const { return GetRandomRouter ( - [compatibleWith](const RouterInfo * router)->bool + [compatibleWith](std::shared_ptr router)->bool { - return !router->IsHidden () && router != compatibleWith && + return !router->IsHidden () && router.get () != compatibleWith && router->IsCompatible (*compatibleWith) && (router->GetCaps () & RouterInfo::eHighBandwidth); }); } template - const RouterInfo * NetDb::GetRandomRouter (Filter filter) const + std::shared_ptr NetDb::GetRandomRouter (Filter filter) const { CryptoPP::RandomNumberGenerator& rnd = i2p::context.GetRandomNumberGenerator (); uint32_t ind = rnd.GenerateWord32 (0, m_RouterInfos.size () - 1); @@ -819,8 +819,8 @@ namespace data { if (i >= ind) { - if (!it.second->IsUnreachable () && filter (it.second.get ())) - return it.second.get (); + if (!it.second->IsUnreachable () && filter (it.second)) + return it.second; } else i++; diff --git a/NetDb.h b/NetDb.h index f776c519..a5bd2f04 100644 --- a/NetDb.h +++ b/NetDb.h @@ -75,9 +75,9 @@ namespace data void HandleDatabaseSearchReplyMsg (I2NPMessage * msg); void HandleDatabaseLookupMsg (I2NPMessage * msg); - const RouterInfo * GetRandomRouter () const; - const RouterInfo * GetRandomRouter (const RouterInfo * compatibleWith) const; - const RouterInfo * GetHighBandwidthRandomRouter (const RouterInfo * compatibleWith) const; + std::shared_ptr GetRandomRouter () const; + std::shared_ptr GetRandomRouter (const RouterInfo * compatibleWith) const; + std::shared_ptr GetHighBandwidthRandomRouter (const RouterInfo * compatibleWith) const; void SetUnreachable (const IdentHash& ident, bool unreachable); void PostI2NPMsg (I2NPMessage * msg); @@ -104,7 +104,7 @@ namespace data void DeleteRequestedDestination (RequestedDestination * dest); template - const RouterInfo * GetRandomRouter (Filter filter) const; + std::shared_ptr GetRandomRouter (Filter filter) const; private: diff --git a/Transports.cpp b/Transports.cpp index 8981125a..8b525596 100644 --- a/Transports.cpp +++ b/Transports.cpp @@ -360,7 +360,7 @@ namespace transport { auto router = i2p::data::netdb.GetRandomRouter (); if (router && router->IsSSU () && m_SSUServer) - m_SSUServer->GetSession (router, true); // peer test + m_SSUServer->GetSession (router.get (), true); // peer test } } diff --git a/Tunnel.cpp b/Tunnel.cpp index c16981ae..af26ab7f 100644 --- a/Tunnel.cpp +++ b/Tunnel.cpp @@ -468,7 +468,7 @@ namespace tunnel CreateTunnel ( new TunnelConfig (std::vector { - i2p::data::netdb.GetRandomRouter () + i2p::data::netdb.GetRandomRouter ().get () }, inboundTunnel->GetTunnelConfig ())); } @@ -521,7 +521,7 @@ namespace tunnel CreateTunnel ( new TunnelConfig (std::vector { - i2p::data::netdb.GetRandomRouter () + i2p::data::netdb.GetRandomRouter ().get () })); } } diff --git a/TunnelPool.cpp b/TunnelPool.cpp index f756ebd4..f2b741d0 100644 --- a/TunnelPool.cpp +++ b/TunnelPool.cpp @@ -237,10 +237,10 @@ namespace tunnel const i2p::data::RouterInfo * TunnelPool::SelectNextHop (const i2p::data::RouterInfo * prevHop) const { - auto hop = m_NumHops >= 3 ? i2p::data::netdb.GetHighBandwidthRandomRouter (prevHop) : - i2p::data::netdb.GetRandomRouter (prevHop); + auto hop = m_NumHops >= 3 ? i2p::data::netdb.GetHighBandwidthRandomRouter (prevHop).get () : + i2p::data::netdb.GetRandomRouter (prevHop).get (); if (!hop) - hop = i2p::data::netdb.GetRandomRouter (); + hop = i2p::data::netdb.GetRandomRouter ().get (); return hop; }