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 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:



280
281
282
283
284
285
286
287
# File 'lib/farcall/endpoint.rb', line 280

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



289
290
291
292
293
294
295
296
# File 'lib/farcall/endpoint.rb', line 289

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 Method Details

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

Returns:

  • (Boolean)


298
299
300
# File 'lib/farcall/endpoint.rb', line 298

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