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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c433f1cc453123f151e4a89363b6a6ebcb02e991
4
- data.tar.gz: a541740a352cdc8c3a4e6474d6a7f0d69b4979a2
3
+ metadata.gz: 5d547634ad86e1896fe07ea84d2fbe3c6811982e
4
+ data.tar.gz: 3e43af63f440f32ee6ab7a7c725ad4abdb58f7af
5
5
  SHA512:
6
- metadata.gz: fa4fcfa73e8d0311c2534cdd759fd8150a2fc96868faa271b96b26f12a125084822cd131816dd886df66e95ebecc89a0b474ae1297843b3bc5f5c5db5a3de50a
7
- data.tar.gz: 39cd7430e0855f9048e6294cfa38cf7137d83172a6e5af997c4b7b14b4919bdf411a0d25838336325fe99695b02c7593f232373ad7cc5bee6f08c9f9eed8eefc
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, &blk).callback do |items|
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, &blk).callback do |items|
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
- @timers[bucket_id] = EM::Timer.new(@bucket_max_age, timeout_callback(bucket_id))
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
@@ -1,5 +1,5 @@
1
1
  module EventMachine
2
2
  module Bucketer
3
- VERSION = "0.2.1"
3
+ VERSION = "0.2.2"
4
4
  end
5
5
  end
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.1
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-03 00:00:00.000000000 Z
12
+ date: 2014-11-04 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: eventmachine