Final set of questions, I hope.
1. If you write something like
aedis::request req;
std::tuplestd::string> res;
req.push("LPOP", "something_not_a_list"); // will cause an error
co_await conn.async_exec(req, adapt(res));
You seem to get an error code reported. The server does send an error
response with diagnostics, but I haven't found a way to access that message.
Is there any way?
2. I've modified cpp20_subscriber to add another task that sends commands
with async_exec while reading subscription replies. If any of the commands
issued with async_exec contain any errors (like the LPOP above), the program
crashes with a "conn->cmds_ != 0" assertion.
3. I've seen other Redis (async) libraries implementing connection pools.
Unless I'm mistaken, it seems likely that some of the user base will
eventually require this feature. I see some overlap between the queuing
system you have in place in connection and the responsibilities of
the connection
pool (I'd usually implement this kind of queueing at the
connection pool level).
What's your view of this?
a. Is connection pooling planned in the future for Aedis? Or is it
considered the
responsibility of a higher-level component?
b. In the latter case, would that component have to make use of
the low-level
API?
Regards,
Ruben.