Class: Dogtag::Id

Inherits:
Object
  • Object
show all
Defined in:
lib/dogtag/id.rb

Constant Summary collapse

SEQUENCE_MAP =
~(-1 << Dogtag::SEQUENCE_BITS) << Dogtag::SEQUENCE_SHIFT
DATA_TYPE_MAP =
~(-1 << Dogtag::DATA_TYPE_BITS) << Dogtag::DATA_TYPE_SHIFT
LOGICAL_SHARD_ID_MAP =
(~(-1 << Dogtag::LOGICAL_SHARD_ID_BITS)) << Dogtag::LOGICAL_SHARD_ID_SHIFT
TIMESTAMP_MAP =
~(-1 << Dogtag::TIMESTAMP_BITS) << Dogtag::TIMESTAMP_SHIFT

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(id) ⇒ Id

Returns a new instance of Id.



10
11
12
# File 'lib/dogtag/id.rb', line 10

def initialize(id)
  @id = id
end

Instance Attribute Details

#idObject (readonly)

Returns the value of attribute id.



8
9
10
# File 'lib/dogtag/id.rb', line 8

def id
  @id
end

Instance Method Details

#custom_timestampObject



14
15
16
# File 'lib/dogtag/id.rb', line 14

def custom_timestamp
  (id & TIMESTAMP_MAP) >> Dogtag::TIMESTAMP_SHIFT
end

#data_typeObject



26
27
28
# File 'lib/dogtag/id.rb', line 26

def data_type
  (id & DATA_TYPE_MAP) >> Dogtag::DATA_TYPE_SHIFT
end

#logical_shard_idObject



22
23
24
# File 'lib/dogtag/id.rb', line 22

def logical_shard_id
  (id & LOGICAL_SHARD_ID_MAP) >> Dogtag::LOGICAL_SHARD_ID_SHIFT
end

#sequenceObject



30
31
32
# File 'lib/dogtag/id.rb', line 30

def sequence
  (id & SEQUENCE_MAP) >> Dogtag::SEQUENCE_SHIFT
end

#timestampObject



18
19
20
# File 'lib/dogtag/id.rb', line 18

def timestamp
  @timestamp ||= Timestamp.new(custom_timestamp, epoch: Dogtag::CUSTOM_EPOCH)
end