Sha256: f4cf2e6913dce760ca33d4daf7ac2996857b878c56b88209f8243af13afb4415
Contents?: true
Size: 1.51 KB
Versions: 2
Compression:
Stored size: 1.51 KB
Contents
module Rpush module Daemon class Feeder extend Reflectable def self.start @stop = false if Rpush.config.embedded Thread.new { feed_forever } elsif Rpush.config.push enqueue_notifications else feed_forever end end def self.stop @stop = true interrupt_sleep end def self.interrupt_sleep interruptible_sleeper.interrupt_sleep end protected def self.feed_forever loop do enqueue_notifications interruptible_sleeper.sleep(Rpush.config.push_poll) break if stop? end Rpush::Daemon.store.release_connection end # :nocov: def self.stop? @stop end def self.enqueue_notifications begin idle = Rpush::Daemon::AppRunner.idle.map(&:app) return if idle.empty? notifications = Rpush::Daemon.store.deliverable_notifications(idle) Rpush::Daemon::AppRunner.enqueue(notifications) rescue StandardError => e Rpush.logger.error(e) reflect(:error, e) end end def self.interruptible_sleeper return @interruptible_sleeper if @interruptible_sleeper @interruptible_sleeper = InterruptibleSleep.new if Rpush.config.wakeup @interruptible_sleeper.enable_wake_on_udp Rpush.config.wakeup[:bind], Rpush.config.wakeup[:port] end @interruptible_sleeper end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
rpush-1.0.0-java | lib/rpush/daemon/feeder.rb |
rpush-1.0.0 | lib/rpush/daemon/feeder.rb |