Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
private var in_request = false
private var in_header = false
private var in_body = false
private var in_request = false
private var in_header = false
private var in_body = false
- private var current_header: FlatBuffer
- private var current_body: FlatBuffer
+ private var current_header = new Array[Writable]
+ private var current_body = new Array[Writable]
private var content_length = 0
private var current_length = 0
private var content_length = 0
private var current_length = 0
private fun parse_start do
in_request = true
# reset values
private fun parse_start do
in_request = true
# reset values
- current_header = new FlatBuffer
- current_body = new FlatBuffer
+ current_header.clear
+ current_body.clear
current_length = 0
content_length = 0
# next step is to find the header part
current_length = 0
content_length = 0
# next step is to find the header part
# split in CRLF
var parts = str.split("\r\n\r\n")
# first part go in the header
# split in CRLF
var parts = str.split("\r\n\r\n")
# first part go in the header
- current_header.append parts.shift
+ current_header.add parts.shift
# if there is more part we are done with headers
if not parts.is_empty then
# get content-length
# if there is more part we are done with headers
if not parts.is_empty then
# get content-length
- parse_content_length(current_header.write_to_string)
+ parse_content_length current_header.join
# next step if to parse body
in_header = false
in_body = true
# next step if to parse body
in_header = false
in_body = true
# We are receiving body parts.
private fun parse_body(str: String) do
current_length += str.length
# We are receiving body parts.
private fun parse_body(str: String) do
current_length += str.length
- current_body.append str
if current_length >= content_length then
parse_end
end
if current_length >= content_length then
parse_end
end
# We have reached the end of the body
private fun parse_end do
# We have reached the end of the body
private fun parse_end do
- var res = new FlatBuffer
- res.append current_header
+ var res = new FlatBuffer.with_capacity(content_length)
+ for ch in current_header do res.append ch.write_to_string
- res.append current_body
+ for cb in current_body do res.append cb.write_to_string
read_callback(res.write_to_string)
in_request = false
end
read_callback(res.write_to_string)
in_request = false
end