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