Sha256: dad40c179b36334dc8eae28a5c095f9e843b2ff33b43c03a3071da28f04ac585

Contents?: true

Size: 1.56 KB

Versions: 16

Compression:

Stored size: 1.56 KB

Contents

module AMQ
  module Protocol
    class Error < StandardError
      DEFAULT_MESSAGE = "AMQP error".freeze

      def self.inherited(subclass)
        @_subclasses ||= []
        @_subclasses << subclass
      end # self.inherited(subclazz)

      def self.subclasses_with_values
        @_subclasses.select{ |k| defined?(k::VALUE) }
      end # self.subclasses_with_values

      def self.[](code)
        if result = subclasses_with_values.detect { |klass| klass::VALUE == code }
          result
        else
          raise "No such exception class for code #{code}" unless result
        end # if
      end # self.[]

      def initialize(message = self.class::DEFAULT_MESSAGE)
        super(message)
      end
    end

    class FrameTypeError < Protocol::Error
      def initialize(types)
        super("Must be one of #{types.inspect}")
      end
    end

    class EmptyResponseError < Protocol::Error
      DEFAULT_MESSAGE = "Empty response received from the server."

      def initialize(message = self.class::DEFAULT_MESSAGE)
        super(message)
      end
    end

    class BadResponseError < Protocol::Error
      def initialize(argument, expected, actual)
        super("Argument #{argument} has to be #{expected.inspect}, was #{data.inspect}")
      end
    end

    class SoftError < Protocol::Error
      def self.inherited(subclass)
        Error.inherited(subclass)
      end # self.inherited(subclass)
    end

    class HardError < Protocol::Error
      def self.inherited(subclass)
        Error.inherited(subclass)
      end # self.inherited(subclass)
    end
  end
end

Version data entries

16 entries across 16 versions & 1 rubygems

Version Path
amq-protocol-2.3.3 lib/amq/protocol/exceptions.rb
amq-protocol-2.3.2 lib/amq/protocol/exceptions.rb
amq-protocol-2.3.1 lib/amq/protocol/exceptions.rb
amq-protocol-2.3.0 lib/amq/protocol/exceptions.rb
amq-protocol-2.3.0.rc2 lib/amq/protocol/exceptions.rb
amq-protocol-2.3.0.rc1 lib/amq/protocol/exceptions.rb
amq-protocol-2.2.0 lib/amq/protocol/exceptions.rb
amq-protocol-2.1.0 lib/amq/protocol/exceptions.rb
amq-protocol-2.0.1 lib/amq/protocol/exceptions.rb
amq-protocol-2.0.0 lib/amq/protocol/exceptions.rb
amq-protocol-1.9.2 lib/amq/protocol/exceptions.rb
amq-protocol-1.9.1 lib/amq/protocol/exceptions.rb
amq-protocol-1.9.0 lib/amq/protocol/exceptions.rb
amq-protocol-1.8.0 lib/amq/protocol/exceptions.rb
amq-protocol-1.7.0 lib/amq/protocol/exceptions.rb
amq-protocol-1.6.0 lib/amq/protocol/exceptions.rb