refactor: remove tr_removeElementFromArray() (#3731)
This commit is contained in:
parent
0360cfbf72
commit
cee339e10d
|
@ -13,6 +13,7 @@
|
|||
#include <map>
|
||||
#include <memory> // std::unique_ptr
|
||||
#include <optional>
|
||||
#include <queue>
|
||||
#include <utility>
|
||||
#include <vector>
|
||||
|
||||
|
@ -832,8 +833,7 @@ public:
|
|||
std::vector<tr_pex> pex;
|
||||
std::vector<tr_pex> pex6;
|
||||
|
||||
std::array<int, MetadataReqQ> peerAskedForMetadata = {};
|
||||
int peerAskedForMetadataCount = 0;
|
||||
std::queue<int> peerAskedForMetadata;
|
||||
|
||||
time_t clientSentAnythingAt = 0;
|
||||
|
||||
|
@ -1087,18 +1087,16 @@ static void sendInterest(tr_peerMsgsImpl* msgs, bool b)
|
|||
msgs->dbgOutMessageLen();
|
||||
}
|
||||
|
||||
static bool popNextMetadataRequest(tr_peerMsgsImpl* msgs, int* piece)
|
||||
static bool popNextMetadataRequest(tr_peerMsgsImpl* msgs, int* setme)
|
||||
{
|
||||
if (msgs->peerAskedForMetadataCount == 0)
|
||||
if (std::empty(msgs->peerAskedForMetadata))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
*piece = msgs->peerAskedForMetadata[0];
|
||||
|
||||
tr_removeElementFromArray(std::data(msgs->peerAskedForMetadata), 0, sizeof(int), msgs->peerAskedForMetadataCount);
|
||||
--msgs->peerAskedForMetadataCount;
|
||||
|
||||
auto& reqs = msgs->peerAskedForMetadata;
|
||||
*setme = reqs.front();
|
||||
reqs.pop();
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -1376,9 +1374,9 @@ static void parseUtMetadata(tr_peerMsgsImpl* msgs, uint32_t msglen, struct evbuf
|
|||
if (msg_type == MetadataMsgType::Request)
|
||||
{
|
||||
if (piece >= 0 && msgs->torrent->hasMetainfo() && msgs->torrent->isPublic() &&
|
||||
msgs->peerAskedForMetadataCount < MetadataReqQ)
|
||||
std::size(msgs->peerAskedForMetadata) < MetadataReqQ)
|
||||
{
|
||||
msgs->peerAskedForMetadata[msgs->peerAskedForMetadataCount++] = piece;
|
||||
msgs->peerAskedForMetadata.push(piece);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
@ -306,20 +306,6 @@ double tr_getRatio(uint64_t numerator, uint64_t denominator)
|
|||
****
|
||||
***/
|
||||
|
||||
void tr_removeElementFromArray(void* array, size_t index_to_remove, size_t sizeof_element, size_t nmemb)
|
||||
{
|
||||
auto* a = static_cast<char*>(array);
|
||||
|
||||
memmove(
|
||||
a + sizeof_element * index_to_remove,
|
||||
a + sizeof_element * (index_to_remove + 1),
|
||||
sizeof_element * (--nmemb - index_to_remove));
|
||||
}
|
||||
|
||||
/***
|
||||
****
|
||||
***/
|
||||
|
||||
namespace
|
||||
{
|
||||
namespace tr_strvUtf8Clean_impl
|
||||
|
|
|
@ -261,9 +261,6 @@ size_t tr_strvToBuf(std::string_view src, char* buf, size_t buflen);
|
|||
*/
|
||||
bool tr_moveFile(std::string_view oldpath, std::string_view newpath, struct tr_error** error = nullptr);
|
||||
|
||||
/** @brief convenience function to remove an item from an array */
|
||||
void tr_removeElementFromArray(void* array, size_t index_to_remove, size_t sizeof_element, size_t nmemb);
|
||||
|
||||
/***
|
||||
****
|
||||
***/
|
||||
|
|
|
@ -191,15 +191,20 @@ tr_variant* tr_variantListChild(tr_variant* list, size_t pos)
|
|||
|
||||
bool tr_variantListRemove(tr_variant* list, size_t pos)
|
||||
{
|
||||
if (tr_variantIsList(list) && pos < list->val.l.count)
|
||||
if (!tr_variantIsList(list) && pos < list->val.l.count)
|
||||
{
|
||||
tr_variantClear(&list->val.l.vals[pos]);
|
||||
tr_removeElementFromArray(list->val.l.vals, pos, sizeof(tr_variant), list->val.l.count);
|
||||
--list->val.l.count;
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
return false;
|
||||
auto& vals = list->val.l.vals;
|
||||
auto& count = list->val.l.count;
|
||||
|
||||
tr_variantClear(&vals[pos]);
|
||||
std::move(vals + pos + 1, vals + count, vals + pos);
|
||||
--count;
|
||||
vals[count] = {};
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool tr_variantGetInt(tr_variant const* v, int64_t* setme)
|
||||
|
|
|
@ -203,36 +203,6 @@ TEST_F(UtilsTest, trStrlower)
|
|||
EXPECT_EQ("hello"sv, tr_strlower("hello"sv));
|
||||
}
|
||||
|
||||
TEST_F(UtilsTest, array)
|
||||
{
|
||||
auto array = std::array<size_t, 10>{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
|
||||
auto n = array.size();
|
||||
|
||||
tr_removeElementFromArray(array.data(), 5U, sizeof(size_t), n);
|
||||
--n;
|
||||
|
||||
for (size_t i = 0; i < n; ++i)
|
||||
{
|
||||
EXPECT_EQ(array[i], i < 5 ? i : i + 1);
|
||||
}
|
||||
|
||||
tr_removeElementFromArray(array.data(), 0U, sizeof(size_t), n);
|
||||
--n;
|
||||
|
||||
for (size_t i = 0; i < n; ++i)
|
||||
{
|
||||
EXPECT_EQ(array[i], i < 4 ? i + 1 : i + 2);
|
||||
}
|
||||
|
||||
tr_removeElementFromArray(array.data(), n - 1, sizeof(size_t), n);
|
||||
--n;
|
||||
|
||||
for (size_t i = 0; i < n; ++i)
|
||||
{
|
||||
EXPECT_EQ(array[i], i < 4 ? i + 1 : i + 2);
|
||||
}
|
||||
}
|
||||
|
||||
TEST_F(UtilsTest, truncd)
|
||||
{
|
||||
EXPECT_EQ("100.00%"sv, fmt::format("{:.2f}%", 99.999));
|
||||
|
|
Loading…
Reference in New Issue