typhoeus 0.1.4 → 0.1.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/ext/typhoeus/typhoeus_multi.c +8 -0
- data/lib/typhoeus.rb +1 -1
- data/lib/typhoeus/hydra.rb +11 -2
- metadata +1 -1
@@ -124,6 +124,13 @@ static void rb_curl_multi_run(VALUE self, CURLM *multi_handle, int *still_runnin
|
|
124
124
|
multi_read_info( self, multi_handle );
|
125
125
|
}
|
126
126
|
|
127
|
+
static VALUE fire_and_forget(VALUE self) {
|
128
|
+
CurlMulti *curl_multi;
|
129
|
+
Data_Get_Struct(self, CurlMulti, curl_multi);
|
130
|
+
rb_curl_multi_run( self, curl_multi->multi, &(curl_multi->running) );
|
131
|
+
// curl_multi_perform(curl_multi->multi, 0);
|
132
|
+
}
|
133
|
+
|
127
134
|
static VALUE multi_perform(VALUE self) {
|
128
135
|
CURLMcode mcode;
|
129
136
|
CurlMulti *curl_multi;
|
@@ -215,4 +222,5 @@ void init_typhoeus_multi() {
|
|
215
222
|
rb_define_private_method(klass, "multi_perform", multi_perform, 0);
|
216
223
|
rb_define_private_method(klass, "multi_cleanup", multi_cleanup, 0);
|
217
224
|
rb_define_private_method(klass, "active_handle_count", active_handle_count, 0);
|
225
|
+
rb_define_method(klass, "fire_and_forget", fire_and_forget, 0);
|
218
226
|
}
|
data/lib/typhoeus.rb
CHANGED
data/lib/typhoeus/hydra.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
module Typhoeus
|
2
2
|
class Hydra
|
3
3
|
def initialize(initial_pool_size = 10)
|
4
|
+
@memoize_requests = true
|
4
5
|
@multi = Multi.new
|
5
6
|
@easy_pool = []
|
6
7
|
initial_pool_size.times { @easy_pool << Easy.new }
|
@@ -20,12 +21,16 @@ module Typhoeus
|
|
20
21
|
def clear_stubs
|
21
22
|
@stubs = []
|
22
23
|
end
|
24
|
+
|
25
|
+
def fire_and_forget
|
26
|
+
@multi.fire_and_forget
|
27
|
+
end
|
23
28
|
|
24
29
|
def queue(request)
|
25
30
|
return if assign_to_stub(request)
|
26
31
|
|
27
32
|
if request.method == :get
|
28
|
-
if @memoized_requests.has_key?
|
33
|
+
if @memoize_requests && @memoized_requests.has_key?(request.url)
|
29
34
|
if response = @retrieved_from_cache[request.url]
|
30
35
|
request.response = response
|
31
36
|
request.call_handlers
|
@@ -33,7 +38,7 @@ module Typhoeus
|
|
33
38
|
@memoized_requests[request.url] << request
|
34
39
|
end
|
35
40
|
else
|
36
|
-
@memoized_requests[request.url] = []
|
41
|
+
@memoized_requests[request.url] = [] if @memoize_requests
|
37
42
|
get_from_cache_or_queue(request)
|
38
43
|
end
|
39
44
|
else
|
@@ -52,6 +57,10 @@ module Typhoeus
|
|
52
57
|
@memoized_requests = {}
|
53
58
|
@retrieved_from_cache = {}
|
54
59
|
end
|
60
|
+
|
61
|
+
def disable_memoization
|
62
|
+
@memoize_requests = false
|
63
|
+
end
|
55
64
|
|
56
65
|
def cache_getter(&block)
|
57
66
|
@cache_getter = block
|