class Cassandra::LoadBalancing::Policies::WhiteList
Public Class Methods
@param ips [Enumerable<String, IPAddr>] a list of ips to whitelist @param wrapped_policy [Cassandra::LoadBalancing::Policy] actual policy to filter @raise [ArgumentError] if arguments are of unexpected types
# File lib/cassandra/load_balancing/policies/white_list.rb 37 def initialize(ips, wrapped_policy) 38 Util.assert_instance_of(::Enumerable, ips) do 39 "ips must be an Enumerable, #{ips.inspect} given" 40 end 41 methods = [:host_up, :host_down, :host_found, :host_lost, :setup, :teardown, 42 :distance, :plan] 43 Util.assert_responds_to_all(methods, wrapped_policy) do 44 "supplied policy must respond to #{methods.inspect}, but doesn't" 45 end 46 47 @ips = ::Set.new 48 @policy = wrapped_policy 49 50 ips.each do |ip| 51 case ip 52 when ::IPAddr 53 @ips << ip 54 when ::String 55 @ips << ::IPAddr.new(ip) 56 else 57 raise ::ArgumentError, 'each ip must be a String or IPAddr, ' \ 58 "#{ip.inspect} given" 59 end 60 end 61 end
Public Instance Methods
Delegates to wrapped policy if host's ip is whitelisted @param host [Cassandra::Host] a host instance @see Cassandra::LoadBalancing::Policy#host_down
# File lib/cassandra/load_balancing/policies/white_list.rb 87 def host_down(host) 88 @policy.host_down(host) if @ips.include?(host.ip) 89 end
Delegates to wrapped policy if host's ip is whitelisted @param host [Cassandra::Host] a host instance @see Cassandra::LoadBalancing::Policy#host_found
# File lib/cassandra/load_balancing/policies/white_list.rb 66 def host_found(host) 67 @policy.host_found(host) if @ips.include?(host.ip) 68 end
Delegates to wrapped policy if host's ip is whitelisted @param host [Cassandra::Host] a host instance @see Cassandra::LoadBalancing::Policy#host_lost
# File lib/cassandra/load_balancing/policies/white_list.rb 73 def host_lost(host) 74 @policy.host_lost(host) if @ips.include?(host.ip) 75 end
Delegates to wrapped policy if host's ip is whitelisted @param host [Cassandra::Host] a host instance @see Cassandra::LoadBalancing::Policy#host_up
# File lib/cassandra/load_balancing/policies/white_list.rb 80 def host_up(host) 81 @policy.host_up(host) if @ips.include?(host.ip) 82 end
@private
# File lib/cassandra/load_balancing/policies/white_list.rb 92 def inspect 93 "#<#{self.class.name}:0x#{object_id.to_s(16)} " \ 94 "policy=#{@policy.inspect}, " \ 95 "ips=#{@ips.inspect}>" 96 end