class Cassandra::LoadBalancing::Policies::WhiteList

Public Class Methods

new(ips, wrapped_policy) click to toggle source

@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

host_down(host) click to toggle source

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
host_found(host) click to toggle source

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
host_lost(host) click to toggle source

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
host_up(host) click to toggle source

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
inspect() click to toggle source

@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