def join(sleep_seconds_before_join = 1)
      # check already existing TCPServers
      return if @tcp_servers.empty?
      # wait some seconds before joininig the upcoming threads
      # and check that all TCPServers gots one thread
      while (@tcp_server_threads.length < @tcp_servers.length) && (sleep_seconds_before_join > 0)
        sleep_seconds_before_join -= 1
        sleep 1
      end
      # try to join any thread
      begin
        @tcp_server_threads.each(&:join)

      # catch ctrl-c to stop service
      rescue Interrupt
      end
    end
def join(sleep_seconds_before_join = 1)
      # check already existing TCPServers
      return if @tcp_servers.empty?
      # wait some seconds before joininig the upcoming threads
      # and check that all TCPServers gots one thread
      while (@tcp_server_threads.length < @tcp_servers.length) && (sleep_seconds_before_join > 0)
        sleep_seconds_before_join -= 1
        sleep 1
      end
      # try to join any thread
      begin
        @tcp_server_threads.each(&:join)

      # catch ctrl-c to stop service
      rescue Interrupt
      end
    end
Join with the server thread(s)
 before joining the server threads, check and wait optionally a few seconds
 to let the service(s) come up