Sha256: acbe870fbde7a30e1b3b1c453f9955e346cd8dcbbd7232b28ff1d76f0d79ae3f
Contents?: true
Size: 1.05 KB
Versions: 3
Compression:
Stored size: 1.05 KB
Contents
module DAP::Encoding CONTENT_LENGTH_HEADER = 'Content-Length' def self.decode(s) headers = {} loop do l = s.gets raise EOFError if l.nil? l = l.strip break if l.empty? name, value = l.split(':', 2) raise "Invalid header '#{l}'" unless value headers[name.strip] = value.strip end raise "No headers" unless headers.size raise "Missing content length" unless headers.key?(CONTENT_LENGTH_HEADER) cl = headers[CONTENT_LENGTH_HEADER].to_i raise "Invalid content length" unless cl.to_s == headers[CONTENT_LENGTH_HEADER] body = s.read(cl) values = JSON.parse(body) DAP::ProtocolMessage.from(values) end def self.encode(message) raise "Body must be a protocol message" unless message.is_a? DAP::ProtocolMessage headers = {} body = JSON.dump(message.to_wire) headers[CONTENT_LENGTH_HEADER] = body.size headers.map { |name, value| "#{name}: #{value}\r\n" }.join + "\r\n" + body end def self.decode_all(s) loop do yield decode(s) end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
ruby-dap-0.1.2 | lib/dap/encoding.rb |
ruby-dap-0.1.1 | lib/dap/encoding.rb |
ruby-dap-0.1.0 | lib/dap/encoding.rb |