Sha256: bcded4aef4c81b1998a261457ebd7fd92ab2ecab91d335ec55ce8dfe534859ed

Contents?: true

Size: 956 Bytes

Versions: 27

Compression:

Stored size: 956 Bytes

Contents

module ASIR
  # !SLIDE
  # Message
  #
  # Encapsulate the Ruby message from the Client to be handled by the Service.
  class Message
    include AdditionalData, Identity, CodeMore
    attr_accessor :receiver, :receiver_class, :selector, :arguments, :block
    attr_accessor :result, :one_way

    def initialize r, s, a, b, p
      @receiver, @selector, @arguments = r, s, a
      @block = b if b
      @receiver_class = @receiver.class
      @one_way = p._one_way if p
    end

    def invoke!
      @result = Result.new(self, @receiver.__send__(@selector, *@arguments))
    rescue *Error::Unforwardable.unforwardable => exc
      @result = Result.new(self, nil, Error::Unforwardable.new(exc))
    rescue ::Exception => exc
      @result = Result.new(self, nil, exc)
    end

    # Optional: Specifies the Numeric seconds or absolute Time for the Transport to delay the Message until actual invocation.
    attr_accessor :delay
  end
  # !SLIDE END
end

Version data entries

27 entries across 27 versions & 1 rubygems

Version Path
asir-1.2.8 lib/asir/message.rb
asir-1.2.7 lib/asir/message.rb
asir-1.2.6 lib/asir/message.rb
asir-1.2.5 lib/asir/message.rb
asir-1.2.3 lib/asir/message.rb
asir-1.2.2 lib/asir/message.rb
asir-1.2.1 lib/asir/message.rb
asir-1.2.0 lib/asir/message.rb
asir-1.1.12 lib/asir/message.rb
asir-1.1.11 lib/asir/message.rb
asir-1.1.10 lib/asir/message.rb
asir-1.1.9 lib/asir/message.rb
asir-1.1.8 lib/asir/message.rb
asir-1.1.7 lib/asir/message.rb
asir-1.1.6 lib/asir/message.rb
asir-1.1.5 lib/asir/message.rb
asir-1.1.4 lib/asir/message.rb
asir-1.1.3 lib/asir/message.rb
asir-1.1.2 lib/asir/message.rb
asir-1.1.1 lib/asir/message.rb