Sha256: e4585a1eea3d2dfdadc49b8299d6a4a3685c97b0a49c28fd330b99ed6ad00fb6

Contents?: true

Size: 1.19 KB

Versions: 15

Compression:

Stored size: 1.19 KB

Contents

module ASIR
  # !SLIDE
  # Result
  #
  # Encapsulate the result returned to the Client.
  class Result
    include AdditionalData, Identity, CodeMore::Result
    attr_accessor :message, :result, :exception
    # Optional: Opaque data about the server that processed the Message.
    attr_accessor :server

    def initialize msg, res = nil, exc = nil
      @message = msg; @result = res
      @exception = exc && EncapsulatedException.new(exc)
      @identifier = @message.identifier
    end
  end
  # !SLIDE END

  # !SLIDE
  # Encapsulated Exception
  #
  # Encapsulates exceptions raised in the Service.
  class EncapsulatedException
    include ObjectResolving, AdditionalData
    attr_accessor :exception_class, :exception_message, :exception_backtrace

    def initialize exc
      @exception_class     = exc.class.name
      @exception_message   = exc.message
      # Map backtrace Location objects to Strings to support RBX.
      @exception_backtrace = exc.backtrace.map{|x| x.to_s}
    end

    def invoke!
      raise resolve_object(@exception_class), @exception_message, @exception_backtrace
    end

    def construct!
      invoke!
    rescue ::Exception => exc
      exc
    end
  end
  # !SLIDE END
end

Version data entries

15 entries across 15 versions & 1 rubygems

Version Path
asir-1.2.11 lib/asir/result.rb
asir-1.2.10 lib/asir/result.rb
asir-1.2.9 lib/asir/result.rb
asir-1.2.8 lib/asir/result.rb
asir-1.2.7 lib/asir/result.rb
asir-1.2.6 lib/asir/result.rb
asir-1.2.5 lib/asir/result.rb
asir-1.2.3 lib/asir/result.rb
asir-1.2.2 lib/asir/result.rb
asir-1.2.1 lib/asir/result.rb
asir-1.2.0 lib/asir/result.rb
asir-1.1.12 lib/asir/result.rb
asir-1.1.11 lib/asir/result.rb
asir-1.1.10 lib/asir/result.rb
asir-1.1.9 lib/asir/result.rb