Class: Farcall::JsonTransport
- Includes:
- TransportBase
- Defined in:
- lib/farcall/json_transport.rb
Overview
The transport that uses delimited texts formatted with JSON. Delimiter should be a character sequence that will never appear in data, by default “x00” is used. Also several nnn can be used, most JSON codecs never insert several empty strings
Instance Attribute Summary
Attributes inherited from Transport
#on_abort, #on_close, #on_data_received
Instance Method Summary collapse
- #close ⇒ Object
-
#initialize(delimiter: "\x00", **params) ⇒ JsonTransport
constructor
Create json transport, see Farcall::Transpor#create for parameters.
- #on_data_received=(block) ⇒ Object
- #send_data(hash) ⇒ Object
Methods included from TransportBase
#close_connection, #setup_streams
Methods inherited from Transport
#closed?, create, #receive_data
Constructor Details
#initialize(delimiter: "\x00", **params) ⇒ JsonTransport
Create json transport, see Farcall::Transpor#create for parameters
94 95 96 97 98 |
# File 'lib/farcall/json_transport.rb', line 94 def initialize delimiter: "\x00", **params setup_streams **params @delimiter = delimiter @dlength = -delimiter.length end |
Instance Method Details
#close ⇒ Object
113 114 115 116 117 118 119 120 |
# File 'lib/farcall/json_transport.rb', line 113 def close if !@closing @closing = true close_connection @thread and @thread.join @thread = nil end end |
#on_data_received=(block) ⇒ Object
100 101 102 103 104 105 106 107 |
# File 'lib/farcall/json_transport.rb', line 100 def on_data_received= block super if block && !@thread @thread = Thread.start { load_loop } end end |
#send_data(hash) ⇒ Object
109 110 111 |
# File 'lib/farcall/json_transport.rb', line 109 def send_data hash @output << JSON.unparse(hash) + @delimiter end |