Sha256: debeff24f40e4c8776b617764390bca835512ab99b536c1588d2e91bcf4c700b

Contents?: true

Size: 1.2 KB

Versions: 9

Compression:

Stored size: 1.2 KB

Contents

require 'eventmachine'

module FeedTorrents
  class Reactor
    include LogFunctions

    def self.start!
      new.start
    end

    def initialize
      info "Initialize new Reactor version #{FeedTorrents::VERSION}"
    end

    def start
      info 'Starting eventmachine loop'

      EventMachine.run do
        factory.lists.each do |list|
          next unless list.enabled?

          EM.add_periodic_timer(list.interval) { list.download_new_items }

          EM.schedule { list.download_new_items }
        end

        EM.add_periodic_timer(1800) { debug '-- MARK --' }

        EM.add_periodic_timer(3600) do
          FeedTorrents.store.prune
        end

        # EM.add_timer(3) do
        #     puts 'I waited 3 seconds'
        #     # EM.stop_event_loop
        # end

        stop_block = Proc.new do
          EM.add_timer(0) do
            EventMachine.stop
          end
        end

        Signal.trap('INT') do
          info 'received sigint signal'
          stop_block.call
        end

        Signal.trap('TERM') do
          info 'received sigterm signal'
          stop_block.call
        end
      end
    end

    private

    def factory
      @factory ||= Feed::Factory.new
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
feed_torrents-0.2.2 lib/feed_torrents/reactor.rb
feed_torrents-0.2.1 lib/feed_torrents/reactor.rb
feed_torrents-0.2.0 lib/feed_torrents/reactor.rb
feed_torrents-0.1.5 lib/feed_torrents/reactor.rb
feed_torrents-0.1.4 lib/feed_torrents/reactor.rb
feed_torrents-0.1.3 lib/feed_torrents/reactor.rb
feed_torrents-0.1.2 lib/feed_torrents/reactor.rb
feed_torrents-0.1.1 lib/feed_torrents/reactor.rb
feed_torrents-0.1.0 lib/feed_torrents/reactor.rb