class TP2::Server

def graceful_shutdown

def graceful_shutdown
  @opts[:logger]&.info(message: 'Shutting down gracefully...')
  # stop listening
  close_all_server_fds
  @machine.snooze
  return if @connection_fiber_map.empty?
  # sleep for a bit, let requests finish
  @machine.sleep(PENDING_REQUESTS_GRACE_PERIOD)
  return if @connection_fiber_map.empty?
  # terminate pending fibers
  pending = @connection_fiber_map.keys
  signal = UM::Terminate.new
  pending.each { @machine.schedule(it, signal) }
  @machine.timeout(PENDING_REQUESTS_TIMEOUT_PERIOD, UM::Terminate) do
    @machine.join(*@connection_fiber_map.keys)
  rescue UM::Terminate
    # timeout on waiting for adapters to finish running, do nothing
  end
end