From 07598fc954f45f3a01076efb8d08bda9e86e076f Mon Sep 17 00:00:00 2001 From: Denis Knauf Date: Thu, 25 Aug 2016 22:28:32 +0200 Subject: [PATCH] README.md added. select: on/off/one (like event-based jquery). --- README.md | 4 ++ lib/select.rb | 171 +++++++++++++++++++++++++++++++++++++------------- 2 files changed, 130 insertions(+), 45 deletions(-) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..03aab8a --- /dev/null +++ b/README.md @@ -0,0 +1,4 @@ +Select +====== + +IO-Management select-based. diff --git a/lib/select.rb b/lib/select.rb index 9d92d90..306285a 100644 --- a/lib/select.rb +++ b/lib/select.rb @@ -1,87 +1,168 @@ +# IO-Management +# Fires if IO is ready a given block. +# +# Select.open do |sel| +# sock = TCPSocket.new 'localhost', 8090 +# buffer = '' +# +# sel.on_read serv do |sock| +# buffer << sock.sysread +# end +# +# sel.on_write STDOUT do |sock| +# return if buffer.empty? +# written = sock.syswrite buffer +# buffer = buffer[written..-1] +# end +# +# sel.on_error sock do |sock| +# sel.close +# end +# end + class Select READ, WRITE, ERROR = 1, 2, 3 attr_reader :read, :write, :error attr_accessor :exit, :exit_on_empty + # There are no events to wait? def empty? @read.empty? && @write.empty? && @error.empty? end - def self.new *p, &e - r = super *p - if e - e.call r - r.close - else r + class <