diff --git a/ruby-celluloid-io/Gemfile b/ruby-celluloid-io/Gemfile new file mode 100644 index 0000000..599555b --- /dev/null +++ b/ruby-celluloid-io/Gemfile @@ -0,0 +1,4 @@ +source 'http://rubygems.org' +ruby "1.9.3" + +gem 'celluloid-io' diff --git a/ruby-celluloid-io/Gemfile.lock b/ruby-celluloid-io/Gemfile.lock new file mode 100644 index 0000000..191fd2e --- /dev/null +++ b/ruby-celluloid-io/Gemfile.lock @@ -0,0 +1,18 @@ +GEM + remote: http://rubygems.org/ + specs: + celluloid (0.12.4) + facter (>= 1.6.12) + timers (>= 1.0.0) + celluloid-io (0.12.1) + celluloid (~> 0.12.0) + nio4r (>= 0.4.0) + facter (1.6.17) + nio4r (0.4.3) + timers (1.1.0) + +PLATFORMS + ruby + +DEPENDENCIES + celluloid-io diff --git a/ruby-celluloid-io/server.rb b/ruby-celluloid-io/server.rb new file mode 100644 index 0000000..580c136 --- /dev/null +++ b/ruby-celluloid-io/server.rb @@ -0,0 +1,25 @@ +require 'celluloid/io' + +class EchoServer + include Celluloid::IO + + def initialize(host, port) + @server = TCPServer.new(host, port) + run + end + + def finalize + @server.close if @server + end + + def run + loop { handle_connection! @server.accept } + end + + def handle_connection(socket) + loop { socket.write socket.readpartial(1024) } + rescue EOFError + end +end + +EchoServer.new('127.0.0.1', 9000) \ No newline at end of file diff --git a/ruby-eventmachine/Gemfile b/ruby-eventmachine/Gemfile new file mode 100644 index 0000000..571bc50 --- /dev/null +++ b/ruby-eventmachine/Gemfile @@ -0,0 +1,4 @@ +source 'http://rubygems.org' +ruby "1.9.3" + +gem 'eventmachine' \ No newline at end of file diff --git a/ruby-eventmachine/Gemfile.lock b/ruby-eventmachine/Gemfile.lock new file mode 100644 index 0000000..f4ff424 --- /dev/null +++ b/ruby-eventmachine/Gemfile.lock @@ -0,0 +1,10 @@ +GEM + remote: http://rubygems.org/ + specs: + eventmachine (1.0.0) + +PLATFORMS + ruby + +DEPENDENCIES + eventmachine diff --git a/ruby-eventmachine/server.rb b/ruby-eventmachine/server.rb new file mode 100644 index 0000000..297114d --- /dev/null +++ b/ruby-eventmachine/server.rb @@ -0,0 +1,15 @@ +#!/usr/bin/env ruby + +require 'rubygems' +require 'eventmachine' + +module EchoServer + def receive_data data + send_data data + end +end + +EventMachine::run { + EventMachine::start_server "127.0.0.1", 9000, EchoServer + puts 'running echo server on port 9000' +} \ No newline at end of file