checkpoint

This commit is contained in:
Avi Kivity
2014-08-14 09:20:03 +03:00
parent 919e9c4214
commit 7ea696c29e
2 changed files with 7 additions and 2 deletions

View File

@@ -80,7 +80,9 @@ public:
}
void parse_header(future<tmp_buf> f_header) {
auto header = f_header.get();
std::cout << ">>>" << sstring(header.begin(), header.end()) << "<<<\n";
if (header.size() == 2 && header[0] == '\r' && header[1] == '\n') {
std::cout << "req end\n";
return generate_response();
}
std::cmatch match;
@@ -106,6 +108,7 @@ public:
respond();
}
void respond() {
std::cout << "responding\n";
_write_buf.write(_response_line.begin(), _response_line.size()).then(
[this] (future<size_t> n) mutable {
write_response_headers(_response_headers.begin()).then(

View File

@@ -525,6 +525,7 @@ void input_stream_buffer<CharType>::read_until_part(size_t limit, CharType eol,
auto i = std::find(_buf.get() + _begin, _buf.get() + _begin + to_search, eol);
auto nr_found = i - (_buf.get() + _begin);
if (i != _buf.get() + _begin + to_search || completed + nr_found == limit) {
std::cout << "read_until_part: found " << nr_found << "\n";
if (i != _buf.get() + _begin + to_search && completed + nr_found < limit) {
assert(*i == eol);
++i; // include eol in result
@@ -535,15 +536,16 @@ void input_stream_buffer<CharType>::read_until_part(size_t limit, CharType eol,
}
advance(nr_found);
completed += nr_found;
std::cout << "fulfilling promise with '" << std::string(out.begin(), out.begin() + completed) << "'\n";
pr.set_value(std::move(out).prefix(completed));
} else {
std::cout << "not found, scheduling again\n";
if (!out.owning() && _end == _size) {
// wrapping around, must allocate
auto new_out = tmp_buf(limit);
std::copy(out.begin(), out.end(), new_out.get_write());
out = std::move(new_out);
}
if (!out.owning()) {
if (out.owning()) {
std::copy(_buf.get() + _begin, _buf.get() + _end, out.get_write() + completed);
completed += _end - _begin;
_begin = _end = 0;