Sha256: 153f2bfff9f7a1cc91cdc7e05ac7d722232a1661276bb1447265740a3965eca9

Contents?: true

Size: 1.44 KB

Versions: 3

Compression:

Stored size: 1.44 KB

Contents

module Twib
  # Base class for Ruby bindings to a remote interface.
  # An instance of this class represents a remote bridge object.
  #
  # This class and any subclasses should not typically be instantiated directly.
  # Rather, instances should be returned from either {TwibConnection#open_device}
  # or a remote command binding.
  class Interface
    
    # @param connection [TwibConnection] Twib connection to use for transport
    # @param device_id [Integer] ID of the device this object exists on
    # @param object_id [Integer] ID of the remote object this object is bound to
    def initialize(connection, device_id, object_id)
      @connection = connection
      @device_id = device_id
      @object_id = object_id
    end

    # Sends a request to the remote object this instance is bound to.
    #
    #   object.send(10, [1234].pack("L<")) do |rs|
    #     puts "got back: " + rs.assert_ok.payload
    #   end
    #
    #   object.send(10, [1234].pack("L<")).wait_ok
    #   # => #<Twib::TwibConnection::Response>
    #
    # @param command_id [Integer] ID of remtoe command to invoke
    # @param payload [String] Data to send along with the request
    # @yield [rs] Calls the block (in a separate thread) when a response is received, if present.
    # @yieldparam rs [Response]
    # @return [ActiveRequest]
    def send(command_id, payload=String.new, &block)
      @connection.send(@device_id, @object_id, command_id, payload, &block)
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
twib-0.1.3 lib/twib/interface.rb
twib-0.1.2 lib/twib/interface.rb
twib-0.1.1 lib/twib/interface.rb