Class: JetstreamBridge::Consumer::LifecycleState

Inherits:
Object
  • Object
show all
Defined in:
lib/jetstream_bridge/consumer/consumer_state.rb

Overview

Tracks lifecycle flags and timing for the consumer.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(start_time: Time.now) ⇒ LifecycleState

Returns a new instance of LifecycleState.

Parameters:

  • start_time (Time) (defaults to: Time.now)

    Consumer start time (defaults to now)



34
35
36
37
38
39
40
# File 'lib/jetstream_bridge/consumer/consumer_state.rb', line 34

def initialize(start_time: Time.now)
  @running = true
  @shutdown_requested = false
  @signal_received = nil
  @signal_logged = false
  @start_time = start_time
end

Instance Attribute Details

#runningBoolean

Returns Whether the consumer loop should keep running.

Returns:

  • (Boolean)

    Whether the consumer loop should keep running



23
24
25
# File 'lib/jetstream_bridge/consumer/consumer_state.rb', line 23

def running
  @running
end

#shutdown_requestedBoolean

Returns Whether a graceful shutdown has been requested.

Returns:

  • (Boolean)

    Whether a graceful shutdown has been requested



25
26
27
# File 'lib/jetstream_bridge/consumer/consumer_state.rb', line 25

def shutdown_requested
  @shutdown_requested
end

#signal_loggedBoolean

Returns Whether the signal receipt has been logged.

Returns:

  • (Boolean)

    Whether the signal receipt has been logged



29
30
31
# File 'lib/jetstream_bridge/consumer/consumer_state.rb', line 29

def signal_logged
  @signal_logged
end

#signal_receivedString?

Returns Signal name that triggered shutdown (e.g. “INT”).

Returns:

  • (String, nil)

    Signal name that triggered shutdown (e.g. “INT”)



27
28
29
# File 'lib/jetstream_bridge/consumer/consumer_state.rb', line 27

def signal_received
  @signal_received
end

#start_timeTime (readonly)

Returns When the consumer started.

Returns:

  • (Time)

    When the consumer started



31
32
33
# File 'lib/jetstream_bridge/consumer/consumer_state.rb', line 31

def start_time
  @start_time
end

Instance Method Details

#signal!(sig) ⇒ void

This method returns an undefined value.

Record an OS signal and trigger shutdown.

Parameters:

  • sig (String)

    Signal name (e.g. “INT”, “TERM”)



54
55
56
57
# File 'lib/jetstream_bridge/consumer/consumer_state.rb', line 54

def signal!(sig)
  @signal_received = sig
  stop!
end

#stop!void

This method returns an undefined value.

Request a graceful shutdown.



45
46
47
48
# File 'lib/jetstream_bridge/consumer/consumer_state.rb', line 45

def stop!
  @shutdown_requested = true
  @running = false
end

#uptime(now = Time.now) ⇒ Float

Calculate consumer uptime in seconds.

Parameters:

  • now (Time) (defaults to: Time.now)

    Current time

Returns:

  • (Float)

    Uptime in seconds



63
64
65
# File 'lib/jetstream_bridge/consumer/consumer_state.rb', line 63

def uptime(now = Time.now)
  now - @start_time
end