Class: Redis::ReceiptedPipeline::Thunk

Inherits:
Object
  • Object
show all
Defined in:
lib/redis/structured-multi.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(pipeline, mbulk_reply) ⇒ Thunk

Returns a new instance of Thunk.



28
29
30
31
32
# File 'lib/redis/structured-multi.rb', line 28

def initialize(pipeline, mbulk_reply)
  @pipeline = pipeline
  @mbulk_reply = mbulk_reply
  @evaled_receipts = {}
end

Instance Attribute Details

#pipelineObject (readonly)

Returns the value of attribute pipeline.



34
35
36
# File 'lib/redis/structured-multi.rb', line 34

def pipeline
  @pipeline
end

Instance Method Details

#===(o) ⇒ Object



36
37
38
39
40
41
42
43
# File 'lib/redis/structured-multi.rb', line 36

def ===( o )
  if o.kind_of? Receipt
    receipt_pipeline = o.instance_variable_get(:@pipeline)
    @pipeline.equal?(receipt_pipeline)
  else
    super
  end
end

#[](receipt) ⇒ Object



45
46
47
48
49
50
51
52
53
54
# File 'lib/redis/structured-multi.rb', line 45

def []( receipt )
  receipt_token = receipt.instance_variable_get(:@token)
  return @evaled_receipts[receipt_token] if @evaled_receipts.has_key?( receipt_token )
  
  response = @mbulk_reply[ receipt_token ]
  receipt.instance_variable_get(:@commands).inject(response) do |o, (m, args, bl)|
    evaled_args = args.eqfmap(self){ |receipt| self[ receipt ] }
    o.send(m, *evaled_args, &bl)
  end
end