Sha256: c3694f35bc23d50841b037c9c457dc99c8ccc7d39b6c5f5e57a5a610663fe06f
Contents?: true
Size: 1.08 KB
Versions: 4
Compression:
Stored size: 1.08 KB
Contents
require 'thread' module Typhoeus # The easy pool stores already initialized # easy handles for future use. This is useful # because creating them is quite expensive. # # @api private module Pool extend self @mutex = Mutex.new # Releases easy into the pool. The easy handle is # reset before it gets back in. # # @example Release easy. # hydra.release_easy(easy) def release(easy) easy.reset @mutex.synchronize { easies << easy } end # Return an easy from the pool. # # @example Return easy. # hydra.get_easy # # @return [ Ethon::Easy ] The easy. def get @mutex.synchronize { easies.pop } || Ethon::Easy.new end def clear @mutex.synchronize { easies.clear } end def with_easy(&block) easy = get yield easy ensure release(easy) if easy end private # Return the easy pool. # # @example Return easy pool. # hydra.easy_pool # # @return [ Array<Ethon::Easy> ] The easy pool. def easies @easies ||= [] end end end
Version data entries
4 entries across 4 versions & 1 rubygems
Version | Path |
---|---|
typhoeus-0.6.6 | lib/typhoeus/pool.rb |
typhoeus-0.6.5 | lib/typhoeus/pool.rb |
typhoeus-0.6.4 | lib/typhoeus/pool.rb |
typhoeus-0.6.3 | lib/typhoeus/pool.rb |