module Actor::Module::SuspendResume
Attributes
suspend_queue[W]
suspended[RW]
Public Class Methods
included(cls)
click to toggle source
# File lib/actor/module/suspend_resume.rb, line 4 def self.included cls cls.class_exec do prepend Configure prepend Handle prepend Initialize end end
Public Instance Methods
handle_resume()
click to toggle source
# File lib/actor/module/suspend_resume.rb, line 19 def handle_resume self.suspended = false until suspend_queue.empty? deferred_message = suspend_queue.deq send.(deferred_message, address) end end
handle_suspend()
click to toggle source
# File lib/actor/module/suspend_resume.rb, line 15 def handle_suspend self.suspended = true end
message_deferred?(message=nil, wait: nil)
click to toggle source
# File lib/actor/module/suspend_resume.rb, line 29 def message_deferred? message=nil, wait: nil non_block = wait == false begin msg = suspend_queue.deq true rescue ThreadError end if message.nil? msg ? true : false else msg == message end end
suspend_queue()
click to toggle source
# File lib/actor/module/suspend_resume.rb, line 48 def suspend_queue @suspend_queue ||= Messaging::Queue::Substitute.build end
suspended?()
click to toggle source
# File lib/actor/module/suspend_resume.rb, line 44 def suspended? @suspended == true end