Class: SplitIoClient::Engine::SyncManager

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

Instance Method Summary collapse

Constructor Details

#initialize(repositories, api_key, config, sdk_blocker, metrics) ⇒ SyncManager

Returns a new instance of SyncManager.



8
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
# File 'lib/splitclient-rb/engine/sync_manager.rb', line 8

def initialize(
  repositories,
  api_key,
  config,
  sdk_blocker,
  metrics
)
  split_fetcher = SplitFetcher.new(repositories[:splits], api_key, metrics, config, sdk_blocker)
  segment_fetcher = SegmentFetcher.new(repositories[:segments], api_key, metrics, config, sdk_blocker)
  sync_params = { split_fetcher: split_fetcher, segment_fetcher: segment_fetcher }

  @synchronizer = Synchronizer.new(repositories, api_key, config, sdk_blocker, sync_params)
  notification_manager_keeper = SplitIoClient::SSE::NotificationManagerKeeper.new(config) do |manager|
    manager.on_occupancy { |publisher_available| process_occupancy(publisher_available) }
    manager.on_push_shutdown { process_push_shutdown }
  end
  @sse_handler = SplitIoClient::SSE::SSEHandler.new(
    config,
    @synchronizer,
    repositories[:splits],
    repositories[:segments],
    notification_manager_keeper
  ) do |handler|
    handler.on_connected { process_connected }
    handler.on_disconnect { process_disconnect }
  end

  @push_manager = PushManager.new(config, @sse_handler, api_key)
  @config = config
end

Instance Method Details

#startObject



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

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