Class: SplitIoClient::Engine::SyncManager

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

Constant Summary collapse

SYNC_MODE_STREAMING =
0
SYNC_MODE_POLLING =
1

Instance Method Summary collapse

Constructor Details

#initialize(repositories, api_key, config, synchronizer, telemetry_runtime_producer, sdk_blocker, telemetry_synchronizer) ⇒ SyncManager

Returns a new instance of SyncManager.



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/splitclient-rb/engine/sync_manager.rb', line 9

def initialize(
  repositories,
  api_key,
  config,
  synchronizer,
  telemetry_runtime_producer,
  sdk_blocker,
  telemetry_synchronizer
)
  @synchronizer = synchronizer
  notification_manager_keeper = SSE::NotificationManagerKeeper.new(config, telemetry_runtime_producer) do |manager|
    manager.on_action { |action| process_action(action) }
  end
  @sse_handler = SSE::SSEHandler.new(
    { config: config, api_key: api_key },
    @synchronizer,
    repositories,
    notification_manager_keeper,
    telemetry_runtime_producer
  ) do |handler|
    handler.on_action { |action| process_action(action) }
  end

  @push_manager = PushManager.new(config, @sse_handler, api_key, telemetry_runtime_producer)
  @sse_connected = Concurrent::AtomicBoolean.new(false)
  @config = config
  @telemetry_runtime_producer = telemetry_runtime_producer
  @sdk_blocker = sdk_blocker
  @telemetry_synchronizer = telemetry_synchronizer
end

Instance Method Details

#startObject



40
41
42
43
44
45
46
47
48
49
# File 'lib/splitclient-rb/engine/sync_manager.rb', line 40

def start
  if @config.streaming_enabled
    start_stream
    start_stream_forked if defined?(PhusionPassenger)
  elsif @config.standalone?
    start_poll
  end

  synchronize_telemetry_config
end