Class: Liebre::Actor::RPC::Client::Pending
- Inherits:
-
Object
- Object
- Liebre::Actor::RPC::Client::Pending
- Defined in:
- lib/liebre/actor/rpc/client/pending.rb
Defined Under Namespace
Classes: Request
Instance Method Summary collapse
- #add(timeout) ⇒ Object
- #expire ⇒ Object
- #finish(correlation_id, response) ⇒ Object
-
#initialize ⇒ Pending
constructor
A new instance of Pending.
Constructor Details
#initialize ⇒ Pending
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 |
#expire ⇒ Object
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 |