Sha256: 208d56d0c82c2ef61bf47c1781683d428bb181b6871cc5d2ba7cd697ff99360f

Contents?: true

Size: 918 Bytes

Versions: 14

Compression:

Stored size: 918 Bytes

Contents

#!/usr/bin/env ruby
#
# Run this as: bundle exec examples/echo_server.rb

require 'bundler/setup'
require 'celluloid/io'

class EchoServer
  include Celluloid::IO
  finalizer :finalize

  def initialize(host, port)
    puts "*** Starting echo server on #{host}:#{port}"

    # Since we included Celluloid::IO, we're actually making a
    # Celluloid::IO::TCPServer here
    @server = TCPServer.new(host, port)
    async.run
  end

  def finalize
    @server.close if @server
  end

  def run
    loop { async.handle_connection @server.accept }
  end

  def handle_connection(socket)
    _, port, host = socket.peeraddr
    puts "*** Received connection from #{host}:#{port}"
    loop { socket.write socket.readpartial(4096) }
  rescue EOFError
    puts "*** #{host}:#{port} disconnected"
    socket.close
  end
end

supervisor = EchoServer.supervise("127.0.0.1", 1234)
trap("INT") { supervisor.terminate; exit }
sleep

Version data entries

14 entries across 14 versions & 1 rubygems

Version Path
celluloid-io-0.17.1 examples/echo_server.rb
celluloid-io-0.17.0 examples/echo_server.rb
celluloid-io-0.16.5.pre0 examples/echo_server.rb
celluloid-io-0.16.2 examples/echo_server.rb
celluloid-io-0.16.1 examples/echo_server.rb
celluloid-io-0.16.0 examples/echo_server.rb
celluloid-io-0.16.0.pre2 examples/echo_server.rb
celluloid-io-0.16.0.pre examples/echo_server.rb
celluloid-io-0.15.0 examples/echo_server.rb
celluloid-io-0.15.0.pre2 examples/echo_server.rb
celluloid-io-0.15.0.pre examples/echo_server.rb
celluloid-io-0.14.1 examples/echo_server.rb
celluloid-io-0.14.0 examples/echo_server.rb
celluloid-io-0.14.0.pre examples/echo_server.rb