Class: Farcall::Interface

Inherits:
Object
  • Object
show all
Defined in:
lib/farcall/endpoint.rb

Overview

Intervace to the remote provider via Farcall protocols. Works the same as if the object would be in local data, but slower :) The same as calling Farcall::Endpoint#interface

RemoteInterface transparently creates methods as you call them to speedup subsequent calls.

There is no way to check that the remote responds to some method other than call it and catch the exception

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(endpoint: nil, transport: nil, provider: nil, **params) ⇒ Interface

Create interface connected to some endpoint ar transpost.

Please remember that Farcall::Transport instance could be used with only one connected object, unlike Farcall::Endpoint, which could be connected to several consumers.

Parameters:



322
323
324
325
326
327
328
329
# File 'lib/farcall/endpoint.rb', line 322

def initialize endpoint: nil, transport: nil, provider: nil, **params
  @endpoint = if endpoint
                endpoint
              else
                Farcall::Endpoint.new(transport || Farcall::Transport.create(**params))
              end
  provider and @endpoint.provider = provider
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(method_name, *arguments, **kw_arguments, &block) ⇒ Object



333
334
335
336
337
338
339
340
# File 'lib/farcall/endpoint.rb', line 333

def method_missing(method_name, *arguments, **kw_arguments, &block)
  instance_eval <<-End
    def #{method_name} *arguments, **kw_arguments
      @endpoint.sync_call '#{method_name}', *arguments, **kw_arguments
    end
  End
  @endpoint.sync_call method_name, *arguments, **kw_arguments
end

Instance Attribute Details

#endpointObject (readonly)

Returns the value of attribute endpoint.



331
332
333
# File 'lib/farcall/endpoint.rb', line 331

def endpoint
  @endpoint
end

Instance Method Details

#respond_to_missing?(method_name, include_private = false) ⇒ Boolean

Returns:

  • (Boolean)


342
343
344
# File 'lib/farcall/endpoint.rb', line 342

def respond_to_missing?(method_name, include_private = false)
  true
end