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