Class: BasicJRPC::Client

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

Overview

Responding Client

Direct Known Subclasses

FAFClient

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 = {}
  @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
15
# File 'lib/basicjrpc/client.rb', line 12

def method_missing(m, *args, &block)
  require 'pry'; binding.pry
  send_request({ :method_name => m, :method_arguments => args })
end

Instance Method Details

#send_request(payload) ⇒ Object



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

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