class Jubatus::Common::Client
Attributes
name[RW]
Public Class Methods
new(client, name)
click to toggle source
# File lib/jubatus/common/client.rb, line 11 def initialize(client, name) @client = client @name = name end
Public Instance Methods
call(method, args, ret_type, args_type)
click to toggle source
# File lib/jubatus/common/client.rb, line 16 def call(method, args, ret_type, args_type) if args.size != args_type.size raise "number of arguemnts for \"%s\" must to be %d, but %d arguments are given" % [method, args_type.size, args.size] end values = [@name] args.zip(args_type).each do |v, t| values << t.to_msgpack(v) end future = @client.call_async_apply(method, values) future.attach_error_handler do |error, result| error_handler(error, result) end ret = future.get if ret_type != nil return ret_type.from_msgpack(ret) end end
error_handler(error, result)
click to toggle source
# File lib/jubatus/common/client.rb, line 35 def error_handler(error, result) if error == 1 raise UnknownMethod elsif error == 2 raise TypeMismatch else raise MessagePack::RPC::RPCError.create(error, result) end end