Method: AbstractThriftClient#initialize

Defined in:
lib/thrift_client/abstract_thrift_client.rb

#initialize(client_class, servers, options = {}) ⇒ AbstractThriftClient

Returns a new instance of AbstractThriftClient.



49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
# File 'lib/thrift_client/abstract_thrift_client.rb', line 49

def initialize(client_class, servers, options = {})
  @options = DEFAULTS.merge(options)
  @options[:server_retry_period] ||= 0

  @client_class = client_class
  @server_list = Array(servers).collect do |s|
    Server.new(s, @client_class, @options)
  end.sort_by { rand }

  @current_server = @server_list.first

  @callbacks = {}
  @client_methods = []
  @client_class.instance_methods.each do |method_name|
    if method_name != 'send_message' && method_name =~ /^send_(.*)$/
      instance_eval("def #{$1}(*args); handled_proxy(:'#{$1}', *args); end", __FILE__, __LINE__)
      @client_methods << $1
    end
  end
  @request_count = 0
  self.class.create_wrapped_exception_classes(@client_class, @options[:wrapped_exception_classes])
end