Sha256: d046f2bb719ebd678161ccb598ec606c68ac5b883269ede75925c51e72f45927

Contents?: true

Size: 1.11 KB

Versions: 14

Compression:

Stored size: 1.11 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
      @exception_backtrace = exc.backtrace
    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

14 entries across 14 versions & 1 rubygems

Version Path
asir-1.1.8 lib/asir/result.rb
asir-1.1.7 lib/asir/result.rb
asir-1.1.6 lib/asir/result.rb
asir-1.1.5 lib/asir/result.rb
asir-1.1.4 lib/asir/result.rb
asir-1.1.3 lib/asir/result.rb
asir-1.1.2 lib/asir/result.rb
asir-1.1.1 lib/asir/result.rb
asir-1.1.0 lib/asir/result.rb
asir-1.0.8 lib/asir/result.rb
asir-1.0.7 lib/asir/result.rb
asir-1.0.6 lib/asir/result.rb
asir-1.0.5 lib/asir/result.rb
asir-1.0.4 lib/asir/result.rb