Class: Rubarb::Server

Inherits:
Object
  • Object
show all
Defined in:
lib/rubarb/server.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(host, port, api, insecure_methods = Default::INSECURE_METHODS) ⇒ Server

Returns a new instance of Server.



50
51
52
53
54
55
56
57
58
59
60
61
# File 'lib/rubarb/server.rb', line 50

def initialize(host, port, api, insecure_methods=Default::INSECURE_METHODS)
  @host = host
  @port = port
  @api = api
  @connections = []
  @unbind_block = Proc.new do |connection|
    @connections.delete(connection)
  end
  @conn_id_generator = Id.new
  @msg_id_generator = Id.new
  @insecure_methods = insecure_methods
end

Instance Attribute Details

#conn_id_generatorObject (readonly)

Returns the value of attribute conn_id_generator.



44
45
46
# File 'lib/rubarb/server.rb', line 44

def conn_id_generator
  @conn_id_generator
end

#connectionsObject (readonly)

Returns the value of attribute connections.



43
44
45
# File 'lib/rubarb/server.rb', line 43

def connections
  @connections
end

#errback(&block) ⇒ Object (readonly)

Returns the value of attribute errback.



46
47
48
# File 'lib/rubarb/server.rb', line 46

def errback
  @errback
end

#external_protocolObject

Returns the value of attribute external_protocol.



48
49
50
# File 'lib/rubarb/server.rb', line 48

def external_protocol
  @external_protocol
end

#insecure_methodsObject (readonly)

Returns the value of attribute insecure_methods.



47
48
49
# File 'lib/rubarb/server.rb', line 47

def insecure_methods
  @insecure_methods
end

#msg_id_generatorObject (readonly)

Returns the value of attribute msg_id_generator.



45
46
47
# File 'lib/rubarb/server.rb', line 45

def msg_id_generator
  @msg_id_generator
end

Instance Method Details

#start(&callback) ⇒ Object



63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
# File 'lib/rubarb/server.rb', line 63

def start(& callback)
  EventMachine::schedule do
    begin
      @server_signature = EventMachine::start_server(@host, @port, Listener) do |connection|
        connection.conn_id_generator = @conn_id_generator
        connection.msg_id_generator = @msg_id_generator
        connection.api = @api
        connection.new_connection_callback = callback
        connection.errbacks = @errback.nil? ? [] : [@errback]
        connection.unbindback = @unbind_block
        connection.insecure_methods = @insecure_methods
        connection.external_protocol = @external_protocol
        @connections << connection
      end
    rescue Exception => e
      @errback.call(e) if @errback
    end
  end
end

#stop(&callback) ⇒ Object



84
85
86
87
88
89
90
91
# File 'lib/rubarb/server.rb', line 84

def stop(& callback)
  EventMachine::schedule do
    EventMachine::next_tick do
      close_all_connections
      stop_server(callback)
    end
  end
end