Module: Actor::Module::SuspendResume

Defined in:
lib/actor/module/suspend_resume.rb,
lib/actor/module/suspend_resume/handle.rb,
lib/actor/module/suspend_resume/controls.rb,
lib/actor/module/suspend_resume/configure.rb,
lib/actor/module/suspend_resume/assertions.rb,
lib/actor/module/suspend_resume/initialize.rb

Defined Under Namespace

Modules: Assertions, Configure, Controls, Handle, Initialize

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#suspend_queueObject



31
32
33
# File 'lib/actor/module/suspend_resume.rb', line 31

def suspend_queue
  @suspend_queue ||= Messaging::Queue::Substitute.build
end

#suspendedObject

Returns the value of attribute suspended.



14
15
16
# File 'lib/actor/module/suspend_resume.rb', line 14

def suspended
  @suspended
end

Class Method Details

.included(cls) ⇒ Object



4
5
6
7
8
9
10
11
12
# File 'lib/actor/module/suspend_resume.rb', line 4

def self.included cls
  cls.class_exec do
    prepend Configure
    prepend Handle
    prepend Initialize

    IncludeAssertions.(Assertions, self)
  end
end

Instance Method Details

#handle_resumeObject



21
22
23
24
25
26
27
28
29
# File 'lib/actor/module/suspend_resume.rb', line 21

def handle_resume
  self.suspended = false

  until suspend_queue.empty?
    deferred_message = suspend_queue.deq

    send.(deferred_message, address)
  end
end

#handle_suspendObject



17
18
19
# File 'lib/actor/module/suspend_resume.rb', line 17

def handle_suspend
  self.suspended = true
end