Sha256: 4fffa0d76032f2fec9c3ce7a86f1aef184b5d8ffe0ae3a5e3449f4c43faf0735

Contents?: true

Size: 1.36 KB

Versions: 41

Compression:

Stored size: 1.36 KB

Contents

module Ably::Util
  # SafeDeferrable class provides a Deferrable that is safe to use for for public interfaces
  # of this client library.  Any exceptions raised in the success or failure callbacks are
  # caught and logged to the provided logger.
  #
  # An exception in a callback provided by a developer should not break this client library
  # and stop further execution of code.
  #
  class SafeDeferrable
    include Ably::Modules::SafeDeferrable

    attr_reader :logger

    def initialize(logger)
      @logger = logger
    end

    # Create a new {SafeDeferrable} and fail immediately with the provided error in the next eventloop cycle
    #
    # @param error [Ably::Exceptions::BaseAblyException, Ably::Models::ErrorInfo]   The error used to fail the newly created {SafeDeferrable}
    #
    # @return [SafeDeferrable]
    #
    def self.new_and_fail_immediately(logger, error)
      new(logger).tap do |deferrable|
        EventMachine.next_tick do
          deferrable.fail error
        end
      end
    end

    # Create a new {SafeDeferrable} and succeed immediately with the provided arguments in the next eventloop cycle
    #
    # @return [SafeDeferrable]
    #
    def self.new_and_succeed_immediately(logger, *args)
      new(logger).tap do |deferrable|
        EventMachine.next_tick do
          deferrable.succeed *args
        end
      end
    end
  end
end

Version data entries

41 entries across 41 versions & 2 rubygems

Version Path
ably-rest-1.2.4 lib/submodules/ably-ruby/lib/ably/util/safe_deferrable.rb
ably-1.2.4 lib/ably/util/safe_deferrable.rb
ably-rest-1.2.3 lib/submodules/ably-ruby/lib/ably/util/safe_deferrable.rb
ably-1.2.3 lib/ably/util/safe_deferrable.rb
ably-rest-1.2.2 lib/submodules/ably-ruby/lib/ably/util/safe_deferrable.rb
ably-1.2.2 lib/ably/util/safe_deferrable.rb
ably-rest-1.2.1 lib/submodules/ably-ruby/lib/ably/util/safe_deferrable.rb
ably-1.2.1 lib/ably/util/safe_deferrable.rb
ably-rest-1.2.0 lib/submodules/ably-ruby/lib/ably/util/safe_deferrable.rb
ably-1.2.0 lib/ably/util/safe_deferrable.rb
ably-rest-1.1.8 lib/submodules/ably-ruby/lib/ably/util/safe_deferrable.rb
ably-1.1.8 lib/ably/util/safe_deferrable.rb
ably-rest-1.1.7 lib/submodules/ably-ruby/lib/ably/util/safe_deferrable.rb
ably-1.1.7 lib/ably/util/safe_deferrable.rb
ably-rest-1.1.6 lib/submodules/ably-ruby/lib/ably/util/safe_deferrable.rb
ably-1.1.6 lib/ably/util/safe_deferrable.rb
ably-rest-1.1.5 lib/submodules/ably-ruby/lib/ably/util/safe_deferrable.rb
ably-1.1.5 lib/ably/util/safe_deferrable.rb
ably-rest-1.1.4 lib/submodules/ably-ruby/lib/ably/util/safe_deferrable.rb
ably-1.1.4 lib/ably/util/safe_deferrable.rb