Sha256: f1d2b224dbcb816c975258ebc2fc13abdfeb6f9d8917acda3cdcb15ccff4b73a

Contents?: true

Size: 1.03 KB

Versions: 1

Compression:

Stored size: 1.03 KB

Contents

require 'broker/utility'

module Broker
  class Launcher
    
   def initialize
     @poller = Broker::Poller.new
     @finished = false     
   end
   
   def run
     puts "launcher is running"
     @poller.start
   end
   
   def stop
     @finished = true     
     @poller.terminate
     puts "launcher stopped"
   end 
    
  end
  
  class Poller
    include Utility
    
    def initialize
      @finished = false
      @wait_time = Broker.poll_interval
      @folder = Broker.queue
    end
    
    def terminate
      @finished = true
      if @thread
        t = @thread
        @thread = nil
        wait 1
        t.value
        puts "Polling thread terminated"
      end
    end
    
    def start
      @thread ||= safe_thread("poller") do 
        pause_first
        
        while !@finished
          puts "Checking for new files in #{@folder}"
          wait
        end
      end
    end
    
    private
    
    def pause_first
      sleep 5
    end
    
    def wait(dur=nil)
      sleep dur || @wait_time
    end
  end
  
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
broker-0.0.9 lib/broker/launcher.rb