em-bucketer 0.2.1 → 0.2.2
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.
- 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
|