Method: Net::SSH::Connection::Keepalive#send_as_needed

Defined in:
lib/net/ssh/connection/keepalive.rb

#send_as_needed(was_events) ⇒ Object



38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/net/ssh/connection/keepalive.rb', line 38

def send_as_needed(was_events)
  return if was_events
  return unless should_send?

  info { "sending keepalive #{@unresponded_keepalive_count}" }

  @unresponded_keepalive_count += 1
  @session.send_global_request("[email protected]") { |success, response|
    debug { "keepalive response successful. Missed #{@unresponded_keepalive_count - 1} keepalives" }
    @unresponded_keepalive_count = 0
  }
  @last_keepalive_sent_at = Time.now
  if keepalive_maxcount > 0 && @unresponded_keepalive_count > keepalive_maxcount
    error { "Timeout, server #{@session.host} not responding. Missed #{@unresponded_keepalive_count - 1} timeouts." }
    @unresponded_keepalive_count = 0
    raise Net::SSH::Timeout, "Timeout, server #{@session.host} not responding."
  end
end