| 935 | |
| 936 | |
| 937 | Try<vector<Response>> decodeResponses(const string& s) |
| 938 | { |
| 939 | ResponseDecoder decoder; |
| 940 | |
| 941 | vector<Response> result; |
| 942 | |
| 943 | auto appendResult = [&result](const deque<http::Response*>& responses) { |
| 944 | foreach (Response* response, responses) { |
| 945 | result.push_back(*response); |
| 946 | delete response; |
| 947 | } |
| 948 | }; |
| 949 | |
| 950 | appendResult(decoder.decode(s.data(), s.length())); |
| 951 | appendResult(decoder.decode("", 0)); |
| 952 | |
| 953 | if (decoder.failed()) { |
| 954 | return Error("Decoding failed"); |
| 955 | } |
| 956 | |
| 957 | if (result.empty()) { |
| 958 | return Error("No response decoded"); |
| 959 | } |
| 960 | |
| 961 | return result; |
| 962 | } |
| 963 | |
| 964 | |
| 965 | namespace query { |