Sha256: 88b14eba332d00f2c666af9bb5ae7fae007b7f00fa5531e632f203f1736b81fd

Contents?: true

Size: 1.24 KB

Versions: 6

Compression:

Stored size: 1.24 KB

Contents

module Rdkafka
  # Error returned by the underlying rdkafka library.
  class RdkafkaError < RuntimeError
    # The underlying raw error response
    # @return [Integer]
    attr_reader :rdkafka_response, :message_prefix

    # @private
    def initialize(response, message_prefix=nil)
      raise TypeError.new("Response has to be an integer") unless response.is_a? Integer
      @rdkafka_response = response
      @message_prefix = message_prefix
    end

    # This error's code, for example `:partition_eof`, `:msg_size_too_large`.
    # @return [Symbol]
    def code
      code = Rdkafka::Bindings.rd_kafka_err2name(@rdkafka_response).downcase
      if code[0] == "_"
        code[1..-1].to_sym
      else
        code.to_sym
      end
    end

    # Human readable representation of this error.
    # @return [String]
    def to_s
      message_prefix_part = if message_prefix
                       "#{message_prefix} - "
                     else
                       ''
                     end
      "#{message_prefix_part}#{Rdkafka::Bindings.rd_kafka_err2str(@rdkafka_response)} (#{code})"
    end

    # Whether this error indicates the partition is EOF.
    # @return [Boolean]
    def is_partition_eof?
      code == :partition_eof
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
rdkafka-0.4.2 lib/rdkafka/error.rb
rdkafka-0.4.1 lib/rdkafka/error.rb
rdkafka-0.4.0 lib/rdkafka/error.rb
rdkafka-0.3.5 lib/rdkafka/error.rb
rdkafka-0.3.4 lib/rdkafka/error.rb
rdkafka-0.3.3 lib/rdkafka/error.rb