asio_async_ops.h |
Base class for asynchronous stream operations.
Asynchronous operations, used for example to implement an interface for boost::asio::async_read_some and
boost::asio::async_write_some, are based on boost::asio::coroutines.
Derived operations should implement a call operator and invoke it with the correct parameters upon construction. The
call operator needs to make sure that the user-provided handler is not called directly. Typically, yield / reenter is
used for this in the following fashion:
```
void operator()(boost::system::error_code ec, std::size_t bytes_transferred, bool isContinuation = true)
{
reenter(this)
{
// operation specific logic, repeatedly interacting with the stream_core and the next_layer (socket)
// make sure intermediate initiating function is called
if(!isContinuation)
{
yield next_layer.async_operation(empty_buffer, this);
}
// call the completion handler
complete_now(error_code, bytes_transferred);
}
}
```
Once the operation is completed and ready to call the completion handler it checks if an intermediate initiating
function has been called using the `isContinuation` parameter. If not, it will call an asynchronous operation, such
as `async_read_some`, with and empty buffer, set the object itself as the handler, and `yield`. As a result, the call
operator will be invoked again, this time as a continuation, and will jump to the location where it yielded before
using `reenter`. It is now safe to call the handler function via `complete_now`.
\tparam Handler Type of the completion handler
\tparam Executor1 Type of the asio executor (usually derived from the lower layer)
\tparam Allocator Type of the allocator to be used
|
14210 |
asio_context.h |
A helper class to initialize and configure Botan::TLS::Stream
|
3543 |
asio_error.h |
This file defines Botan-specific subclasses of boost::system::error_category.
In addition to the class definition, each category class is accompanied by function `make_error_code` used to create
a `boost::system::error_code` of the category from some other kind of error in Botan (for example, a TLS alert).
Since error_category instances should be singletons, there's also a method to get/create the instance for each class.
|
3793 |
asio_stream.h |
@brief boost::asio compatible SSL/TLS stream
@tparam StreamLayer type of the next layer, usually a network socket
@tparam ChannelT type of the native_handle, defaults to Botan::TLS::Channel, only needed for testing purposes
|
32769 |
info.txt |
|
176 |