Class AbstractThriftClient
In: lib/thrift_client/abstract_thrift_client.rb
lib/thrift_client/abstract_thrift_client.rb
Parent: Object

Methods

connect!   connect!   disconnect!   disconnect!   inspect   inspect   new   new  

Classes and Modules

Class AbstractThriftClient::Server

Constants

DISCONNECT_ERRORS = [ IOError, Thrift::Exception, Thrift::ApplicationException, Thrift::TransportException
DEFAULT_WRAPPED_ERRORS = [ Thrift::ApplicationException, Thrift::TransportException, ]
DEFAULTS = { :protocol => Thrift::BinaryProtocol, :protocol_extra_params => [], :transport => Thrift::Socket, :transport_wrapper => Thrift::FramedTransport, :raise => true, :defaults => {}, :exception_classes => DISCONNECT_ERRORS, :retries => 0, :server_retry_period => 1, :server_max_requests => nil, :retry_overrides => {}, :wrapped_exception_classes => DEFAULT_WRAPPED_ERRORS, :timeout => 1, :timeout_overrides => {}
DISCONNECT_ERRORS = [ IOError, Thrift::Exception, Thrift::ApplicationException, Thrift::TransportException
DEFAULT_WRAPPED_ERRORS = [ Thrift::ApplicationException, Thrift::TransportException, ]
DEFAULTS = { :protocol => Thrift::BinaryProtocol, :protocol_extra_params => [], :transport => Thrift::Socket, :transport_wrapper => Thrift::FramedTransport, :raise => true, :defaults => {}, :exception_classes => DISCONNECT_ERRORS, :retries => 0, :server_retry_period => 1, :server_max_requests => nil, :retry_overrides => {}, :wrapped_exception_classes => DEFAULT_WRAPPED_ERRORS, :timeout => 1, :timeout_overrides => {}

Attributes

client  [R] 
client  [R] 
client_class  [R] 
client_class  [R] 
client_methods  [R] 
client_methods  [R] 
current_server  [R] 
current_server  [R] 
options  [R] 
options  [R] 
server_list  [R] 
server_list  [R] 

Public Class methods

[Source]

    # File lib/thrift_client/abstract_thrift_client.rb, line 47
47:   def initialize(client_class, servers, options = {})
48:     @options = DEFAULTS.merge(options)
49:     @options[:server_retry_period] ||= 0
50:     @client_class = client_class
51:     @server_list = Array(servers).collect{|s| Server.new(s)}.sort_by { rand }
52:     @current_server = @server_list.first
53: 
54:     @client_methods = []
55:     @client_class.instance_methods.each do |method_name|
56:       if method_name != 'send_message' && method_name =~ /^send_(.*)$/
57:         instance_eval("def #{$1}(*args); handled_proxy(:'#{$1}', *args); end", __FILE__, __LINE__)
58:         @client_methods << $1
59:       end
60:     end
61:     @request_count = 0
62:     @options[:wrapped_exception_classes].each do |exception_klass|
63:       name = exception_klass.to_s.split('::').last
64:       begin
65:         @client_class.const_get(name)
66:       rescue NameError
67:         @client_class.const_set(name, Class.new(exception_klass))
68:       end
69:     end
70:   end

[Source]

    # File lib/thrift_client/abstract_thrift_client.rb, line 47
47:   def initialize(client_class, servers, options = {})
48:     @options = DEFAULTS.merge(options)
49:     @options[:server_retry_period] ||= 0
50:     @client_class = client_class
51:     @server_list = Array(servers).collect{|s| Server.new(s)}.sort_by { rand }
52:     @current_server = @server_list.first
53: 
54:     @client_methods = []
55:     @client_class.instance_methods.each do |method_name|
56:       if method_name != 'send_message' && method_name =~ /^send_(.*)$/
57:         instance_eval("def #{$1}(*args); handled_proxy(:'#{$1}', *args); end", __FILE__, __LINE__)
58:         @client_methods << $1
59:       end
60:     end
61:     @request_count = 0
62:     @options[:wrapped_exception_classes].each do |exception_klass|
63:       name = exception_klass.to_s.split('::').last
64:       begin
65:         @client_class.const_get(name)
66:       rescue NameError
67:         @client_class.const_set(name, Class.new(exception_klass))
68:       end
69:     end
70:   end

Public Instance methods

Force the client to connect to the server. Not necessary to be called as the connection will be made on the first RPC method call.

[Source]

    # File lib/thrift_client/abstract_thrift_client.rb, line 79
79:   def connect!
80:     @current_server = next_live_server
81:     @connection = Connection::Factory.create(@options[:transport], @options[:transport_wrapper], @current_server.connection_string, @options[:timeout])
82:     @connection.connect!
83:     @client = @client_class.new(@options[:protocol].new(@connection.transport, *@options[:protocol_extra_params]))
84:   end

Force the client to connect to the server. Not necessary to be called as the connection will be made on the first RPC method call.

[Source]

    # File lib/thrift_client/abstract_thrift_client.rb, line 79
79:   def connect!
80:     @current_server = next_live_server
81:     @connection = Connection::Factory.create(@options[:transport], @options[:transport_wrapper], @current_server.connection_string, @options[:timeout])
82:     @connection.connect!
83:     @client = @client_class.new(@options[:protocol].new(@connection.transport, *@options[:protocol_extra_params]))
84:   end

[Source]

    # File lib/thrift_client/abstract_thrift_client.rb, line 86
86:   def disconnect!
87:     @connection.close rescue nil #TODO
88:     @client = nil
89:     @current_server = nil
90:     @request_count = 0
91:   end

[Source]

    # File lib/thrift_client/abstract_thrift_client.rb, line 86
86:   def disconnect!
87:     @connection.close rescue nil #TODO
88:     @client = nil
89:     @current_server = nil
90:     @request_count = 0
91:   end

[Source]

    # File lib/thrift_client/abstract_thrift_client.rb, line 72
72:   def inspect
73:     "<#{self.class}(#{client_class}) @current_server=#{@current_server}>"
74:   end

[Source]

    # File lib/thrift_client/abstract_thrift_client.rb, line 72
72:   def inspect
73:     "<#{self.class}(#{client_class}) @current_server=#{@current_server}>"
74:   end

[Validate]