From 8f5768f85b1d761c44bb6cf7e2b7d6d7155112a6 Mon Sep 17 00:00:00 2001 From: orignal Date: Tue, 9 Aug 2022 19:40:07 -0400 Subject: [PATCH] memory pool for leases --- libi2pd/LeaseSet.cpp | 4 ++-- libi2pd/NetDb.cpp | 1 + libi2pd/NetDb.hpp | 2 ++ 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/libi2pd/LeaseSet.cpp b/libi2pd/LeaseSet.cpp index 60c9ea5a..387527e3 100644 --- a/libi2pd/LeaseSet.cpp +++ b/libi2pd/LeaseSet.cpp @@ -1,5 +1,5 @@ /* -* Copyright (c) 2013-2021, The PurpleI2P Project +* Copyright (c) 2013-2022, The PurpleI2P Project * * This file is part of Purple i2pd project and licensed under BSD3 * @@ -172,7 +172,7 @@ namespace data m_ExpirationTime = lease.endDate; if (m_StoreLeases) { - auto ret = m_Leases.insert (std::make_shared(lease)); + auto ret = m_Leases.insert (i2p::data::netdb.NewLease (lease)); if (!ret.second) (*ret.first)->endDate = lease.endDate; // update existing (*ret.first)->isUpdated = true; } diff --git a/libi2pd/NetDb.cpp b/libi2pd/NetDb.cpp index 8bbabff4..7f31fc7d 100644 --- a/libi2pd/NetDb.cpp +++ b/libi2pd/NetDb.cpp @@ -1447,6 +1447,7 @@ namespace data else ++it; } + m_LeasesPool.CleanUpMt (); } void NetDb::PopulateRouterInfoBuffer (std::shared_ptr r) diff --git a/libi2pd/NetDb.hpp b/libi2pd/NetDb.hpp index ebd6acbe..b14b84e7 100644 --- a/libi2pd/NetDb.hpp +++ b/libi2pd/NetDb.hpp @@ -126,6 +126,7 @@ namespace data void ClearRouterInfos () { m_RouterInfos.clear (); }; std::shared_ptr NewRouterInfoBuffer () { return m_RouterInfoBuffersPool.AcquireSharedMt (); }; void PopulateRouterInfoBuffer (std::shared_ptr r); + std::shared_ptr NewLease (const Lease& lease) { return m_LeasesPool.AcquireSharedMt (lease); }; uint32_t GetPublishReplyToken () const { return m_PublishReplyToken; }; @@ -182,6 +183,7 @@ namespace data uint32_t m_PublishReplyToken = 0; i2p::util::MemoryPoolMt m_RouterInfoBuffersPool; + i2p::util::MemoryPoolMt m_LeasesPool; }; extern NetDb netdb;