| 72 | template<class ConstBufferSequence, |
| 73 | bool isRequest> |
| 74 | static |
| 75 | std::size_t |
| 76 | feed(ConstBufferSequence const& buffers, |
| 77 | basic_parser<isRequest>& parser, |
| 78 | error_code& ec) |
| 79 | { |
| 80 | beast::buffers_suffix< |
| 81 | ConstBufferSequence> cb{buffers}; |
| 82 | std::size_t used = 0; |
| 83 | for(;;) |
| 84 | { |
| 85 | auto const n = |
| 86 | parser.put(cb, ec); |
| 87 | if(ec) |
| 88 | return 0; |
| 89 | if(n == 0) |
| 90 | break; |
| 91 | cb.consume(n); |
| 92 | used += n; |
| 93 | if(parser.is_done()) |
| 94 | break; |
| 95 | if(buffer_bytes(cb) == 0) |
| 96 | break; |
| 97 | } |
| 98 | return used; |
| 99 | } |
| 100 | |
| 101 | template<class Parser> |
| 102 | void |