module Typhoeus::Pool
The easy pool stores already initialized easy handles for future use. This is useful because creating them is expensive.
@api private
Public Class Methods
clear()
click to toggle source
Clear the pool
# File lib/typhoeus/pool.rb, line 47 def self.clear @mutex.synchronize { easies.clear } end
get()
click to toggle source
Return an easy from the pool.
@example Return easy.
Typhoeus::Pool.get
@return [ Ethon::Easy ] The easy.
# File lib/typhoeus/pool.rb, line 32 def self.get @mutex.synchronize do if @pid == Process.pid easies.pop else # Process has forked. Clear all easies to avoid sockets being # shared between processes. @pid = Process.pid easies.clear nil end end || Ethon::Easy.new end
release(easy)
click to toggle source
Releases easy into the pool. The easy handle is reset before it gets back in.
@example Release easy.
Typhoeus::Pool.release(easy)
# File lib/typhoeus/pool.rb, line 19 def self.release(easy) easy.cookielist = "flush" # dump all known cookies to 'cookiejar' easy.cookielist = "all" # remove all cookies from memory for this handle easy.reset @mutex.synchronize { easies << easy } end
with_easy() { |easy| ... }
click to toggle source
Use yielded easy, will be released automatically afterwards.
@example Use easy.
Typhoeus::Pool.with_easy do |easy| # use easy end
# File lib/typhoeus/pool.rb, line 57 def self.with_easy(&block) easy = get yield easy ensure release(easy) if easy end
Private Class Methods
easies()
click to toggle source
# File lib/typhoeus/pool.rb, line 66 def self.easies @easies ||= [] end