em-bucketer 0.2.1 → 0.2.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +24 -1
- data/lib/em-bucketer/ordered/base.rb +12 -4
- data/lib/em-bucketer/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5d547634ad86e1896fe07ea84d2fbe3c6811982e
|
4
|
+
data.tar.gz: 3e43af63f440f32ee6ab7a7c725ad4abdb58f7af
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: dba33622fb1b8c81c227b106df449b71c05c258d21044fe7ae3634b498c7ffbae561a74a4722c7a50d1974a5ee339647039ce443974def220ffdd3926982b30d
|
7
|
+
data.tar.gz: c02603694010d1b0e470a04d7dd774837a3f60dcf10b2bcb840baf862fb8ac77b06828f9d9a0963fb07c77bcf85a23fee832aae19f9ee37c5d9d573e90bbd9b6
|
data/README.md
CHANGED
@@ -28,8 +28,10 @@ order in which they were put in.
|
|
28
28
|
### Usage
|
29
29
|
|
30
30
|
```ruby
|
31
|
-
require 'em-bucketer'
|
31
|
+
require 'em-bucketer/ordered'
|
32
32
|
EM.run do
|
33
|
+
|
34
|
+
## InMemory with pop_all example
|
33
35
|
bucketer = EM::Bucketer::Ordered::InMemory.new(:bucket_threshold_size => 5)
|
34
36
|
|
35
37
|
bucketer.on_bucket_full do |bucket_id|
|
@@ -48,6 +50,26 @@ EM.run do
|
|
48
50
|
bucketer.add_item("1", {:foo => :bar})
|
49
51
|
bucketer.add_item("1", {:bar => :foo})
|
50
52
|
bucketer.add_item("1", {:bar => :foo})
|
53
|
+
|
54
|
+
## Redis with pop_count example
|
55
|
+
bucketer = EM::Bucketer::Ordered::Redis.new("my_prefix", :bucket_threshold_size => 5)
|
56
|
+
|
57
|
+
bucketer.on_bucket_full do |bucket_id|
|
58
|
+
p "yay bucket #{bucket_id} filled up!"
|
59
|
+
|
60
|
+
bucketer.pop_count(bucket_id, 5) do |items|
|
61
|
+
EM.stop
|
62
|
+
items.each do |item|
|
63
|
+
p "got back #{item}"
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
bucketer.add_item("1", {:foo => :bar})
|
69
|
+
bucketer.add_item("1", {:foo => :bar})
|
70
|
+
bucketer.add_item("1", {:foo => :bar})
|
71
|
+
bucketer.add_item("1", {:bar => :foo})
|
72
|
+
bucketer.add_item("1", {:bar => :foo})
|
51
73
|
end
|
52
74
|
```
|
53
75
|
|
@@ -62,6 +84,7 @@ not guarantee that you get back items in the same order that they went in.
|
|
62
84
|
```ruby
|
63
85
|
require 'em-bucketer'
|
64
86
|
EM.run do
|
87
|
+
|
65
88
|
bucketer = EM::Bucketer::InMemory.new(:bucket_threshold_size => 5)
|
66
89
|
|
67
90
|
bucketer.on_bucket_full do |bucket_id|
|
@@ -42,10 +42,10 @@ module EventMachine::Bucketer
|
|
42
42
|
# @yield [Array] the first `count`
|
43
43
|
# items in the bucket
|
44
44
|
def pop_count(bucket_id, count, reset_timer: true, &blk)
|
45
|
+
reset_timer(bucket_id) if reset_timer
|
45
46
|
EM::Completion.new.tap do |c|
|
46
47
|
c.callback(&blk) if block_given?
|
47
|
-
pop_count_from_db(bucket_id, count
|
48
|
-
reset_timer(bucket_id) if reset_timer
|
48
|
+
pop_count_from_db(bucket_id, count).callback do |items|
|
49
49
|
c.succeed items
|
50
50
|
end.errback do |e|
|
51
51
|
c.fail e
|
@@ -63,7 +63,7 @@ module EventMachine::Bucketer
|
|
63
63
|
clear_timer(bucket_id)
|
64
64
|
EM::Completion.new.tap do |c|
|
65
65
|
c.callback(&blk) if block_given?
|
66
|
-
pop_all_from_db(bucket_id
|
66
|
+
pop_all_from_db(bucket_id).callback do |items|
|
67
67
|
c.succeed items
|
68
68
|
end.errback do |e|
|
69
69
|
c.fail e
|
@@ -152,6 +152,12 @@ module EventMachine::Bucketer
|
|
152
152
|
end
|
153
153
|
end
|
154
154
|
|
155
|
+
def bucket_empty?(bucket_id, &blk)
|
156
|
+
bucket_size_from_db(bucket_id).callback do |size|
|
157
|
+
blk.call size == 0
|
158
|
+
end
|
159
|
+
end
|
160
|
+
|
155
161
|
def check_bucket_full(bucket_id)
|
156
162
|
bucket_full?(bucket_id) do |is_full|
|
157
163
|
if is_full
|
@@ -184,7 +190,9 @@ module EventMachine::Bucketer
|
|
184
190
|
def reset_timer(bucket_id)
|
185
191
|
return unless @bucket_max_age
|
186
192
|
clear_timer(bucket_id)
|
187
|
-
|
193
|
+
bucket_empty?(bucket_id) do |is_empty|
|
194
|
+
@timers[bucket_id] = EM::Timer.new(@bucket_max_age, timeout_callback(bucket_id)) unless is_empty
|
195
|
+
end
|
188
196
|
end
|
189
197
|
end
|
190
198
|
end
|
data/lib/em-bucketer/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: em-bucketer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Richard Heycock
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2014-11-
|
12
|
+
date: 2014-11-04 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: eventmachine
|