Method: OpenC3::InterfaceMicroservice#handle_connection_lost

Defined in:
lib/openc3/microservices/interface_microservice.rb

#handle_connection_lost(err = nil, reconnect: true) ⇒ Object



606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
# File 'lib/openc3/microservices/interface_microservice.rb', line 606

def handle_connection_lost(err = nil, reconnect: true)
  if err
    @error = err
    @logger.info "#{@interface.name}: Connection Lost: #{err.formatted(false, false)}"
    case err
    when SignalException
      @logger.info "#{@interface.name}: Closing from signal"
      @cancel_thread = true
    when Errno::ECONNABORTED, Errno::ECONNRESET, Errno::ETIMEDOUT, Errno::EBADF, Errno::ENOTSOCK, IOError
      # Do not write an exception file for these extremely common cases
    else
      @logger.error "#{@interface.name}: #{err.formatted}"
      unless @connection_lost_messages.include?(err.message)
        OpenC3.write_exception_file(err)
        @connection_lost_messages << err.message
      end
    end
  else
    @logger.info "#{@interface.name}: Connection Lost"
  end
  disconnect(reconnect) # Ensure we do a clean disconnect
end