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 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