Sha256: cdcd352ca9759c267260f8febbb3566373501f977c15aa08fddda6fb478f1fe2
Contents?: true
Size: 1.08 KB
Versions: 3
Compression:
Stored size: 1.08 KB
Contents
module EbDeployer class EventPoller include Utils POLL_INTERVAL = 15 def initialize(event_source) @event_source = event_source end def get_anchor @event_source.get_anchor end def poll(from_anchor, &block) handled = Set.new loop do @event_source.fetch_events(from_anchor) do |events| # events from event source is latest first order to_be_handled = [] reached_anchor = false events.each do |event| if digest(event) == digest(from_anchor) reached_anchor = true end if !handled.include?(digest(event)) && !reached_anchor to_be_handled << event end end to_be_handled.reverse.each do |event| yield(event) handled << digest(event) end !reached_anchor end sleep POLL_INTERVAL end end private def digest(event) return nil unless event event = event.to_h if event.respond_to?(:to_h) event.to_json end end end
Version data entries
3 entries across 3 versions & 2 rubygems
Version | Path |
---|---|
man_eb_deployer-0.8.0 | lib/eb_deployer/event_poller.rb |
eb_deployer_updated-0.8.1 | lib/eb_deployer/event_poller.rb |
eb_deployer_updated-0.8.0 | lib/eb_deployer/event_poller.rb |