Class: Hackle::Bucketer

Inherits:
Object
  • Object
show all
Defined in:
lib/hackle-ruby-sdk/decision/bucketer.rb

Instance Method Summary collapse

Instance Method Details

#bucketing(bucket, user_id) ⇒ Object



7
8
9
10
# File 'lib/hackle-ruby-sdk/decision/bucketer.rb', line 7

def bucketing(bucket, user_id)
  slot_number = calculate_slot_number(bucket.seed, bucket.slot_size, user_id)
  bucket.get_slot(slot_number)
end

#calculate_slot_number(seed, slot_size, user_id) ⇒ Object



12
13
14
15
# File 'lib/hackle-ruby-sdk/decision/bucketer.rb', line 12

def calculate_slot_number(seed, slot_size, user_id)
  hash_value = hash(user_id, seed)
  hash_value.abs % slot_size
end

#hash(data, seed) ⇒ Object



17
18
19
20
21
22
23
24
# File 'lib/hackle-ruby-sdk/decision/bucketer.rb', line 17

def hash(data, seed)
  unsigned_value = MurmurHash3::V32.str_hash(data, seed)
  if (unsigned_value & 0x80000000).zero?
    unsigned_value
  else
    -((unsigned_value ^ 0xFFFFFFFF) + 1)
  end
end