# File lib/celluloid/condition.rb, line 5 def initialize(condition, task, mailbox, timeout) @condition = condition @task = task @mailbox = mailbox @timeout = timeout end
# File lib/celluloid/condition.rb, line 13 def <<(message) @mailbox << message end
# File lib/celluloid/condition.rb, line 17 def wait begin message = @mailbox.receive(@timeout) do |msg| msg.is_a?(SignalConditionRequest) && msg.task == Thread.current end rescue TimedOut raise ConditionError, "timeout after #{@timeout.inspect} seconds" end until message message.value end