Module: Dogtag
- Extended by:
- Mixins::Redis
- Defined in:
- lib/dogtag.rb,
lib/dogtag/id.rb,
lib/dogtag/request.rb,
lib/dogtag/version.rb,
lib/dogtag/response.rb,
lib/dogtag/generator.rb,
lib/dogtag/timestamp.rb,
lib/dogtag/lua_script.rb,
lib/dogtag/mixins/redis.rb
Defined Under Namespace
Modules: LuaScript, Mixins
Classes: Generator, Id, Request, Response, Timestamp
Constant Summary
collapse
- CUSTOM_EPOCH =
1483228800000
- TIMESTAMP_BITS =
40
- LOGICAL_SHARD_ID_BITS =
5
- DATA_TYPE_BITS =
8
- SEQUENCE_BITS =
10
- MIN_LOGICAL_SHARD_ID =
0
- MAX_LOGICAL_SHARD_ID =
~(-1 << LOGICAL_SHARD_ID_BITS)
- LOGICAL_SHARD_ID_ALLOWED_RANGE =
(MIN_LOGICAL_SHARD_ID..MAX_LOGICAL_SHARD_ID).freeze
- MIN_DATA_TYPE =
0
- MAX_DATA_TYPE =
~(-1 << DATA_TYPE_BITS)
- DATA_TYPE_ALLOWED_RANGE =
(MIN_DATA_TYPE..MAX_DATA_TYPE).freeze
- MAX_SEQUENCE =
~(-1 << SEQUENCE_BITS)
- SEQUENCE_SHIFT =
0
- DATA_TYPE_SHIFT =
SEQUENCE_BITS
- LOGICAL_SHARD_ID_SHIFT =
SEQUENCE_BITS + DATA_TYPE_BITS
- TIMESTAMP_SHIFT =
SEQUENCE_BITS + DATA_TYPE_BITS + LOGICAL_SHARD_ID_BITS
- LOGICAL_SHARD_ID_RANGE_KEY =
'dogtag-generator-logical-shard-id-range'.freeze
- VERSION =
'1.1.1'.freeze
Class Method Summary
collapse
redis
Class Method Details
.generate_id(data_type) ⇒ Object
49
50
51
|
# File 'lib/dogtag.rb', line 49
def self.generate_id(data_type)
Generator.new(data_type, 1).ids.first
end
|
.generate_ids(data_type, count) ⇒ Object
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
|
# File 'lib/dogtag.rb', line 53
def self.generate_ids(data_type, count)
ids = []
while ids.length < count
initial_id_count = ids.length
ids += Generator.new(data_type, count - ids.length).ids
return ids unless ids.length > initial_id_count
end
ids
end
|
.logical_shard_id_range=(logical_shard_id_range) ⇒ Object