perusopersonale
perusopersonale

Reputation: 896

ruby-eventmachine use start_server with an instance

I'm new to ruby and maybe this is a very simple question.. I'd like to use eventmachine to develop a simulator for my tests. Following example in documentation I can write something like this:

require 'eventmachine'

class Server< EM::Connection
   def receive_data data
     send_data data
     close_connection_after_writing
   end
end
#Note that this will block current thread.
EventMachine.run {
  EventMachine.start_server '127.0.0.1','8080', Server
}

But I wonder if there is a way to use an instance of class, something like:

require 'eventmachine'
class Server< EM::Connection
  attr_accessor :response
    def receive_data data
      send_data @response
      close_connection_after_writing
    end
end

server1 = Server.new
server1.response = "foo"

#Note that this will block current thread.
EventMachine.run {
  EventMachine.start_server '127.0.0.1','8080', server1
}

I try to read source code..but it's too hard for me. I'm surely missing something, but I don't know how to do something like this.

Upvotes: 2

Views: 742

Answers (1)

perusopersonale
perusopersonale

Reputation: 896

As I say there was something that I was missing.

You can add parameters for class to be instantiated :

  class Server< EM::Connection
    def initialize par
       puts "I'm server number#{par}"
    end
    def receive_data data
      send_data data
      close_connection_after_writing
    end
 end

EventMachine.run {
  EventMachine.start_server '127.0.0.1','8080', Server,1
}

EventMachine.run {
  EventMachine.start_server '127.0.0.1','8080', Server,2
}

So I will customize instance behaviour with parameters

Upvotes: 6

Related Questions