mirror of
https://github.com/Naios/continuable.git
synced 2025-12-06 16:56:44 +08:00
some work on the readme
This commit is contained in:
parent
8fb94f56bb
commit
9f300419d2
67
Readme.md
67
Readme.md
@ -1,2 +1,67 @@
|
||||
# Continuable
|
||||
> C++11 Continuation chains (Work )
|
||||
[](https://travis-ci.org/Naios/Continuable)
|
||||
|
||||
> C++11 Continuation chains (Work in progress)
|
||||
|
||||
This library aims to provide full support for **async continuation chains with callbacks**.
|
||||
|
||||
***
|
||||
|
||||
**Important note:** Everything is work in progress and the library is not ready to be use yet, most showed examples are not working yet and are just there for explaining my plans.
|
||||
|
||||
## Creating Continuables
|
||||
|
||||
#### Create a continuable from a callback taking function
|
||||
|
||||
```c++
|
||||
Continuable<std::string> continuable =
|
||||
make_continuable([](Callback<std::string>&& callback)
|
||||
{
|
||||
callback("some data");
|
||||
});
|
||||
|
||||
```
|
||||
|
||||
#### Providing helper functions
|
||||
|
||||
```c++
|
||||
Continuable<ResultSet> mysql_query(std::string&& query)
|
||||
{
|
||||
return make_continuable([query = std::move(query)](Callback<ResultSet>&& callback) mutable
|
||||
{
|
||||
// Pass the callback to the handler
|
||||
// which calls the callback when finished.
|
||||
// Everything which takes a callback works with continuables.
|
||||
mysql_handle_async_query(std::move(query), std::move(callback));
|
||||
});
|
||||
}
|
||||
|
||||
// You can use the helper function like you would normally do:
|
||||
mysql_query("DELETE FROM users WHERE id = 27361");
|
||||
|
||||
// Or using chaining to handle the result which is covered in the next topic .
|
||||
mysql_query("SELECT id, name FROM users")
|
||||
.then([](ResultSet result)
|
||||
{
|
||||
});
|
||||
```
|
||||
|
||||
## Chaining Continuables
|
||||
|
||||
Chaining continuables is very easy:
|
||||
|
||||
```c++
|
||||
(mysql_query("SELECT id, name FROM users")
|
||||
&& http_request("http://github.com"))
|
||||
.then([](ResultSet result, std::string page_content)
|
||||
{
|
||||
// Pass one argument to the next continuation...
|
||||
return page_content.empty();
|
||||
|
||||
// ... or pass multiple args using tuples...
|
||||
return std::make_tuple(std::move(result), page_content.empty());
|
||||
|
||||
// ... return the next continuable to process
|
||||
return mysql_query("SELECT id name FROM sessions");
|
||||
});
|
||||
```
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user