Sha256: 12e2409f49132b5cca8ac0798df74cb49d3ea6e3c9e66e4f5bdca37d70dd47a4

Contents?: true

Size: 1.01 KB

Versions: 3

Compression:

Stored size: 1.01 KB

Contents

module Mnemosyne
  class Sweeper
    include Helper

    def initialize(port, config, status, logger)
      @status = status
      @config = config
      @logger = logger
    end

    def run
      if @config.empty?
        puts "Please specify a valid mneme configuration file (ex: -c config.rb)"
        EM.stop
        exit
      end

      sweeper = Proc.new do
        Fiber.new do
          current = epoch_name(@config['namespace'], 0, @config['length'])
          @logger.info "Sweeping old filters, current epoch: #{current}"

          conn = Redis.new
          @config['periods'].times do |n|
            name = epoch_name(@config['namespace'], n + @config['periods'], @config['length'])

            conn.del(name)
            @logger.info "Removed: #{name}"
          end
          conn.client.disconnect
        end.resume
      end

      sweeper.call
      EM.add_periodic_timer(@config['length']) { sweeper.call }

      @logger.info "Started Mnemosyne::Sweeper with #{@config['length']}s interval"
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
mneme-0.6.0 lib/mneme/sweeper.rb
mneme-0.5.2 lib/mneme/sweeper.rb
mneme-0.5.1 lib/mneme/sweeper.rb