Class: Farcall::JsonTransport

Inherits:
Transport show all
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

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

#closeObject



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