Add tcp reassembly

This commit is contained in:
luwenpeng
2024-03-21 19:27:41 +08:00
parent 36b9a8282a
commit 2ad811f68d
13 changed files with 714 additions and 62 deletions

View File

@@ -1,7 +1,3 @@
###############################################################################
# dablooms
###############################################################################
add_library(dablooms dablooms.cpp murmur.cpp)
target_include_directories(dablooms PUBLIC ${CMAKE_CURRENT_LIST_DIR})
target_link_libraries(dablooms)

View File

@@ -399,8 +399,7 @@ int itree_remove(itree_t *tree, interval_t *interval)
{
return 0;
}
// else if (interval_equal(it->interval, interval))
else if (it->interval->low >= interval->low && it->interval->high <= interval->high)
else if (interval_equal(it->interval, interval))
{
break;
}

View File

@@ -54,11 +54,9 @@ typedef void (*rel_f)(void *p);
/* Interval tree functions */
itree_t *itree_new(dup_f dup, rel_f rel);
void itree_delete(itree_t *tree);
// Find the first interval containing the specified interval
interval_t *itree_find(itree_t *tree, interval_t *interval);
ilist_t *itree_findall(itree_t *tree, interval_t *interval);
int itree_insert(itree_t *tree, interval_t *interval);
// Delete the first interval contained by the specified interval
int itree_remove(itree_t *tree, interval_t *interval);
size_t itree_size(itree_t *tree);

View File

@@ -113,7 +113,7 @@ TEST(INTERVAL_TREE, FIND)
#endif
#if 1
TEST(INTERVAL_TREE, DELETE1)
TEST(INTERVAL_TREE, DELETE)
{
itree_t *tree;
interval_t query;
@@ -149,60 +149,18 @@ TEST(INTERVAL_TREE, DELETE1)
EXPECT_TRUE(itree_remove(tree, &query) == 0);
EXPECT_TRUE(itree_size(tree) == 1);
// delete
query = {
.low = 5,
.high = 9,
};
EXPECT_TRUE(itree_remove(tree, &query) == 1);
EXPECT_TRUE(itree_size(tree) == 0);
itree_delete(tree);
}
#endif
#if 1
TEST(INTERVAL_TREE, DELETE2)
{
itree_t *tree;
interval_t query;
interval_t segment;
// new
tree = itree_new(my_dup, my_rel);
EXPECT_TRUE(tree != nullptr);
EXPECT_TRUE(itree_size(tree) == 0);
// insert
segment = {
.low = 5,
.high = 9,
.data = (void *)"Hello",
};
EXPECT_TRUE(itree_insert(tree, &segment) == 1);
EXPECT_TRUE(itree_size(tree) == 1);
// insert
segment = {
.low = 15,
.high = 19,
.data = (void *)"World",
};
EXPECT_TRUE(itree_insert(tree, &segment) == 1);
EXPECT_TRUE(itree_size(tree) == 2);
// delete
query = {
.low = 1,
.high = 20,
};
EXPECT_TRUE(itree_remove(tree, &query) == 1);
EXPECT_TRUE(itree_remove(tree, &query) == 0);
EXPECT_TRUE(itree_size(tree) == 1);
// delete
query = {
.low = 1,
.high = 20,
.low = 5,
.high = 9,
};
EXPECT_TRUE(itree_remove(tree, &query) == 1);
EXPECT_TRUE(itree_size(tree) == 0);

View File

@@ -1,7 +1,3 @@
###############################################################################
# toml
###############################################################################
add_library(toml toml.cpp)
target_include_directories(toml PUBLIC ${CMAKE_CURRENT_LIST_DIR})
target_link_libraries(toml)