Class: MockRedis::Stream
- Inherits:
-
Object
- Object
- MockRedis::Stream
- Extended by:
- Forwardable
- Includes:
- Enumerable
- Defined in:
- lib/mock_redis/stream.rb,
lib/mock_redis/stream/id.rb
Defined Under Namespace
Classes: Id
Instance Attribute Summary collapse
-
#members ⇒ Object
Returns the value of attribute members.
Instance Method Summary collapse
- #add(id, values) ⇒ Object
- #each ⇒ Object
-
#initialize ⇒ Stream
constructor
A new instance of Stream.
- #last_id ⇒ Object
- #range(start, finish, reversed, *opts_in) ⇒ Object
- #trim(count) ⇒ Object
Constructor Details
#initialize ⇒ Stream
Returns a new instance of Stream.
15 16 17 18 |
# File 'lib/mock_redis/stream.rb', line 15 def initialize @members = Set.new @last_id = nil end |
Instance Attribute Details
#members ⇒ Object
Returns the value of attribute members.
11 12 13 |
# File 'lib/mock_redis/stream.rb', line 11 def members @members end |
Instance Method Details
#add(id, values) ⇒ Object
24 25 26 27 28 |
# File 'lib/mock_redis/stream.rb', line 24 def add(id, values) @last_id = MockRedis::Stream::Id.new(id, min: @last_id) members.add [@last_id, Hash[values.map { |k, v| [k.to_s, v.to_s] }]] @last_id.to_s end |
#each ⇒ Object
48 49 50 |
# File 'lib/mock_redis/stream.rb', line 48 def each members.each { |m| yield m } end |
#last_id ⇒ Object
20 21 22 |
# File 'lib/mock_redis/stream.rb', line 20 def last_id @last_id.to_s end |
#range(start, finish, reversed, *opts_in) ⇒ Object
36 37 38 39 40 41 42 43 44 45 46 |
# File 'lib/mock_redis/stream.rb', line 36 def range(start, finish, reversed, *opts_in) opts = opts_in, ['count'] start_id = MockRedis::Stream::Id.new(start) finish_id = MockRedis::Stream::Id.new(finish, sequence: Float::INFINITY) items = members .select { |m| (start_id <= m[0]) && (finish_id >= m[0]) } .map { |m| [m[0].to_s, m[1]] } items.reverse! if reversed return items.first(opts['count'].to_i) if opts.key?('count') items end |
#trim(count) ⇒ Object
30 31 32 33 34 |
# File 'lib/mock_redis/stream.rb', line 30 def trim(count) deleted = @members.size - count @members = @members.to_a[-count..-1].to_set deleted end |