diff --git a/modules/base/log_imp.cpp b/modules/base/log_imp.cpp index 19088d82c408fc6fa79150d85c116ef577d7fb66..3a54c0f59881bb4341f97f83cb961272ed414845 100644 --- a/modules/base/log_imp.cpp +++ b/modules/base/log_imp.cpp @@ -8,12 +8,10 @@ #include #include -#ifdef __cplusplus -extern "C" { -#endif +namespace { -static std::mutex _lock; -static uint32_t _id_alloc = 0; +std::mutex _lock; +uint32_t _id_alloc = 0; struct OutputChannel { uint32_t id; @@ -21,7 +19,19 @@ struct OutputChannel { void *ptr; }; -static std::vector _output_channels; +std::vector _output_channels; + +const char* Basename(const char *full_path) +{ + const char *p_last = full_path; + for (const char *p = full_path; *p; ++p) { + if (*p == '/') + p_last = p + 1; + } + return p_last; +} + +} /** * \brief 日志格式化打印接口的实现 @@ -52,7 +62,7 @@ void LogPrintfFunc(const char *module_id, const char *func_name, const char *fil }, .module_id = module_id_be_print, .func_name = func_name, - .file_name = file_name, + .file_name = Basename(file_name), .line = line, .level = level, .with_args = with_args, @@ -103,6 +113,3 @@ bool LogRemovePrintfFunc(uint32_t id) return false; } -#ifdef __cplusplus -} -#endif diff --git a/modules/event/engins/epoll/fd_event.cpp b/modules/event/engins/epoll/fd_event.cpp index 58ff0ed65f3b7129bf8f2149b4d30dd4e9811a9f..d1c21e3cb91a271678583b7fdf29f202bd5f7ede 100644 --- a/modules/event/engins/epoll/fd_event.cpp +++ b/modules/event/engins/epoll/fd_event.cpp @@ -141,14 +141,13 @@ void EpollFdEvent::onEvent(short events) { wp_loop_->beginEventProcess(); - if (cb_) { + if (is_stop_after_trigger_) + disable(); + if (cb_) { ++cb_level_; cb_(events); --cb_level_; - - if (is_stop_after_trigger_) - disable(); } wp_loop_->endEventProcess(); diff --git a/modules/event/engins/epoll/timer_event.cpp b/modules/event/engins/epoll/timer_event.cpp index 908a4bb884bfa5ab9417e0523c06f57be67c0655..81d6ae0b94ca3b15102f273e606099e8815d4814 100644 --- a/modules/event/engins/epoll/timer_event.cpp +++ b/modules/event/engins/epoll/timer_event.cpp @@ -80,6 +80,11 @@ void EpollTimerEvent::onEvent() { wp_loop_->beginEventProcess(); + if (mode_ == Mode::kOneshot) { + is_enabled_ = false; + token_.reset(); + } + if (cb_) { ++cb_level_; cb_(); diff --git a/modules/event/timer_event_test.cpp b/modules/event/timer_event_test.cpp index 776e3298957b057c802b948000e9e359f102947e..610893fd9845eb9cb5f131a30c975173f710ebe0 100644 --- a/modules/event/timer_event_test.cpp +++ b/modules/event/timer_event_test.cpp @@ -27,6 +27,7 @@ TEST(TimerEvent, Oneshot) sp_loop->runLoop(); EXPECT_EQ(run_time, 1); + EXPECT_FALSE(timer_event->isEnabled()); delete timer_event; delete sp_loop; @@ -50,6 +51,7 @@ TEST(TimerEvent, Persist) sp_loop->runLoop(); EXPECT_EQ(run_time, 10); + EXPECT_TRUE(timer_event->isEnabled()); delete timer_event; delete sp_loop; diff --git a/modules/main/log.cpp b/modules/main/log.cpp index 1cfc5c6c7eb6609336ba922de88d27d4bcc94808..eb932e5c6f8791b472baf8ab8841ed93933ae310 100644 --- a/modules/main/log.cpp +++ b/modules/main/log.cpp @@ -31,7 +31,7 @@ void Log::fillDefaultConfig(Json &cfg) const "levels": {"":6} }, "filelog": { - "enable": true, + "enable": false, "enable_color": false, "levels": {"":3}, "prefix": "sample",