Class: Liebre::Actor::RPC::Client::Pending

Inherits:
Object
  • Object
show all
Defined in:
lib/liebre/actor/rpc/client/pending.rb

Defined Under Namespace

Classes: Request

Instance Method Summary collapse

Constructor Details

#initializePending

Returns a new instance of Pending.



12
13
14
# File 'lib/liebre/actor/rpc/client/pending.rb', line 12

def initialize
  @pending = {}
end

Instance Method Details

#add(timeout) ⇒ Object



16
17
18
19
20
21
22
23
# File 'lib/liebre/actor/rpc/client/pending.rb', line 16

def add timeout
  new_ivar.tap do |ivar|
    correlation_id = new_correlation_id()
    yield(correlation_id)

    store(correlation_id, ivar, timeout)
  end
end

#expireObject



31
32
33
34
35
36
37
# File 'lib/liebre/actor/rpc/client/pending.rb', line 31

def expire
  now = current_time

  pending.delete_if do |_correlation_id, request|
    now > request.expiration_time
  end
end

#finish(correlation_id, response) ⇒ Object



25
26
27
28
29
# File 'lib/liebre/actor/rpc/client/pending.rb', line 25

def finish correlation_id, response
  pending.delete(correlation_id).tap do |request|
    request.ivar.set(response) if request
  end
end