about summary refs log tree commit homepage
path: root/lib/rainbows/event_machine/server.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/rainbows/event_machine/server.rb')
-rw-r--r--lib/rainbows/event_machine/server.rb15
1 files changed, 15 insertions, 0 deletions
diff --git a/lib/rainbows/event_machine/server.rb b/lib/rainbows/event_machine/server.rb
new file mode 100644
index 0000000..696bc8b
--- /dev/null
+++ b/lib/rainbows/event_machine/server.rb
@@ -0,0 +1,15 @@
+# -*- encoding: binary -*-
+module Rainbows::EventMachine::Server # :nodoc: all
+  def close
+    detach
+    @io.close
+  end
+
+  # CL, CUR and MAX will be set when worker_loop starts
+  def notify_readable
+    return if CUR.size >= MAX
+    io = @io.kgio_tryaccept or return
+    sig = EM.attach_fd(io.fileno, false)
+    CUR[sig] = CL.new(sig, io)
+  end
+end