class Liebre::Actor::RPC::Client::Pending
Constants
- Request
Attributes
pending[R]
Public Class Methods
new()
click to toggle source
# File lib/liebre/actor/rpc/client/pending.rb, line 12 def initialize @pending = {} end
Public Instance Methods
add(timeout) { |correlation_id| ... }
click to toggle source
# 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()
click to toggle source
# 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)
click to toggle source
# 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
Private Instance Methods
current_time()
click to toggle source
# File lib/liebre/actor/rpc/client/pending.rb, line 55 def current_time Time.now end
new_correlation_id()
click to toggle source
# File lib/liebre/actor/rpc/client/pending.rb, line 47 def new_correlation_id SecureRandom.urlsafe_base64 end
new_ivar()
click to toggle source
# File lib/liebre/actor/rpc/client/pending.rb, line 51 def new_ivar Concurrent::IVar.new end
store(correlation_id, ivar, timeout)
click to toggle source
# File lib/liebre/actor/rpc/client/pending.rb, line 41 def store correlation_id, ivar, timeout expiration_time = current_time + timeout pending[correlation_id] = Request.new(ivar, expiration_time) end