class Cql::Client::ClusterConnector
@private
Public Class Methods
new(sequence, logger)
click to toggle source
# File lib/cql/client/connector.rb, line 7 def initialize(sequence, logger) @sequence = sequence @logger = logger end
Public Instance Methods
connect_all(hosts, connections_per_node)
click to toggle source
# File lib/cql/client/connector.rb, line 12 def connect_all(hosts, connections_per_node) connections = hosts.flat_map do |host| Array.new(connections_per_node) do f = @sequence.connect(host) f.on_value { |connection| register_logging(connection) } f.recover do |error| @logger.warn('Failed connecting to node at %s: %s' % [host, error.message]) FailedConnection.new(error, host) end end end Future.all(*connections).map do |connections| connected_connections = connections.select(&:connected?) if connected_connections.empty? e = connections.first.error if e.is_a?(QueryError) && e.code == QueryError::BAD_CREDENTIALS e = AuthenticationError.new(e.message) end raise e end connected_connections end end
Private Instance Methods
register_logging(connection)
click to toggle source
# File lib/cql/client/connector.rb, line 38 def register_logging(connection) args = [connection[:host_id], connection.host, connection.port, connection[:data_center]] @logger.info('Connected to node %s at %s:%d in data center %s' % args) connection.on_closed do |cause| message = 'Connection to node %s at %s:%d in data center %s closed' % args if cause message << (' unexpectedly: %s' % cause.message) @logger.warn(message) else @logger.info(message) end end end