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