diff options
Diffstat (limited to 'lib/rainbows/fiber/rev/kato.rb')
-rw-r--r-- | lib/rainbows/fiber/rev/kato.rb | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/lib/rainbows/fiber/rev/kato.rb b/lib/rainbows/fiber/rev/kato.rb new file mode 100644 index 0000000..056b6ef --- /dev/null +++ b/lib/rainbows/fiber/rev/kato.rb @@ -0,0 +1,22 @@ +# -*- encoding: binary -*- +# :enddoc: +# keep-alive timeout class +class Rainbows::Fiber::Rev::Kato < Rev::TimerWatcher + def initialize + @watch = [] + super(1, true) + end + + def <<(fiber) + @watch << fiber + enable unless enabled? + end + + def on_timer + @watch.uniq! + while f = @watch.shift + f.resume if f.alive? + end + disable + end +end |