mirror of
https://github.com/boostorg/redis.git
synced 2026-01-19 04:42:09 +00:00
Unifies the signatures of async functions.
This commit is contained in:
14
README.md
14
README.md
@@ -54,7 +54,7 @@ auto co_main(config const& cfg) -> net::awaitable<void>
|
||||
response<std::string> resp;
|
||||
|
||||
// Executes the request.
|
||||
co_await conn->async_exec(req, resp, net::deferred);
|
||||
co_await conn->async_exec(req, resp);
|
||||
conn->cancel();
|
||||
|
||||
std::cout << "PING: " << std::get<0>(resp).value() << std::endl;
|
||||
@@ -98,7 +98,7 @@ receiver(std::shared_ptr<connection> conn) -> net::awaitable<void>
|
||||
while (conn->will_reconnect()) {
|
||||
|
||||
// Reconnect to channels.
|
||||
co_await conn->async_exec(req, ignore, net::deferred);
|
||||
co_await conn->async_exec(req, ignore);
|
||||
|
||||
// Loop reading Redis pushes.
|
||||
for (;;) {
|
||||
@@ -246,14 +246,14 @@ response<
|
||||
Where both are passed to `async_exec` as showed elsewhere
|
||||
|
||||
```cpp
|
||||
co_await conn->async_exec(req, resp, net::deferred);
|
||||
co_await conn->async_exec(req, resp);
|
||||
```
|
||||
|
||||
If the intention is to ignore responses altogether use `ignore`
|
||||
|
||||
```cpp
|
||||
// Ignores the response
|
||||
co_await conn->async_exec(req, ignore, net::deferred);
|
||||
co_await conn->async_exec(req, ignore);
|
||||
```
|
||||
|
||||
Responses that contain nested aggregates or heterogeneous data
|
||||
@@ -296,7 +296,7 @@ response<
|
||||
...
|
||||
> resp;
|
||||
|
||||
co_await conn->async_exec(req, resp, net::deferred);
|
||||
co_await conn->async_exec(req, resp);
|
||||
```
|
||||
|
||||
Everything else stays pretty much the same.
|
||||
@@ -336,7 +336,7 @@ response<
|
||||
exec_resp_type, // exec
|
||||
> resp;
|
||||
|
||||
co_await conn->async_exec(req, resp, net::deferred);
|
||||
co_await conn->async_exec(req, resp);
|
||||
```
|
||||
|
||||
For a complete example see cpp20_containers.cpp.
|
||||
@@ -384,7 +384,7 @@ using other types
|
||||
```cpp
|
||||
// Receives any RESP3 simple or aggregate data type.
|
||||
boost::redis::generic_response resp;
|
||||
co_await conn->async_exec(req, resp, net::deferred);
|
||||
co_await conn->async_exec(req, resp);
|
||||
```
|
||||
|
||||
For example, suppose we want to retrieve a hash data structure
|
||||
|
||||
@@ -574,7 +574,7 @@ public:
|
||||
async_run(
|
||||
config const& cfg = {},
|
||||
Logger l = Logger{},
|
||||
CompletionToken token = CompletionToken{})
|
||||
CompletionToken&& token = {})
|
||||
{
|
||||
cfg_ = cfg;
|
||||
resv_.set_config(cfg);
|
||||
@@ -612,8 +612,8 @@ public:
|
||||
* bytes.
|
||||
*/
|
||||
template <class CompletionToken = asio::default_completion_token_t<executor_type>>
|
||||
auto async_receive(CompletionToken token = CompletionToken{})
|
||||
{ return receive_channel_.async_receive(std::move(token)); }
|
||||
auto async_receive(CompletionToken&& token = {})
|
||||
{ return receive_channel_.async_receive(std::forward<CompletionToken>(token)); }
|
||||
|
||||
/** @brief Receives server pushes synchronously without blocking.
|
||||
*
|
||||
@@ -677,7 +677,7 @@ public:
|
||||
async_exec(
|
||||
request const& req,
|
||||
Response& resp = ignore,
|
||||
CompletionToken&& token = CompletionToken{})
|
||||
CompletionToken&& token = {})
|
||||
{
|
||||
return this->async_exec(req, any_adapter(resp), std::forward<CompletionToken>(token));
|
||||
}
|
||||
@@ -692,7 +692,7 @@ public:
|
||||
async_exec(
|
||||
request const& req,
|
||||
any_adapter adapter,
|
||||
CompletionToken&& token = CompletionToken{})
|
||||
CompletionToken&& token = {})
|
||||
{
|
||||
auto& adapter_impl = adapter.impl_;
|
||||
BOOST_ASSERT_MSG(req.get_expected_responses() <= adapter_impl.supported_response_size, "Request and response have incompatible sizes.");
|
||||
@@ -937,9 +937,9 @@ private:
|
||||
{ return !notifier_.is_open();}
|
||||
|
||||
template <class CompletionToken>
|
||||
auto async_wait(CompletionToken token)
|
||||
auto async_wait(CompletionToken&& token)
|
||||
{
|
||||
return notifier_.async_receive(std::move(token));
|
||||
return notifier_.async_receive(std::forward<CompletionToken>(token));
|
||||
}
|
||||
|
||||
//private:
|
||||
@@ -1013,7 +1013,8 @@ private:
|
||||
return asio::async_compose
|
||||
< CompletionToken
|
||||
, void(system::error_code)
|
||||
>(detail::reader_op<this_type, Logger>{this, l}, token, writer_timer_);
|
||||
>(detail::reader_op<this_type, Logger>{this, l},
|
||||
std::forward<CompletionToken>(token), writer_timer_);
|
||||
}
|
||||
|
||||
template <class CompletionToken, class Logger>
|
||||
@@ -1022,7 +1023,7 @@ private:
|
||||
return asio::async_compose
|
||||
< CompletionToken
|
||||
, void(system::error_code)
|
||||
>(detail::writer_op<this_type, Logger>{this, l}, token, writer_timer_);
|
||||
>(detail::writer_op<this_type, Logger>{this, l}, std::forward<CompletionToken>(token), writer_timer_);
|
||||
}
|
||||
|
||||
[[nodiscard]] bool coalesce_requests()
|
||||
@@ -1252,7 +1253,7 @@ public:
|
||||
|
||||
/// Calls `boost::redis::basic_connection::async_run`.
|
||||
template <class CompletionToken = asio::deferred_t>
|
||||
auto async_run(config const& cfg, logger l, CompletionToken token = {})
|
||||
auto async_run(config const& cfg, logger l, CompletionToken&& token = {})
|
||||
{
|
||||
return asio::async_initiate<
|
||||
CompletionToken, void(boost::system::error_code)>(
|
||||
@@ -1264,8 +1265,8 @@ public:
|
||||
|
||||
/// Calls `boost::redis::basic_connection::async_receive`.
|
||||
template <class CompletionToken = asio::deferred_t>
|
||||
auto async_receive(CompletionToken token = {})
|
||||
{ return impl_.async_receive(std::move(token)); }
|
||||
auto async_receive(CompletionToken&& token = {})
|
||||
{ return impl_.async_receive(std::forward<CompletionToken>(token)); }
|
||||
|
||||
/// Calls `boost::redis::basic_connection::receive`.
|
||||
std::size_t receive(system::error_code& ec)
|
||||
|
||||
Reference in New Issue
Block a user