Sha256: ff21df930c25a6194033aec4c47e2a4e2d91fe836234927ddc9895f95d437c3b

Contents?: true

Size: 1.99 KB

Versions: 8

Compression:

Stored size: 1.99 KB

Contents

# frozen_string_literal: true

module AMQP
  class Client
    # All errors raised inherit from this class
    class Error < StandardError
      # Raised when a frame that wasn't expected arrives
      class UnexpectedFrame < Error
        def initialize(expected, actual)
          super "Expected frame type '#{expected}' but got '#{actual}'"
        end
      end

      # Raised when a frame doesn't end with 206
      class UnexpectedFrameEnd < Error
        def initialize(actual)
          super "Expected frame end 206 but got '#{actual}'"
        end
      end

      # Should never be raised as we support all official frame types
      class UnsupportedFrameType < Error
        def initialize(type)
          super "Unsupported frame type '#{type}'"
        end
      end

      # Raised if a frame is received but not implemented
      class UnsupportedMethodFrame < Error
        def initialize(class_id, method_id)
          super "Unsupported class/method: #{class_id} #{method_id}"
        end
      end

      # Depending on close level a ConnectionClosed or ChannelClosed error is returned
      class Closed < Error
        def self.new(id, level, code, reason, classid = 0, methodid = 0)
          case level
          when :connection
            ConnectionClosed.new(code, reason, classid, methodid)
          when :channel
            ChannelClosed.new(id, code, reason, classid, methodid)
          else raise ArgumentError, "invalid level '#{level}'"
          end
        end
      end

      # Raised if channel is already closed
      class ChannelClosed < Error
        def initialize(id, code, reason, classid = 0, methodid = 0)
          super "Channel[#{id}] closed (#{code}) #{reason} (#{classid}/#{methodid})"
        end
      end

      # Raised if connection is unexpectedly closed
      class ConnectionClosed < Error
        def initialize(code, reason, classid = 0, methodid = 0)
          super "Connection closed (#{code}) #{reason} (#{classid}/#{methodid})"
        end
      end
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
amqp-client-1.1.6 lib/amqp/client/errors.rb
amqp-client-1.1.5 lib/amqp/client/errors.rb
amqp-client-1.1.4 lib/amqp/client/errors.rb
amqp-client-1.1.3 lib/amqp/client/errors.rb
amqp-client-1.1.2 lib/amqp/client/errors.rb
amqp-client-1.1.1 lib/amqp/client/errors.rb
amqp-client-1.1.0 lib/amqp/client/errors.rb
amqp-client-1.0.2 lib/amqp/client/errors.rb