Class: ConsoleKit::Connections::BaseConnectionHandler

Inherits:
Object
  • Object
show all
Includes:
DiagnosticHelpers
Defined in:
lib/console_kit/connections/base_connection_handler.rb

Overview

Parent class for connection handlers

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods included from DiagnosticHelpers

clock_time, error_diagnostics, timeout_diagnostics

Constructor Details

#initialize(context) ⇒ BaseConnectionHandler

Returns a new instance of BaseConnectionHandler.



20
# File 'lib/console_kit/connections/base_connection_handler.rb', line 20

def initialize(context) = @context = context

Instance Attribute Details

#contextObject (readonly)

Returns the value of attribute context.



18
19
20
# File 'lib/console_kit/connections/base_connection_handler.rb', line 18

def context
  @context
end

Class Method Details

.registryObject



15
# File 'lib/console_kit/connections/base_connection_handler.rb', line 15

def registry = descendants

Instance Method Details

#available?Boolean

Returns:

  • (Boolean)

Raises:

  • (NotImplementedError)


22
# File 'lib/console_kit/connections/base_connection_handler.rb', line 22

def available? = raise NotImplementedError, "#{self.class} must implement #available?"

#connectObject

Raises:

  • (NotImplementedError)


21
# File 'lib/console_kit/connections/base_connection_handler.rb', line 21

def connect = raise NotImplementedError, "#{self.class} must implement #connect"

#diagnosticsObject

Raises:

  • (NotImplementedError)


23
# File 'lib/console_kit/connections/base_connection_handler.rb', line 23

def diagnostics = raise NotImplementedError, "#{self.class} must implement #diagnostics"

#safe_diagnostics(timeout: 2) ⇒ Object



25
26
27
28
29
30
31
32
33
34
35
# File 'lib/console_kit/connections/base_connection_handler.rb', line 25

def safe_diagnostics(timeout: 2)
  handler_name = self.class.name.demodulize.delete_suffix('ConnectionHandler')
  thread, result_wrapper = spawn_diagnostic_thread(handler_name)

  if thread.join(timeout)
    result_wrapper[:value] || error_diagnostics(handler_name, StandardError.new('Unknown error'))
  else
    thread.kill
    timeout_diagnostics(handler_name, timeout)
  end
end