Class: Volt::MessageBus::PeerServer

Inherits:
Object
  • Object
show all
Defined in:
lib/volt/server/message_bus/peer_to_peer/peer_server.rb

Instance Method Summary collapse

Constructor Details

#initialize(message_bus) ⇒ PeerServer

Returns a new instance of PeerServer.



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/volt/server/message_bus/peer_to_peer/peer_server.rb', line 11

def initialize(message_bus)
  @message_bus = message_bus

  setup_port_ranges

  ip = Volt.config.message_bus.try(:bind_ip)
  begin
    @server = TCPServer.new(random_port!)
  rescue Errno::EADDRINUSE => e
    # Keep trying ports until we find one that is not in use, or the pool
    # runs out of ports.
    retry
  end

  run_server
end

Instance Method Details

#portObject



46
47
48
# File 'lib/volt/server/message_bus/peer_to_peer/peer_server.rb', line 46

def port
  @server.addr[1]
end

#run_serverObject



28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/volt/server/message_bus/peer_to_peer/peer_server.rb', line 28

def run_server
  @main_thread = Thread.new do
    # Start the server
    loop do
      Thread.start(@server.accept) do |socket|
        peer_connection = PeerConnection.new(socket, nil, nil,
          @message_bus, true)

        @message_bus.add_peer_connection(peer_connection)
      end
    end
  end
end

#stopObject



42
43
44
# File 'lib/volt/server/message_bus/peer_to_peer/peer_server.rb', line 42

def stop
  @main_thread.kill
end