Class: SplitIoClient::Engine::StatusManager

Inherits:
Object
  • Object
show all
Defined in:
lib/splitclient-rb/engine/status_manager.rb

Instance Method Summary collapse

Constructor Details

#initialize(config) ⇒ StatusManager

Returns a new instance of StatusManager.



6
7
8
9
# File 'lib/splitclient-rb/engine/status_manager.rb', line 6

def initialize(config)
  @config = config
  @sdk_ready = Concurrent::CountDownLatch.new(1)
end

Instance Method Details

#ready!Object



17
18
19
20
21
22
# File 'lib/splitclient-rb/engine/status_manager.rb', line 17

def ready!
  return if ready?

  @sdk_ready.count_down
  @config.logger.info('SplitIO SDK is ready')
end

#ready?Boolean

Returns:

  • (Boolean)


11
12
13
14
15
# File 'lib/splitclient-rb/engine/status_manager.rb', line 11

def ready?
  return true if @config.consumer?

  @sdk_ready.wait(0)
end

#wait_until_ready(seconds = nil) ⇒ Object



24
25
26
27
28
29
30
# File 'lib/splitclient-rb/engine/status_manager.rb', line 24

def wait_until_ready(seconds = nil)
  return if @config.consumer?

  timeout = seconds || @config.block_until_ready

  raise SDKBlockerTimeoutExpiredException, 'SDK start up timeout expired' unless @sdk_ready.wait(timeout)
end