class TubeAddress
github.com/jordansissel/experiments/blob/master/ruby/ipaddr-is-slow/code.rb
Constants
- IPV4MASK
Public Class Methods
ip_to_num(addr)
click to toggle source
# File lib/fluent/plugin/out_mobile_carrier.rb, line 109 def self.ip_to_num(addr) addr.split('.').reduce(0) { |a, e| (a << 8) + (e.to_i) } end
new(addr)
click to toggle source
# File lib/fluent/plugin/out_mobile_carrier.rb, line 91 def initialize(addr) @address, cidr, _ = addr.split('/') + ['32'] @address_int = self.class.ip_to_num(@address) @cidr = cidr.to_i @base = @address_int & cidr_mask end
Public Instance Methods
cidr_mask()
click to toggle source
# File lib/fluent/plugin/out_mobile_carrier.rb, line 99 def cidr_mask # Convert /24 to 0xffffff00, etc @cidr_mask ||= IPV4MASK ^ ((1 << (32 - @cidr)) - 1) end
include?(addr)
click to toggle source
# File lib/fluent/plugin/out_mobile_carrier.rb, line 104 def include?(addr) return false if addr.nil? self.class.ip_to_num(addr) & @cidr_mask == @base end
to_s()
click to toggle source
# File lib/fluent/plugin/out_mobile_carrier.rb, line 113 def to_s "#{@address}/#{@cidr}" end