Unify response reading to avoid duplicate code.
This commit is contained in:
parent
1233e6eb9d
commit
d722892ca6
|
@ -121,19 +121,7 @@ public:
|
||||||
asio::write(socket_, asio::buffer(command), error_code);
|
asio::write(socket_, asio::buffer(command), error_code);
|
||||||
check_asio_error(error_code);
|
check_asio_error(error_code);
|
||||||
|
|
||||||
RespParser parser;
|
return receive_response();
|
||||||
asio::streambuf buffer;
|
|
||||||
bool cont{false};
|
|
||||||
|
|
||||||
do {
|
|
||||||
buffer.consume(buffer.size());
|
|
||||||
asio::read_until(socket_, buffer, '\n');
|
|
||||||
check_asio_error(error_code);
|
|
||||||
std::istream stream{&buffer};
|
|
||||||
cont = parser.parse(stream);
|
|
||||||
} while (cont);
|
|
||||||
|
|
||||||
return parser.result();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
std::vector<Result> send_batch(const std::vector<std::string>& commands)
|
std::vector<Result> send_batch(const std::vector<std::string>& commands)
|
||||||
|
@ -146,10 +134,22 @@ public:
|
||||||
asio::write(socket_, asio::buffer(raw_commands), error_code);
|
asio::write(socket_, asio::buffer(raw_commands), error_code);
|
||||||
check_asio_error(error_code);
|
check_asio_error(error_code);
|
||||||
|
|
||||||
std::vector<Result> results;
|
return receive_responses(commands.size());
|
||||||
asio::streambuf buffer;
|
}
|
||||||
|
|
||||||
for (size_t i{}; i < commands.size(); i++) {
|
private:
|
||||||
|
Result receive_response()
|
||||||
|
{
|
||||||
|
return receive_responses(1).front();
|
||||||
|
}
|
||||||
|
|
||||||
|
std::vector<Result> receive_responses(size_t num)
|
||||||
|
{
|
||||||
|
asio::error_code error_code;
|
||||||
|
asio::streambuf buffer;
|
||||||
|
std::vector<Result> results;
|
||||||
|
|
||||||
|
for (size_t i{}; i < num; i++) {
|
||||||
RespParser parser;
|
RespParser parser;
|
||||||
bool cont{false};
|
bool cont{false};
|
||||||
|
|
||||||
|
@ -162,13 +162,12 @@ public:
|
||||||
cont = parser.parse(stream);
|
cont = parser.parse(stream);
|
||||||
} while (cont);
|
} while (cont);
|
||||||
|
|
||||||
results.push_back(std::move(parser.result()));
|
results.push_back(parser.result());
|
||||||
}
|
}
|
||||||
|
|
||||||
return results;
|
return results;
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
|
||||||
const std::string host_;
|
const std::string host_;
|
||||||
const std::string port_;
|
const std::string port_;
|
||||||
const size_t timeout_;
|
const size_t timeout_;
|
||||||
|
|
Reference in a new issue