Class: SplitIoClient::Engine::Events::EventsManager
- Inherits:
-
Object
- Object
- SplitIoClient::Engine::Events::EventsManager
- Defined in:
- lib/splitclient-rb/engine/events/events_manager.rb
Instance Method Summary collapse
- #destroy ⇒ Object
-
#initialize(events_manager_config, events_delivery, config) ⇒ EventsManager
constructor
A new instance of EventsManager.
- #notify_internal_event(sdk_internal_event, event_metadata) ⇒ Object
- #register(sdk_event, event_handler) ⇒ Object
- #unregister(sdk_event) ⇒ Object
Constructor Details
#initialize(events_manager_config, events_delivery, config) ⇒ EventsManager
Returns a new instance of EventsManager.
7 8 9 10 11 12 13 14 |
# File 'lib/splitclient-rb/engine/events/events_manager.rb', line 7 def initialize(events_manager_config, events_delivery, config) @manager_config = events_manager_config @events_delivery = events_delivery @active_subscriptions = {} @internal_events_status = {} @mutex = Mutex.new @config = config end |
Instance Method Details
#destroy ⇒ Object
59 60 61 62 63 64 |
# File 'lib/splitclient-rb/engine/events/events_manager.rb', line 59 def destroy @mutex.synchronize do @active_subscriptions = {} @internal_events_status = {} end end |
#notify_internal_event(sdk_internal_event, event_metadata) ⇒ Object
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
# File 'lib/splitclient-rb/engine/events/events_manager.rb', line 41 def notify_internal_event(sdk_internal_event, ) @mutex.synchronize do update_internal_event_status(sdk_internal_event, true) @manager_config.evaluation_order.each do |sorted_event| if get_sdk_event_if_applicable(sdk_internal_event).include?(sorted_event) && !get_event_handler(sorted_event).nil? fire_sdk_event(sorted_event, ) end # if client is not subscribed to SDK_READY if check_if_register_needed(sorted_event) @config.logger.debug('EventsManager: Registering SDK_READY event as fired') if @config.debug_enabled @active_subscriptions[Engine::Models::SdkEvent::SDK_READY] = Engine::Models::EventActiveSubscriptions.new(true, nil) end end end end |
#register(sdk_event, event_handler) ⇒ Object
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/splitclient-rb/engine/events/events_manager.rb', line 16 def register(sdk_event, event_handler) return if @active_subscriptions.key?(sdk_event) && !get_event_handler(sdk_event).nil? @mutex.synchronize do # SDK ready already fired if sdk_event == SplitIoClient::Engine::Models::SdkEvent::SDK_READY && event_already_triggered(sdk_event) @active_subscriptions[sdk_event] = SplitIoClient::Engine::Models::EventActiveSubscriptions.new(true, event_handler) @config.logger.debug('EventsManager: Firing SDK_READY event for new subscription') if @config.debug_enabled fire_sdk_event(sdk_event, nil) return end @config.logger.debug("EventsManager: Register event: #{sdk_event}") if @config.debug_enabled @active_subscriptions[sdk_event] = SplitIoClient::Engine::Models::EventActiveSubscriptions.new(false, event_handler) end end |
#unregister(sdk_event) ⇒ Object
33 34 35 36 37 38 39 |
# File 'lib/splitclient-rb/engine/events/events_manager.rb', line 33 def unregister(sdk_event) return unless @active_subscriptions.key?(sdk_event) @mutex.synchronize do @active_subscriptions.delete(sdk_event) end end |