Sha256: b51c02caa8afe959911d3b685ad0e52898e4740e69fdf5a4392b4e62939ec97b

Contents?: true

Size: 1.19 KB

Versions: 13

Compression:

Stored size: 1.19 KB

Contents

# frozen_string_literal: true

module Polyphony
  # Common exception class for interrupting fibers. These exceptions allow
  # control of fibers. BaseException exceptions can encapsulate a value and thus
  # provide a way to interrupt long-running blocking operations while still
  # passing a value back to the call site. BaseException exceptions can also
  # references a cancel scope in order to allow correct bubbling of exceptions
  # through nested cancel scopes.
  class BaseException < ::Exception
    attr_reader :value

    def initialize(value = nil)
      @caller_backtrace = caller
      @value = value
    end

    def backtrace
      sanitize(@caller_backtrace)
    end
  end

  # MoveOn is used to interrupt a long-running blocking operation, while
  # continuing the rest of the computation.
  class MoveOn < BaseException; end

  # Cancel is used to interrupt a long-running blocking operation, bubbling the
  # exception up through cancel scopes and supervisors.
  class Cancel < BaseException; end

  # Terminate is used to interrupt a fiber once its parent fiber has terminated.
  class Terminate < BaseException; end

  # Restart is used to restart a fiber
  class Restart < BaseException; end
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
polyphony-0.43.11 lib/polyphony/core/exceptions.rb
polyphony-0.43.10 lib/polyphony/core/exceptions.rb
polyphony-0.43.9 lib/polyphony/core/exceptions.rb
polyphony-0.43.8 lib/polyphony/core/exceptions.rb
polyphony-0.43.6 lib/polyphony/core/exceptions.rb
polyphony-0.43.5 lib/polyphony/core/exceptions.rb
polyphony-0.43.4 lib/polyphony/core/exceptions.rb
polyphony-0.43.3 lib/polyphony/core/exceptions.rb
polyphony-0.43.2 lib/polyphony/core/exceptions.rb
polyphony-0.43.1 lib/polyphony/core/exceptions.rb
polyphony-0.43 lib/polyphony/core/exceptions.rb
polyphony-0.42 lib/polyphony/core/exceptions.rb
polyphony-0.41 lib/polyphony/core/exceptions.rb