class SplitIoClient::Hashers::ImpressionHasher
def initialize
def initialize @murmur_hash_128_64 = case RUBY_PLATFORM when 'java' Proc.new { |key, seed| Java::MurmurHash3.hash128x64(key, seed) } else Proc.new { |key, seed| Digest::MurmurHashMRI3_x64_128.rawdigest(key, [seed].pack('L')) } end end
def process(impression)
def process(impression) impression_data = "#{unknown_if_null(impression[:k])}" impression_data << ":#{unknown_if_null(impression[:f])}" impression_data << ":#{unknown_if_null(impression[:t])}" impression_data << ":#{unknown_if_null(impression[:r])}" impression_data << ":#{zero_if_null(impression[:c])}" @murmur_hash_128_64.call(impression_data, 0)[0]; end
def unknown_if_null(value)
def unknown_if_null(value) value == nil ? "UNKNOWN" : value end
def zero_if_null(value)
def zero_if_null(value) value == nil ? 0 : value end