Class: Tarantool::Request::DefaultShardProc

Inherits:
SumburMurmur32 show all
Defined in:
lib/tarantool/shards_support.rb

Instance Method Summary collapse

Instance Method Details

#call(shard_values, shards_count, this) ⇒ Object



32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/tarantool/shards_support.rb', line 32

def call(shard_values, shards_count, this)
  if shard_values.all?
    hash = i = 0
    size = shard_values.size
    while i < size
      hash = case value = shard_values[i]
        when Integer
          murmur3_32_int64_hash(value, hash)
        when String
          murmur3_32_str_hash(value, hash)
        else
          raise ValueError, "Default sharding proc could deal only with strings and integers"
        end
      i += 1
    end
    sumbur(hash, shards_count)
  end
end