浏览代码

export hloop_process_events for (#351)

ithewei 2 年之前
父节点
当前提交
119038379e
共有 2 个文件被更改,包括 6 次插入4 次删除
  1. 4 4
      event/hloop.c
  2. 2 0
      event/hloop.h

+ 4 - 4
event/hloop.c

@@ -137,13 +137,13 @@ static int hloop_process_pendings(hloop_t* loop) {
 }
 
 // hloop_process_ios -> hloop_process_timers -> hloop_process_idles -> hloop_process_pendings
-static int hloop_process_events(hloop_t* loop) {
+int hloop_process_events(hloop_t* loop, int timeout_ms) {
     // ios -> timers -> idles
     int nios, ntimers, nidles;
     nios = ntimers = nidles = 0;
 
     // calc blocktime
-    int32_t blocktime_ms = HLOOP_MAX_BLOCK_TIME;
+    int32_t blocktime_ms = timeout_ms;
     if (loop->ntimers) {
         hloop_update_time(loop);
         int64_t blocktime_us = blocktime_ms * 1000;
@@ -157,7 +157,7 @@ static int hloop_process_events(hloop_t* loop) {
         }
         if (blocktime_us <= 0) goto process_timers;
         blocktime_ms = blocktime_us / 1000 + 1;
-        blocktime_ms = MIN(blocktime_ms, HLOOP_MAX_BLOCK_TIME);
+        blocktime_ms = MIN(blocktime_ms, timeout_ms);
     }
 
     if (loop->nios) {
@@ -455,7 +455,7 @@ int hloop_run(hloop_t* loop) {
             loop->nactives <= loop->intern_nevents) {
             break;
         }
-        hloop_process_events(loop);
+        hloop_process_events(loop, HLOOP_MAX_BLOCK_TIME);
         if (loop->flags & HLOOP_FLAG_RUN_ONCE) {
             break;
         }

+ 2 - 0
event/hloop.h

@@ -131,6 +131,8 @@ HV_EXPORT hloop_t* hloop_new(int flags DEFAULT(HLOOP_FLAG_AUTO_FREE));
 // WARN: Forbid to call hloop_free if HLOOP_FLAG_AUTO_FREE set.
 HV_EXPORT void hloop_free(hloop_t** pp);
 
+HV_EXPORT int hloop_process_events(hloop_t* loop, int timeout_ms DEFAULT(1));
+
 // NOTE: when no active events, loop will quit if HLOOP_FLAG_QUIT_WHEN_NO_ACTIVE_EVENTS set.
 HV_EXPORT int hloop_run(hloop_t* loop);
 // NOTE: hloop_stop called in loop-thread just set flag to quit in next loop,