Sha256: 871956332d92e74357ada4ceec997749382abbddf98af0f7bb1f7c2ae6ca777e

Contents?: true

Size: 1.19 KB

Versions: 3

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

3 entries across 3 versions & 1 rubygems

Version Path
polyphony-0.40 lib/polyphony/core/exceptions.rb
polyphony-0.39 lib/polyphony/core/exceptions.rb
polyphony-0.38 lib/polyphony/core/exceptions.rb