capture 1.2.0
这是一个基于 PcapPlusPlus、PF_RING 和 ClickHouse 构建的高性能网络流量分析系统,专注于实时流量捕获、解析与存储。
Loading...
Searching...
No Matches
HashTableManager Class Reference

维护哈希表的类 More...

#include <HashTableManager.h>

Collaboration diagram for HashTableManager:
[legend]

Public Member Functions

 HashTableManager ()
 构造函数
 ~HashTableManager ()
 析构函数
long long updatePacketCount (uint32_t hashVal)
 更新指定哈希值的包数
std::vector< uint32_t > getHashesToInfer ()
 获取待推理的哈希值
void markAsInferred (uint32_t hashVal)
 标记某个哈希值为已推理
void talk_to_python ()
 与Python推理客户端通信

Private Member Functions

void log (LogLevel level, const std::string &message)
 记录日志
void server_routine ()
 服务器线程函数

Private Attributes

std::unordered_map< uint32_t, HashEntryhashTable
 存储哈希表数据
std::queue< uint32_t > inferenceQueue
 待推理队列
SocketServer server
 用于Python客户端通信的套接字服务器
std::thread server_thread
 服务器线程
std::atomic< bool > running
 控制服务器线程运行
std::mutex hashTable_mutex
 保护哈希表的互斥锁
std::mutex queue_mutex
 保护待推理队列的互斥锁

Static Private Attributes

static constexpr size_t MAX_HASH_TABLE_SIZE = 1000000
 哈希表最大容量
static constexpr int RECONNECT_DELAY_MS = 5000
 重连延迟(毫秒)
static constexpr int PACKET_THRESHOLD = 100
 包数阈值

Detailed Description

维护哈希表的类

此类维护网络流的哈希表,跟踪包数,管理准备推理的流队列, 并通过套接字连接与Python推理客户端通信。它运行后台服务器线程 来处理客户端连接和定期数据传输。

Constructor & Destructor Documentation

◆ HashTableManager()

HashTableManager::HashTableManager ( )
inline

构造函数

初始化哈希表管理器并启动后台服务器线程

◆ ~HashTableManager()

HashTableManager::~HashTableManager ( )
inline

析构函数

停止服务器线程并关闭 socket,使 accept 能被中断

Member Function Documentation

◆ getHashesToInfer()

std::vector< uint32_t > HashTableManager::getHashesToInfer ( )
inline

获取待推理的哈希值

Returns
准备推理的哈希值向量(最多MAX_SEND_ONCE个条目)

从推理队列中检索最多MAX_SEND_ONCE个哈希值。 线程安全操作,从队列中移除条目。

◆ log()

void HashTableManager::log ( LogLevel level,
const std::string & message )
inlineprivate

记录日志

Parameters
level日志消息的严重程度级别
message要记录的消息内容

格式化并输出带有时间戳和级别信息的日志消息

◆ markAsInferred()

void HashTableManager::markAsInferred ( uint32_t hashVal)
inline

标记某个哈希值为已推理

Parameters
hashVal要标记为已推理的哈希值

设置指定流的推理标志,防止其再次被添加到推理队列

◆ server_routine()

void HashTableManager::server_routine ( )
inlineprivate

服务器线程函数

初始化套接字服务器,等待Python客户端连接, 并定期向连接的客户端发送推理数据。处理连接失败并尝试重连。

Exceptions
std::runtime_error如果服务器初始化失败

◆ talk_to_python()

void HashTableManager::talk_to_python ( )
inline

与Python推理客户端通信

检索准备推理的哈希值并将其发送到连接的Python客户端。 将成功发送的哈希值标记为已推理。

Exceptions
std::runtime_error如果与Python客户端通信失败

◆ updatePacketCount()

long long HashTableManager::updatePacketCount ( uint32_t hashVal)
inline

更新指定哈希值的包数

Parameters
hashVal网络流的哈希值
Returns
哈希表中当前的会话数(流数)

增加给定流的包数。如果流达到包数阈值且尚未被推理, 将其添加到推理队列。为之前未见过的流创建新条目。

Member Data Documentation

◆ hashTable

std::unordered_map<uint32_t, HashEntry> HashTableManager::hashTable
private

存储哈希表数据

◆ hashTable_mutex

std::mutex HashTableManager::hashTable_mutex
private

保护哈希表的互斥锁

◆ inferenceQueue

std::queue<uint32_t> HashTableManager::inferenceQueue
private

待推理队列

◆ MAX_HASH_TABLE_SIZE

size_t HashTableManager::MAX_HASH_TABLE_SIZE = 1000000
staticconstexprprivate

哈希表最大容量

◆ PACKET_THRESHOLD

int HashTableManager::PACKET_THRESHOLD = 100
staticconstexprprivate

包数阈值

◆ queue_mutex

std::mutex HashTableManager::queue_mutex
private

保护待推理队列的互斥锁

◆ RECONNECT_DELAY_MS

int HashTableManager::RECONNECT_DELAY_MS = 5000
staticconstexprprivate

重连延迟(毫秒)

◆ running

std::atomic<bool> HashTableManager::running
private

控制服务器线程运行

◆ server

SocketServer HashTableManager::server
private

用于Python客户端通信的套接字服务器

◆ server_thread

std::thread HashTableManager::server_thread
private

服务器线程


The documentation for this class was generated from the following file: