Class: Hackle::Bucketer
- Inherits:
-
Object
- Object
- Hackle::Bucketer
- Defined in:
- lib/hackle-ruby-sdk/decision/bucketer.rb
Instance Method Summary collapse
- #bucketing(bucket, user_id) ⇒ Object
- #calculate_slot_number(seed, slot_size, user_id) ⇒ Object
- #hash(data, seed) ⇒ Object
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 |