Class: Artoo::Connection
- Inherits:
-
Object
- Object
- Artoo::Connection
- Includes:
- Utility, Celluloid, Comparable
- Defined in:
- lib/artoo/connection.rb
Overview
The Connection class represents the interface to a specific group of hardware devices. Examples would be an Arduino, a Sphero, or an ARDrone.
Instance Attribute Summary collapse
-
#adaptor ⇒ Object
readonly
Returns the value of attribute adaptor.
-
#connection_id ⇒ Object
readonly
Returns the value of attribute connection_id.
-
#details ⇒ Object
readonly
Returns the value of attribute details.
-
#name ⇒ Object
readonly
Returns the value of attribute name.
-
#parent ⇒ Object
readonly
Returns the value of attribute parent.
-
#port ⇒ Object
readonly
Returns the value of attribute port.
Instance Method Summary collapse
-
#adaptor_name ⇒ String
Adaptor class name.
-
#as_json ⇒ JSON
Connection.
-
#connect ⇒ Boolean
Creates adaptor connection.
-
#connected? ⇒ Boolean
Connection status.
-
#disconnect ⇒ Boolean
Closes adaptor connection.
-
#initialize(params = {}) ⇒ Connection
constructor
Create new connection.
-
#inspect ⇒ String
Formated connection.
-
#method_missing(method_name, *arguments, &block) ⇒ Object
Redirects missing methods to adaptor, attemps reconnection if adaptor not connected.
- #respond_to_missing?(method_name, include_private = false) ⇒ Boolean
-
#to_hash ⇒ Hash
Connection.
Methods included from Utility
#classify, #constantize, #current_class, #current_instance, #os, #random_string, #remove_keys, #underscore
Constructor Details
#initialize(params = {}) ⇒ Connection
Create new connection
21 22 23 24 25 26 27 28 29 |
# File 'lib/artoo/connection.rb', line 21 def initialize(params={}) @connection_id = params[:id] || rand(10000).to_s @name = params[:name].to_s @port = Port.new(params[:port]) @parent = params[:parent] @details = remove_keys(params, :name, :parent, :id, :loopback) require_adaptor(params[:adaptor] || :loopback, params) end |
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(method_name, *arguments, &block) ⇒ Object
Redirects missing methods to adaptor, attemps reconnection if adaptor not connected
79 80 81 82 83 84 85 86 87 88 89 90 |
# File 'lib/artoo/connection.rb', line 79 def method_missing(method_name, *arguments, &block) unless adaptor.connected? Logger.warn "Cannot call unconnected adaptor '#{name}', attempting to reconnect..." adaptor.reconnect return nil end adaptor.send(method_name, *arguments, &block) rescue Exception => e Logger.error e. Logger.error e.backtrace.inspect return nil end |
Instance Attribute Details
#adaptor ⇒ Object (readonly)
Returns the value of attribute adaptor.
12 13 14 |
# File 'lib/artoo/connection.rb', line 12 def adaptor @adaptor end |
#connection_id ⇒ Object (readonly)
Returns the value of attribute connection_id.
12 13 14 |
# File 'lib/artoo/connection.rb', line 12 def connection_id @connection_id end |
#details ⇒ Object (readonly)
Returns the value of attribute details.
12 13 14 |
# File 'lib/artoo/connection.rb', line 12 def details @details end |
#name ⇒ Object (readonly)
Returns the value of attribute name.
12 13 14 |
# File 'lib/artoo/connection.rb', line 12 def name @name end |
#parent ⇒ Object (readonly)
Returns the value of attribute parent.
12 13 14 |
# File 'lib/artoo/connection.rb', line 12 def parent @parent end |
#port ⇒ Object (readonly)
Returns the value of attribute port.
12 13 14 |
# File 'lib/artoo/connection.rb', line 12 def port @port end |
Instance Method Details
#adaptor_name ⇒ String
Returns Adaptor class name.
54 55 56 |
# File 'lib/artoo/connection.rb', line 54 def adaptor_name adaptor.class.name end |
#as_json ⇒ JSON
Returns connection.
68 69 70 |
# File 'lib/artoo/connection.rb', line 68 def as_json MultiJson.dump(to_hash) end |
#connect ⇒ Boolean
Creates adaptor connection
33 34 35 36 37 38 39 |
# File 'lib/artoo/connection.rb', line 33 def connect Logger.info "Connecting to '#{name}' on port '#{port}'..." adaptor.connect rescue Exception => e Logger.error e. Logger.error e.backtrace.inspect end |
#connected? ⇒ Boolean
Returns Connection status.
49 50 51 |
# File 'lib/artoo/connection.rb', line 49 def connected? adaptor.connected? end |
#disconnect ⇒ Boolean
Closes adaptor connection
43 44 45 46 |
# File 'lib/artoo/connection.rb', line 43 def disconnect Logger.info "Disconnecting from '#{name}' on port '#{port}'..." adaptor.disconnect end |
#inspect ⇒ String
Returns Formated connection.
73 74 75 |
# File 'lib/artoo/connection.rb', line 73 def inspect "#<Connection @id=#{object_id}, @name='#{name}', @adaptor=#{adaptor_name}>" end |
#respond_to_missing?(method_name, include_private = false) ⇒ Boolean
92 93 94 95 |
# File 'lib/artoo/connection.rb', line 92 def respond_to_missing?(method_name, include_private = false) # TODO: verify that the adaptor supprts the method we're calling true end |
#to_hash ⇒ Hash
Returns connection.
59 60 61 62 63 64 65 |
# File 'lib/artoo/connection.rb', line 59 def to_hash { :name => name, :adaptor => adaptor_name.to_s.gsub(/^.*::/, ''), :details => @details } end |