Class: ASIR::Transport::Stream
- Inherits:
-
ASIR::Transport
- Object
- ASIR::Transport
- ASIR::Transport::Stream
- Defined in:
- lib/asir/transport/stream.rb
Overview
!SLIDE Stream Transport
Base class handles Messages on a stream. Stream Transports require a Coder that encodes to and from String payloads.
Direct Known Subclasses
Constant Summary
Constants included from ASIR::ThreadVariable
ASIR::ThreadVariable::DEBUG, ASIR::ThreadVariable::EMPTY_HASH, ASIR::ThreadVariable::SETTER
Instance Attribute Summary
Attributes inherited from ASIR::Transport
#after_invoke_message, #after_receive_message, #around_serve_message, #before_send_message, #coder_needs_result_message, #decoder, #encoder, #invoker, #message_count, #needs_message_identifier, #needs_message_timestamp, #on_exception, #on_result_exception, #one_way, #running, #verbose
Attributes included from Log
Instance Method Summary collapse
- #_serve_stream!(in_stream, out_stream) ⇒ Object
-
#serve_stream!(in_stream, out_stream) ⇒ Object
!SLIDE Serve all Messages from a stream.
-
#serve_stream_message!(in_stream, out_stream) ⇒ Object
!SLIDE Serve a Message from a stream.
-
#stream_eof?(stream) ⇒ Boolean
Subclasses can override this method.
Methods inherited from ASIR::Transport
#_after_invoke_message, #_subclass_responsibility, #around_serve_message!, #initialize, #invoke_message!, #needs_message_identifier?, #needs_message_timestamp?, #receive_message, #receive_result, #send_message, #send_result, #serve_message!, #stop!, #with_force_stop!, #with_server_signals!
Methods included from Log
#_log, #_log_enabled=, #_log_enabled?, #_log_format, #_log_result, enabled, enabled=, included
Methods included from Initialization
Methods included from AdditionalData
#[], #[]=, #_additional_data, #additional_data, #additional_data!, #additional_data=, included
Methods included from Message::Delay
#relative_message_delay!, #wait_for_delay!
Methods included from ASIR::ThreadVariable
Constructor Details
This class inherits a constructor from ASIR::Transport
Instance Method Details
#_serve_stream!(in_stream, out_stream) ⇒ Object
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
# File 'lib/asir/transport/stream.rb', line 19 def _serve_stream! in_stream, out_stream while @running && ! stream_eof?(in_stream) begin in_stream, out_stream rescue *Error::Unrecoverable.modules raise rescue Error::Terminate => err @running = false _log [ :serve_stream_terminate, err ] rescue ::Exception => err _log [ :serve_stream_error, err, err.backtrace ] raise err end end end |
#serve_stream!(in_stream, out_stream) ⇒ Object
!SLIDE Serve all Messages from a stream.
12 13 14 15 16 17 |
# File 'lib/asir/transport/stream.rb', line 12 def serve_stream! in_stream, out_stream with_server_signals! do @running = true _serve_stream! in_stream, out_stream end end |
#serve_stream_message!(in_stream, out_stream) ⇒ Object
!SLIDE Serve a Message from a stream.
42 43 44 |
# File 'lib/asir/transport/stream.rb', line 42 def in_stream, out_stream in_stream, out_stream end |
#stream_eof?(stream) ⇒ Boolean
Subclasses can override this method.
36 37 38 |
# File 'lib/asir/transport/stream.rb', line 36 def stream_eof? stream stream.eof? end |