class Pakyow::Data::Subscribers::Adapters::Redis::Pipeliner

@api private

Constants

TIMEOUT

Public Class Methods

new(redis) click to toggle source
# File lib/pakyow/data/subscribers/adapters/redis/pipeliner.rb, line 12
def initialize(redis)
  @redis = redis
  @commands = []
end
pipeline(redis) { |pipeliner| ... } click to toggle source
# File lib/pakyow/data/subscribers/adapters/redis/pipeliner.rb, line 31
def self.pipeline(redis)
  pipeliner = Pipeliner.new(redis)

  redis.pipelined do
    yield pipeliner
  end

  pipeliner.wait
end

Public Instance Methods

enqueue(future) click to toggle source
# File lib/pakyow/data/subscribers/adapters/redis/pipeliner.rb, line 17
def enqueue(future)
  @commands << { future: future, callback: Proc.new }
end
wait() click to toggle source
# File lib/pakyow/data/subscribers/adapters/redis/pipeliner.rb, line 21
def wait
  @commands.map { |command|
    while command[:future].value.is_a?(::Redis::FutureNotReady)
      sleep TIMEOUT
    end

    command[:callback].call(command[:future].value)
  }
end