Parent

Files

Class/Module Index [+]

Quicksearch

Concurrent::Actor::Behaviour::Pausing

Allows to pause actors on errors. When paused all arriving messages are collected and processed after the actor is resumed or reset. Resume will simply continue with next message. Reset also reinitialized context. @note TODO missing example

Public Class Methods

new(core, subsequent, core_options) click to toggle source
# File lib/concurrent/actor/behaviour/pausing.rb, line 11
def initialize(core, subsequent, core_options)
  super core, subsequent, core_options
  @paused   = false
  @deferred = []
end

Public Instance Methods

on_envelope(envelope) click to toggle source
# File lib/concurrent/actor/behaviour/pausing.rb, line 21
def on_envelope(envelope)
  case envelope.message
  when :pause!
    pause!
  when :paused?
    paused?
  when :resume!
    resume!
  when :reset!
    reset!
  when :restart!
    restart!
  else
    if paused?
      @deferred << envelope
      MESSAGE_PROCESSED
    else
      pass envelope
    end
  end
end
on_event(public, event) click to toggle source
# File lib/concurrent/actor/behaviour/pausing.rb, line 72
def on_event(public, event)
  event_name, _ = event
  reject_deferred if event_name == :terminated
  super public, event
end
pause!(error = nil) click to toggle source
# File lib/concurrent/actor/behaviour/pausing.rb, line 43
def pause!(error = nil)
  do_pause
  broadcast true, error || :paused
  true
end
paused?() click to toggle source
# File lib/concurrent/actor/behaviour/pausing.rb, line 17
def paused?
  @paused
end
reset!() click to toggle source
# File lib/concurrent/actor/behaviour/pausing.rb, line 56
def reset!
  return false unless paused?
  broadcast(false, :resetting)
  do_reset
  broadcast(true, :reset)
  true
end
restart!() click to toggle source
# File lib/concurrent/actor/behaviour/pausing.rb, line 64
def restart!
  return false unless paused?
  broadcast(false, :restarting)
  do_restart
  broadcast(true, :restarted)
  true
end
resume!() click to toggle source
# File lib/concurrent/actor/behaviour/pausing.rb, line 49
def resume!
  return false unless paused?
  do_resume
  broadcast(true, :resumed)
  true
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.