Class: Farcall::Interface

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

Overview

Interface to the remote provider via Farcall protocols. Works the same as the normal, local object, but slower. This interface is returned by Endpoint#remote. The Interface transparently creates methods as you call them to speed up subsequent calls.

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

See RemoteError for more information on passing errors.

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 the Farcall::Endpoint, which could be connected to several consumers.

Parameters:

  • endpoint (Farcall::Endpoint) (defaults to: nil)

    endpoint to connecto to. If not provided, then interface will try to use transport or create it using params.

  • transport (Farcall::Transport) (defaults to: nil)

    transport what to use

  • params (Hash)

    used to create transport when neither endpoint not transport present



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

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

used internally to synthesize the proxy method.



346
347
348
349
350
351
352
353
# File 'lib/farcall/endpoint.rb', line 346

def method_missing(method_name, *arguments, **kw_arguments, &block)
  instance_eval "    def \#{method_name} *arguments, **kw_arguments\n      @endpoint.sync_call '\#{method_name}', *arguments, **kw_arguments\n    end\n  End\n  @endpoint.sync_call method_name, *arguments, **kw_arguments\nend\n"

Instance Attribute Details

#endpointObject (readonly)

the Endpoint to which this interface is connected.



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

def endpoint
  @endpoint
end

Instance Method Details

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

used internally to synthesize the proxy method.

Returns:

  • (Boolean)


356
357
358
# File 'lib/farcall/endpoint.rb', line 356

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