class NATS::RPC::Client
Public Class Methods
new(cluster_opts=nil)
click to toggle source
# File lib/nats/rpc/client.rb, line 4 def initialize(cluster_opts=nil) @nats = NATS::IO::Client.new @nats.connect cluster_opts || NATS::RPC.cluster_opts end
Public Instance Methods
request(subscription, obj, opts)
click to toggle source
# File lib/nats/rpc/client.rb, line 9 def request(subscription, obj, opts) obj_json = if obj.is_a? String obj else obj.to_json end msg = @nats.request subscription, obj_json, opts data = JSON.parse(msg["data"]) payload = JSON.parse(data["payload"]) if data["status"] == "error" case data["code"] when 2.0 rex = RemoteError.new payload["message"] rex.set_backtrace payload["backtrace"] rex.remote_exception = payload["exception"] raise rex else raise "Error code: #{data["code"]}" end end [data, payload] end