diff --git a/.gitignore b/.gitignore deleted file mode 100644 index fc5bd90..0000000 --- a/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/pkg diff --git a/README.md b/README.md deleted file mode 100644 index 03aab8a..0000000 --- a/README.md +++ /dev/null @@ -1,4 +0,0 @@ -Select -====== - -IO-Management select-based. diff --git a/Rakefile b/Rakefile index 2084b4a..01c6483 100644 --- a/Rakefile +++ b/Rakefile @@ -2,57 +2,56 @@ require 'rubygems' require 'rake' begin - require 'jeweler' - Jeweler::Tasks.new do |gem| - gem.name = "select" - gem.summary = %Q{IO-event-handler based on select} - gem.description = %Q{Select based event-handler for servers and sockets} - gem.email = "ich@denkn.at" - gem.license = 'LGPL-3.0' - gem.homepage = "http://github.com/DenisKnauf/select" - gem.authors = ["Denis Knauf"] - gem.files = %w[README.md VERSION lib/**/*.rb test/**/*.rb] - gem.require_paths = %w[lib] - end - Jeweler::GemcutterTasks.new + require 'jeweler' + Jeweler::Tasks.new do |gem| + gem.name = "select" + gem.summary = %Q{IO-event-handler based on select} + gem.description = %Q{Select based event-handler for servers and sockets} + gem.email = "Denis.Knauf@gmail.com" + gem.homepage = "http://github.com/DenisKnauf/select" + gem.authors = ["Denis Knauf"] + gem.files = ["README", "VERSION", "lib/**/*.rb", "test/**/*.rb"] + gem.require_paths = ["lib"] + end + Jeweler::GemcutterTasks.new rescue LoadError - puts "Jeweler (or a dependency) not available. Install it with: sudo gem install jeweler" + puts "Jeweler (or a dependency) not available. Install it with: sudo gem install jeweler" end require 'rake/testtask' Rake::TestTask.new(:test) do |test| - test.libs << 'lib' << 'test' << 'ext' - test.pattern = 'test/**/*_test.rb' - test.verbose = true + test.libs << 'lib' << 'test' << 'ext' + test.pattern = 'test/**/*_test.rb' + test.verbose = true end begin - require 'rcov/rcovtask' - Rcov::RcovTask.new do |test| - test.libs << 'test' - test.pattern = 'test/**/*_test.rb' - test.verbose = true - end + require 'rcov/rcovtask' + Rcov::RcovTask.new do |test| + test.libs << 'test' + test.pattern = 'test/**/*_test.rb' + test.verbose = true + end rescue LoadError - task :rcov do - abort "RCov is not available. In order to run rcov, you must: sudo gem install spicycode-rcov" - end + task :rcov do + abort "RCov is not available. In order to run rcov, you must: sudo gem install spicycode-rcov" + end end task :test => :check_dependencies task :default => :test -require 'rdoc/task' +require 'rake/rdoctask' Rake::RDocTask.new do |rdoc| - if File.exist?('VERSION') - version = File.read('VERSION') - else - version = "" - end + if File.exist?('VERSION') + version = File.read('VERSION') + else + version = "" + end - rdoc.rdoc_dir = 'rdoc' - rdoc.title = "select #{version}" - rdoc.rdoc_files.include('README*') - rdoc.rdoc_files.include('lib/**/*.rb') + rdoc.rdoc_dir = 'rdoc' + rdoc.title = "sbdb #{version}" + rdoc.rdoc_files.include('README*') + rdoc.rdoc_files.include('lib/**/*.rb') end diff --git a/lib/select.rb b/lib/select.rb index 306285a..1af7859 100644 --- a/lib/select.rb +++ b/lib/select.rb @@ -1,205 +1,89 @@ -# 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 - class < Time.now - e.call - @times.shift - end - end - - class Entry < Time - attr_reader :do - def do &e - @do = e - end - - def call *p - @do.call *p - end - - def self.new *a, &e - x = self.at *a - x.do &e - x - end - end - - def at a, &e - a = Entry.new a, &e if e - @times << a - @times.sort! - end end class Select::Buffer