diff options
-rw-r--r-- | include/ruby/fiber/scheduler.h | 3 | ||||
-rw-r--r-- | scheduler.c | 13 |
2 files changed, 13 insertions, 3 deletions
diff --git a/include/ruby/fiber/scheduler.h b/include/ruby/fiber/scheduler.h index 213a8b8a1f..4979880d9c 100644 --- a/include/ruby/fiber/scheduler.h +++ b/include/ruby/fiber/scheduler.h @@ -22,7 +22,8 @@ VALUE rb_fiber_scheduler_make_timeout(struct timeval *timeout); VALUE rb_fiber_scheduler_close(VALUE scheduler); -VALUE rb_fiber_scheduler_timeout_raise(VALUE scheduler, VALUE duration); +VALUE rb_fiber_scheduler_timeout_raise(VALUE scheduler, VALUE timeout, VALUE exception, VALUE message); +VALUE rb_fiber_scheduler_timeout_raisev(VALUE scheduler, int argc, VALUE * argv); VALUE rb_fiber_scheduler_kernel_sleep(VALUE scheduler, VALUE duration); VALUE rb_fiber_scheduler_kernel_sleepv(VALUE scheduler, int argc, VALUE * argv); diff --git a/scheduler.c b/scheduler.c index a3de6131f0..49fb6e1408 100644 --- a/scheduler.c +++ b/scheduler.c @@ -110,10 +110,19 @@ rb_fiber_scheduler_make_timeout(struct timeval *timeout) return Qnil; } +VALUE rb_fiber_scheduler_timeout_raise(VALUE scheduler, VALUE timeout, VALUE exception, VALUE message) +{ + VALUE arguments[] = { + timeout, exception, message + }; + + return rb_check_funcall(scheduler, id_timeout_raise, 3, arguments); +} + VALUE -rb_fiber_scheduler_timeout_raise(VALUE scheduler, VALUE timeout) +rb_fiber_scheduler_timeout_raisev(VALUE scheduler, int argc, VALUE * argv) { - return rb_check_funcall(scheduler, id_timeout_raise, 1, &timeout); + return rb_check_funcall(scheduler, id_timeout_raise, argc, argv); } VALUE |