Sha256: 734c639ebc91f37bfe10fce322730d9eb4f6e244c2b312188c2b58896c5e99d1

Contents?: true

Size: 946 Bytes

Versions: 9

Compression:

Stored size: 946 Bytes

Contents

require 'asir/transport/composite'

module ASIR
  class Transport
    # !SLIDE
    # Fallback Transport
    class Fallback < self
      include Composite

      def _send_message state
        result = sent = first_exception = nil
        transports.each do | transport |
          begin
            result = transport.send_message(state.message)
            sent = true
            break
          rescue *Error::Unrecoverable.modules
            raise
          rescue ::Exception => exc
            first_exception ||= exc
            _handle_send_message_exception! transport, state, exc
          end
        end
        unless sent
          if first_exception && @reraise_first_exception
            raise first_exception
          end
          raise FallbackError, "fallback failed"
        end
        state.result = Result.new(state.message, result)
      end
      class FallbackError < Error; end
    end
    # !SLIDE END
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
asir-1.2.11 lib/asir/transport/fallback.rb
asir-1.2.10 lib/asir/transport/fallback.rb
asir-1.2.9 lib/asir/transport/fallback.rb
asir-1.2.8 lib/asir/transport/fallback.rb
asir-1.2.7 lib/asir/transport/fallback.rb
asir-1.2.6 lib/asir/transport/fallback.rb
asir-1.2.5 lib/asir/transport/fallback.rb
asir-1.2.3 lib/asir/transport/fallback.rb
asir-1.2.2 lib/asir/transport/fallback.rb