Sha256: d61ea0ca90fc2a93dc44ab787df65c9a3eba3813fe822da67b0351e28c41c650

Contents?: true

Size: 1.18 KB

Versions: 11

Compression:

Stored size: 1.18 KB

Contents

module PipeRpc
  class Hub::Request
    class Error
      def initialize(error)
        @error = error
      end

      attr_reader :error

      def code
        case @error
        when NoServerError then -32604
        when method_call_error? && ::NoMethodError then -32601
        when method_call_error? && ::ArgumentError then -32602
        when InternalError then -32605
        else -32603
        end
      end

      def message
        @error.message
      end

      def backtrace
        @error.backtrace.to_a.dup.tap do |backtrace|
          # In ruby, backtraces of argument errors have the location of the
          # method definition and not from where it is called as first location
          # in the backtrace. To normalize argument and no method errors,
          # remove the first location for argument errors.
          backtrace.shift if @error.is_a?(::ArgumentError) and not Object.const_defined?(:MRUBY_VERSION)
        end
      end

      def method_call_error?
        if Object.const_defined?(:MRUBY_VERSION)
          backtrace.first.nil?
        else
          backtrace.first.split(':').first(2) == [CALL_FILE, CALL_LINENO.to_s]
        end
      end
    end
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
pipe_rpc-2.5.0 lib/pipe_rpc/hub_request_error.rb
pipe_rpc-2.4.0 lib/pipe_rpc/hub_request_error.rb
pipe_rpc-2.3.0 lib/pipe_rpc/hub_request_error.rb
pipe_rpc-2.2.3 lib/pipe_rpc/hub_request_error.rb
pipe_rpc-2.2.2 lib/pipe_rpc/hub_request_error.rb
pipe_rpc-2.2.1 lib/pipe_rpc/hub_request_error.rb
pipe_rpc-2.2.0 lib/pipe_rpc/hub_request_error.rb
pipe_rpc-2.1.0 lib/pipe_rpc/hub_request_error.rb
pipe_rpc-2.0.0 lib/pipe_rpc/hub_request_error.rb
pipe_rpc-1.1.2 lib/pipe_rpc/hub_request_error.rb
pipe_rpc-1.1.1 lib/pipe_rpc/hub_request_error.rb