Class: Legion::Identity::LeaseRenewer

Inherits:
Object
  • Object
show all
Defined in:
lib/legion/identity/lease_renewer.rb

Constant Summary collapse

BACKOFF_SLEEP =
5
MIN_SLEEP =
1
DEFAULT_SLEEP =
60

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(provider_name:, provider:, lease:) ⇒ LeaseRenewer

Returns a new instance of LeaseRenewer.



14
15
16
17
18
19
20
21
22
# File 'lib/legion/identity/lease_renewer.rb', line 14

def initialize(provider_name:, provider:, lease:)
  @provider_name = provider_name
  @provider      = provider
  @lease         = Concurrent::AtomicReference.new(lease)
  @stop          = Concurrent::AtomicBoolean.new(false)
  @thread        = Thread.new { run_loop }
  @thread.name   = "lease-renewer-#{provider_name}"
  @thread.abort_on_exception = false
end

Instance Attribute Details

#providerObject (readonly)

Returns the value of attribute provider.



8
9
10
# File 'lib/legion/identity/lease_renewer.rb', line 8

def provider
  @provider
end

#provider_nameObject (readonly)

Returns the value of attribute provider_name.



8
9
10
# File 'lib/legion/identity/lease_renewer.rb', line 8

def provider_name
  @provider_name
end

Instance Method Details

#alive?Boolean

Returns:

  • (Boolean)


34
35
36
# File 'lib/legion/identity/lease_renewer.rb', line 34

def alive?
  @thread&.alive? || false
end

#current_leaseObject



24
25
26
# File 'lib/legion/identity/lease_renewer.rb', line 24

def current_lease
  @lease.get
end

#stop!Object



28
29
30
31
32
# File 'lib/legion/identity/lease_renewer.rb', line 28

def stop!
  @stop.make_true
  @thread&.wakeup rescue nil # rubocop:disable Style/RescueModifier
  @thread&.join(5)
end