Sha256: b9c7546f68a40240a600f29af317d65e1156d2c2b5e9aa4ed7a43bca402e2265
Contents?: true
Size: 884 Bytes
Versions: 2
Compression:
Stored size: 884 Bytes
Contents
module Celluloid class FiberStackError < StandardError; end # Tasks with a Fiber backend class TaskFiber < Task def create @fiber = Fiber.new do # FIXME: cannot use the writer as specs run inside normal Threads Thread.current[:celluloid_role] = :actor yield end end def signal Fiber.yield end # Resume a suspended task, giving it a value to return if needed def deliver(value) @fiber.resume value rescue SystemStackError => ex raise FiberStackError, "#{ex} (please see https://github.com/celluloid/celluloid/wiki/Fiber-stack-errors)" rescue FiberError => ex raise DeadTaskError, "cannot resume a dead task (#{ex})" end # Terminate this task def terminate super rescue FiberError # If we're getting this the task should already be dead end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
celluloid-0.14.1 | lib/celluloid/tasks/task_fiber.rb |
celluloid-0.14.1.pre | lib/celluloid/tasks/task_fiber.rb |