Module: Lich::Common::ReusableTCPServer

Defined in:
documented/common/reusable_tcp_server.rb

Class Method Summary collapse

Class Method Details

.create(host, port, backlog: 1) ⇒ Socket

Creates a reusable TCP server socket.

Parameters:

  • host (String)

    the hostname or IP address to bind the server to

  • port (Integer)

    the port number to bind the server to

  • backlog (Integer) (defaults to: 1)

    the maximum length of the queue for pending connections (default is 1)

Returns:

  • (Socket)

    the created TCP server socket

Raises:

  • (StandardError)

    raises an error if the server cannot be created



13
14
15
16
17
18
19
20
21
22
23
24
# File 'documented/common/reusable_tcp_server.rb', line 13

def self.create(host, port, backlog: 1)
  server = Socket.new(:INET, :STREAM)
  begin
    server.setsockopt(Socket::SOL_SOCKET, Socket::SO_REUSEADDR, 1)
    server.bind(Addrinfo.tcp(host, port))
    server.listen(backlog)
    server
  rescue
    server.close rescue nil
    raise
  end
end