class Redis::PipelinedConnection

def initialize(pipeline, futures = [], exception: true)

def initialize(pipeline, futures = [], exception: true)
  @pipeline = pipeline
  @futures = futures
  @exception = exception
end

def multi

def multi
  transaction = MultiConnection.new(@pipeline, @futures)
  send_command([:multi])
  size = @futures.size
  yield transaction
  multi_future = MultiFuture.new(@futures[size..-1])
  @pipeline.call_v([:exec]) do |result|
    multi_future._set(result)
  end
  @futures << multi_future
  multi_future
end

def pipelined

def pipelined
  yield self
end

def send_blocking_command(command, timeout, &block)

def send_blocking_command(command, timeout, &block)
  future = Future.new(command, block, @exception)
  @pipeline.blocking_call_v(timeout, command) do |result|
    future._set(result)
  end
  @futures << future
  future
end

def send_command(command, &block)

def send_command(command, &block)
  future = Future.new(command, block, @exception)
  @pipeline.call_v(command) do |result|
    future._set(result)
  end
  @futures << future
  future
end

def synchronize

def synchronize
  yield self
end