Sha256: 85ea8dd5ddda9663cf88d824476d79e0212e089db19eb76b0b8aae98a99a61b4

Contents?: true

Size: 1.22 KB

Versions: 61

Compression:

Stored size: 1.22 KB

Contents

module Spider

    # TODO: remove
    class PeriodicRunner #:nodoc:
        attr_reader :runner_thread
        
        def initialize(sleep_time=nil)
            @entries = []
            @sleep_time = sleep_time
            @mutex = Mutex.new
            if (sleep_time)
                @runner_thread = Thread.new{
                    while (true)
                        sleep(sleep_time)
                        run
                    end
                }
            end
        end
        
        def add(secs, &proc)
            proc.call
            @mutex.synchronize {
                @entries << {
                    :secs => secs,
                    :proc => proc,
                    :last => Time.now.to_i
                }
            }
        end
        
        def run
            Spider::Logger.debug("Periodic_runner")
            @mutex.synchronize {
                Spider::Logger.debug("In synchro")
                @entries.each do |entry|
                    if (!entry[:last] || (entry[:last] + secs) < Time.now.to_i )
                        proc.call
                        entry[:last] = Time.now.to_i
                    end
                end
            }
        end
        
    end
    

    
    
end

Version data entries

61 entries across 61 versions & 1 rubygems

Version Path
spiderfw-1.0.1 lib/spiderfw/utils/periodic_runner.rb
spiderfw-1.0.0 lib/spiderfw/utils/periodic_runner.rb
spiderfw-0.6.39 lib/spiderfw/utils/periodic_runner.rb
spiderfw-0.6.38 lib/spiderfw/utils/periodic_runner.rb
spiderfw-0.6.37 lib/spiderfw/utils/periodic_runner.rb
spiderfw-0.6.35 lib/spiderfw/utils/periodic_runner.rb
spiderfw-0.6.34 lib/spiderfw/utils/periodic_runner.rb
spiderfw-0.6.33 lib/spiderfw/utils/periodic_runner.rb
spiderfw-0.6.32 lib/spiderfw/utils/periodic_runner.rb
spiderfw-0.6.31 lib/spiderfw/utils/periodic_runner.rb
spiderfw-0.6.30 lib/spiderfw/utils/periodic_runner.rb
spiderfw-0.6.29 lib/spiderfw/utils/periodic_runner.rb
spiderfw-0.6.28 lib/spiderfw/utils/periodic_runner.rb
spiderfw-0.6.27 lib/spiderfw/utils/periodic_runner.rb
spiderfw-0.6.26 lib/spiderfw/utils/periodic_runner.rb
spiderfw-0.6.26.pre1 lib/spiderfw/utils/periodic_runner.rb
spiderfw-0.6.25 lib/spiderfw/utils/periodic_runner.rb
spiderfw-0.6.24 lib/spiderfw/utils/periodic_runner.rb
spiderfw-0.6.23 lib/spiderfw/utils/periodic_runner.rb
spiderfw-0.6.22 lib/spiderfw/utils/periodic_runner.rb