Class: Kaisoku::LSP::MessageIO

Inherits:
Object
  • Object
show all
Defined in:
lib/kaisoku/lsp/message_io.rb

Instance Method Summary collapse

Constructor Details

#initialize(input: $stdin, output: $stdout) ⇒ MessageIO

Returns a new instance of MessageIO.



8
9
10
11
# File 'lib/kaisoku/lsp/message_io.rb', line 8

def initialize(input: $stdin, output: $stdout)
  @input = input
  @output = output
end

Instance Method Details

#readObject



13
14
15
16
17
18
19
# File 'lib/kaisoku/lsp/message_io.rb', line 13

def read
  headers = read_headers
  length = headers['content-length'].to_i
  return nil if length.zero?

  JSON.parse(@input.read(length))
end

#write(payload) ⇒ Object



21
22
23
24
25
# File 'lib/kaisoku/lsp/message_io.rb', line 21

def write(payload)
  json = JSON.generate(payload)
  @output.write("Content-Length: #{json.bytesize}\r\n\r\n#{json}")
  @output.flush
end