| 864 | |
| 865 | |
| 866 | Try<vector<Response>> decodeResponses(const string& s) |
| 867 | { |
| 868 | ResponseDecoder decoder; |
| 869 | |
| 870 | vector<Response> result; |
| 871 | |
| 872 | auto appendResult = [&result](const deque<http::Response*>& responses) { |
| 873 | foreach (Response* response, responses) { |
| 874 | result.push_back(*response); |
| 875 | delete response; |
| 876 | } |
| 877 | }; |
| 878 | |
| 879 | appendResult(decoder.decode(s.data(), s.length())); |
| 880 | appendResult(decoder.decode("", 0)); |
| 881 | |
| 882 | if (decoder.failed()) { |
| 883 | return Error("Decoding failed"); |
| 884 | } |
| 885 | |
| 886 | if (result.empty()) { |
| 887 | return Error("No response decoded"); |
| 888 | } |
| 889 | |
| 890 | return result; |
| 891 | } |
| 892 | |
| 893 | |
| 894 | namespace query { |