Class: Karafka::Pro::ScheduledMessages::State

Inherits:
Object
  • Object
show all
Defined in:
lib/karafka/pro/scheduled_messages/state.rb

Overview

Represents the loading/bootstrapping state of the given topic partition

Bootstrapping can be in the following states:

  • fresh - when we got an assignment but we did not load the schedule yet

  • loading - when we are in the process of bootstrapping the daily state and we consume historical messages to build the needed schedules.

  • loaded - state in which we finished loading all the schedules and we can dispatch messages when the time comes and we can process real-time incoming schedules and changes to schedules as they appear in the stream.

Instance Method Summary collapse

Constructor Details

#initialize(loaded = nil) ⇒ State

Returns a new instance of State.

Parameters:

  • loaded (nil, false, true) (defaults to: nil)

    is the state loaded or not yet. ‘nil` indicates, it is a fresh, pre-seek state.



29
30
31
# File 'lib/karafka/pro/scheduled_messages/state.rb', line 29

def initialize(loaded = nil)
  @loaded = loaded
end

Instance Method Details

#fresh?Boolean

Returns are we in a fresh, pre-bootstrap state.

Returns:

  • (Boolean)

    are we in a fresh, pre-bootstrap state



34
35
36
# File 'lib/karafka/pro/scheduled_messages/state.rb', line 34

def fresh?
  @loaded.nil?
end

#loaded!Object

Marks the current state as fully loaded



39
40
41
# File 'lib/karafka/pro/scheduled_messages/state.rb', line 39

def loaded!
  @loaded = true
end

#loaded?Boolean

Returns are we in a loaded state.

Returns:

  • (Boolean)

    are we in a loaded state



44
45
46
# File 'lib/karafka/pro/scheduled_messages/state.rb', line 44

def loaded?
  @loaded == true
end

#to_sString

Returns current state string representation.

Returns:

  • (String)

    current state string representation



49
50
51
52
53
54
55
56
57
58
# File 'lib/karafka/pro/scheduled_messages/state.rb', line 49

def to_s
  case @loaded
  when nil
    'fresh'
  when false
    'loading'
  when true
    'loaded'
  end
end