lib/asir/transport.rb in asir-1.0.7 vs lib/asir/transport.rb in asir-1.0.8
- old
+ new
@@ -26,11 +26,11 @@
@message_count ||= 0; @message_count += 1
message.create_timestamp! if needs_message_timestamp? message
message.create_identifier! if needs_message_identifier? message
@before_send_message.call(self, message) if @before_send_message
relative_message_delay! message
- message_payload = encoder.dup.encode(message)
+ message_payload = encoder.prepare.encode(message)
opaque_result = _send_message(message, message_payload)
receive_result(message, opaque_result)
end
# !SLIDE
@@ -39,11 +39,11 @@
def receive_message stream
# $stderr.puts " #{$$} #{self} receive_message #{stream}"
@message_count ||= 0; @message_count += 1
additional_data = { }
if req_and_state = _receive_message(stream, additional_data)
- message = req_and_state[0] = encoder.dup.decode(req_and_state.first)
+ message = req_and_state[0] = encoder.prepare.decode(req_and_state.first)
message.additional_data!.update(additional_data) if message
if @after_receive_message
@after_receive_message.call(self, message)
end
end
@@ -57,25 +57,28 @@
def send_result result, stream, message_state
message = result.message
if @one_way && message.block
message.block.call(result)
else
- result.message = nil # avoid sending back entire Message.
- result_payload = decoder.dup.encode(result)
+ # avoid sending back entire Message.
+ result.message = nil unless @coder_needs_result_message
+ result_payload = decoder.prepare.encode(result)
_send_result(message, result, result_payload, stream, message_state)
end
end
+ attr_accessor :coder_needs_result_message
+
# !SLIDE END
# !SLIDE
# Transport#receive_result
# Receieve Result from stream:
# * Receive Result payload
# * Decode Result.
# * Extract Result result or exception.
def receive_result message, opaque_result
result_payload = _receive_result(message, opaque_result)
- result = decoder.dup.decode(result_payload)
+ result = decoder.prepare.decode(result_payload)
if result && ! message.one_way
if exc = result.exception
invoker.invoke!(exc, self)
else
if ! @one_way && message.block