class Arql::ID
Private Class Methods
long()
click to toggle source
# File lib/arql/id.rb, line 22 def long ts = (Time.now.to_f * 1000).to_i if ts < @last_timestamp raise 'Clock moved backwards.' end if ts == @last_timestamp @sequence = (@sequence + 1) & @sequence_mask if (@sequence == 0) ts = til_next_millis(@last_timestamp) end else @sequence = 0 end @last_timestamp = ts ((ts - @id_epoch) << @timestamp_left_shift) | (@data_center_id << @data_center_id_shift) | (@worker_id << @worker_id_shift) | @sequence end
til_next_millis(last_timestamp)
click to toggle source
# File lib/arql/id.rb, line 48 def til_next_millis(last_timestamp) ts = (Time.now.to_f * 1000).to_i while ts <= last_timestamp ts = (Time.now.to_f * 1000).to_i end ts end
uuid()
click to toggle source
# File lib/arql/id.rb, line 41 def uuid require 'securerandom' SecureRandom.uuid.gsub('-', '') end