Class: NobjectServer

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

Overview

this class listens for incoming requests to store an object over the network, accepts connections and then hands those sockets off to server object storage and invocation.

Instance Method Summary collapse

Constructor Details

#initialize(port) ⇒ NobjectServer

Returns a new instance of NobjectServer.



9
10
11
12
13
# File 'lib/nobject_server.rb', line 9

def initialize(port)
  @server = TCPServer.new(port)
  @keep_running = true
  @nobjects = []
end

Instance Method Details

#alive?Boolean

Returns:

  • (Boolean)


15
16
17
# File 'lib/nobject_server.rb', line 15

def alive?
  @keep_running
end

#start!Object



19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/nobject_server.rb', line 19

def start!
  loop do
    break unless @keep_running

    begin
      incoming_socket = @server.accept_nonblock
      Nobject.new(incoming_socket).serve!
    rescue IO::EAGAINWaitReadable => e
      # no connection pending
      begin
        IO.select([@server])
        retry
      rescue Interrupt, IRB::Abort
        @keep_running = false
        @server&.close
      end
    end
  end
end

#stop!Object



39
40
41
# File 'lib/nobject_server.rb', line 39

def stop!
  @keep_running = false
end