Browse Source

memory pool for leases

pull/1786/head
orignal 2 years ago
parent
commit
8f5768f85b
  1. 4
      libi2pd/LeaseSet.cpp
  2. 1
      libi2pd/NetDb.cpp
  3. 2
      libi2pd/NetDb.hpp

4
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 * This file is part of Purple i2pd project and licensed under BSD3
* *
@ -172,7 +172,7 @@ namespace data
m_ExpirationTime = lease.endDate; m_ExpirationTime = lease.endDate;
if (m_StoreLeases) if (m_StoreLeases)
{ {
auto ret = m_Leases.insert (std::make_shared<Lease>(lease)); auto ret = m_Leases.insert (i2p::data::netdb.NewLease (lease));
if (!ret.second) (*ret.first)->endDate = lease.endDate; // update existing if (!ret.second) (*ret.first)->endDate = lease.endDate; // update existing
(*ret.first)->isUpdated = true; (*ret.first)->isUpdated = true;
} }

1
libi2pd/NetDb.cpp

@ -1447,6 +1447,7 @@ namespace data
else else
++it; ++it;
} }
m_LeasesPool.CleanUpMt ();
} }
void NetDb::PopulateRouterInfoBuffer (std::shared_ptr<RouterInfo> r) void NetDb::PopulateRouterInfoBuffer (std::shared_ptr<RouterInfo> r)

2
libi2pd/NetDb.hpp

@ -126,6 +126,7 @@ namespace data
void ClearRouterInfos () { m_RouterInfos.clear (); }; void ClearRouterInfos () { m_RouterInfos.clear (); };
std::shared_ptr<RouterInfo::Buffer> NewRouterInfoBuffer () { return m_RouterInfoBuffersPool.AcquireSharedMt (); }; std::shared_ptr<RouterInfo::Buffer> NewRouterInfoBuffer () { return m_RouterInfoBuffersPool.AcquireSharedMt (); };
void PopulateRouterInfoBuffer (std::shared_ptr<RouterInfo> r); void PopulateRouterInfoBuffer (std::shared_ptr<RouterInfo> r);
std::shared_ptr<Lease> NewLease (const Lease& lease) { return m_LeasesPool.AcquireSharedMt (lease); };
uint32_t GetPublishReplyToken () const { return m_PublishReplyToken; }; uint32_t GetPublishReplyToken () const { return m_PublishReplyToken; };
@ -182,6 +183,7 @@ namespace data
uint32_t m_PublishReplyToken = 0; uint32_t m_PublishReplyToken = 0;
i2p::util::MemoryPoolMt<RouterInfo::Buffer> m_RouterInfoBuffersPool; i2p::util::MemoryPoolMt<RouterInfo::Buffer> m_RouterInfoBuffersPool;
i2p::util::MemoryPoolMt<Lease> m_LeasesPool;
}; };
extern NetDb netdb; extern NetDb netdb;

Loading…
Cancel
Save