Class: BasicJRPC::Client

Inherits:
Object
  • Object
show all
Defined in:
lib/basicjrpc/client.rb,
lib/basicjrpc/client/payload.rb

Overview

Responding Client

Direct Known Subclasses

FAFClient

Defined Under Namespace

Classes: Payload

Instance Method Summary collapse

Constructor Details

#initialize(queue, timeout = 5) ⇒ Client

Returns a new instance of Client.



5
6
7
8
9
10
# File 'lib/basicjrpc/client.rb', line 5

def initialize(queue, timeout = 5)
  @redis = Redis.new(host: "redis")
  @queue = queue
  @payload = nil
  @timeout = timeout
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(m, *args, &block) ⇒ Object



12
13
14
# File 'lib/basicjrpc/client.rb', line 12

def method_missing(m, *args, &block)
  send_request(Payload.new(m, args))
end

Instance Method Details

#send_request(payload) ⇒ Object



16
17
18
19
20
21
22
23
# File 'lib/basicjrpc/client.rb', line 16

def send_request payload
  payload.response_requested = true
  @redis.rpush(@queue, Oj.dump(payload))
  
  Timeout::timeout(timeout) {
    return Oj.load(@redis.blpop(payload.message_id)[1]) 
  }
end