class Kcl::Types::ExtendedSequenceNumber
Constants
- AT_TIMESTAMP_VALUE
- LATEST_VALUE
- TRIM_HORIZON_VALUE
Attributes
sequence_number[R]
sub_sequence_number[R]
Public Class Methods
digits?(str)
click to toggle source
@param [String] str @return [Boolean]
# File lib/kcl/types/extended_sequence_number.rb, line 48 def self.digits?(str) return false if str.nil? || str.empty? (str =~ /\A[0-9]+\z/) != nil end
digits_or_sentinel?(str)
click to toggle source
@param [String] str @return [Boolean]
# File lib/kcl/types/extended_sequence_number.rb, line 28 def self.digits_or_sentinel?(str) digits?(str) || sentinel?(str) end
latest()
click to toggle source
@return [Kcl::Types::ExtendedSequenceNumber]
# File lib/kcl/types/extended_sequence_number.rb, line 12 def self.latest @_latest ||= self.new(Kcl::Checkpoints::Sentinel::LATEST) end
new(sequence_number, sub_sequence_number = 0)
click to toggle source
@param [String] sequence_number
@param [Number] sub_sequence_number
# File lib/kcl/types/extended_sequence_number.rb, line 55 def initialize(sequence_number, sub_sequence_number = 0) @sequence_number = sequence_number @sub_sequence_number = sub_sequence_number end
sentinel?(str)
click to toggle source
@param [String] str @return [Boolean]
# File lib/kcl/types/extended_sequence_number.rb, line 34 def self.sentinel?(str) case str when Kcl::Checkpoints::Sentinel::TRIM_HORIZON, Kcl::Checkpoints::Sentinel::LATEST, Kcl::Checkpoints::Sentinel::SHARD_END, Kcl::Checkpoints::Sentinel::AT_TIMESTAMP true else false end end
shard_end()
click to toggle source
@return [Kcl::Types::ExtendedSequenceNumber]
# File lib/kcl/types/extended_sequence_number.rb, line 17 def self.shard_end @_shard_end ||= self.new(Kcl::Checkpoints::Sentinel::SHARD_END) end
trim_horizon()
click to toggle source
@return [Kcl::Types::ExtendedSequenceNumber]
# File lib/kcl/types/extended_sequence_number.rb, line 22 def self.trim_horizon @_trim_horizon ||= self.new(Kcl::Checkpoints::Sentinel::TRIM_HORIZON) end
Public Instance Methods
equals(extended_sequence_number)
click to toggle source
@param [Kcl::Types::ExtendedSequenceNumber] extended_sequence_number @return [Boolean]
# File lib/kcl/types/extended_sequence_number.rb, line 82 def equals(extended_sequence_number) if @sequence_number != extended_sequence_number.sequence_number return false end @sub_sequence_number == extended_sequence_number.sub_sequence_number end
value()
click to toggle source
@return [BigDecimal]
# File lib/kcl/types/extended_sequence_number.rb, line 61 def value if self.class.digits?(@sequence_number) return BigDecimal(@sequence_number) end case @sequence_number when Kcl::Checkpoints::Sentinel::LATEST LATEST_VALUE when Kcl::Checkpoints::Sentinel::TRIM_HORIZON TRIM_HORIZON_VALUE when Kcl::Checkpoints::Sentinel::AT_TIMESTAMP AT_TIMESTAMP_VALUE else raise Kcl::Errors::IllegalArgumentError.new( 'Expected a string of digits, TRIM_HORIZON, LATEST or AT_TIMESTAMP but received ' + @sequence_number ) end end