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