Method: OpenC3::InterfaceMicroservice#handle_connection_failed

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

#handle_connection_failed(connect_error) ⇒ Object



583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
# File 'lib/openc3/microservices/interface_microservice.rb', line 583

def handle_connection_failed(connect_error)
  @error = connect_error
  @logger.error "#{@interface.name}: Connection Failed: #{connect_error.formatted(false, false)}"
  case connect_error
  when SignalException
    @logger.info "#{@interface.name}: Closing from signal"
    @cancel_thread = true
  when Errno::ECONNREFUSED, Errno::ECONNRESET, Errno::ETIMEDOUT, Errno::ENOTSOCK, Errno::EHOSTUNREACH, IOError
    # Do not write an exception file for these extremely common cases
  else
    if RuntimeError === connect_error and (connect_error.message =~ /canceled/ or connect_error.message =~ /timeout/)
      # Do not write an exception file for these extremely common cases
    else
      @logger.error "#{@interface.name}: #{connect_error.formatted}"
      unless @connection_failed_messages.include?(connect_error.message)
        OpenC3.write_exception_file(connect_error)
        @connection_failed_messages << connect_error.message
      end
    end
  end
  disconnect() # Ensure we do a clean disconnect
end