在S1mmeSession::CheckTimeout函数中增加一个超时处理函数,超时处理函数遍历新增加的hash节点,当current_time_.tv_sec-节点的last_time时,使用LogInfo函数将节点所有字段以及current_time_.tv_sec字段进行输出
时间: 2024-03-26 15:35:24 浏览: 94
SQL查询超时的设置方法(关于timeout的处理)
可以在S1mmeSession类中增加一个私有成员函数TimeoutHandler,该函数的实现如下:
```
void S1mmeSession::TimeoutHandler() {
for (auto it = p_stmsi_map_->begin(); it != p_stmsi_map_->end(); ) {
if (current_time_.tv_sec - it->second->GetLastTime().tv_sec > timeout_stmsi_) {
// 使用LogInfo函数输出节点信息
LogInfo("TimeoutHandler: STMSI timeout, current_time=%ld, node_info=%s", current_time_.tv_sec, it->second->ToString().c_str());
// 删除节点
p_stmsi_map_->erase(it++);
} else {
++it;
}
}
}
```
在CheckTimeout函数中增加调用TimeoutHandler函数的代码:
```
void S1mmeSession::CheckTimeout(uint64_t second, uint8_t worker_id) {
bool dead_loop_major, dead_loop_hoc, dead_loop_stmsi;
{
// 遍历主map
// ...
}
dead_loop_major = p_major_map_->CheckDeadLoop();
{
// 遍历STMSI map
TimeoutHandler();
}
// ...
}
```
当STMSI map中的某个节点超时时,TimeoutHandler函数会使用LogInfo函数将节点信息输出,同时删除该节点。
阅读全文