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
|
17071 |
asio_compat.h |
@brief minimum supported boost version for the TLS ASIO wrapper
BOOST_VERSION % 100 is the patch level
BOOST_VERSION / 100 % 1000 is the minor version
BOOST_VERSION / 100000 is the major version
Botan may still work with older versions of boost. Though, the asio TLS
wrapper won't work with versions older than the one specified below.
Also note the changelog with rationales for the required versions:
until Botan 3.2.0
1.66.0 - first version to be compatible with Networking TS (N4656) and boost::beast
as of Botan 3.3.0
1.73.0 - first version supporting the C++20 concepts syntax
|
1366 |
asio_context.cpp |
A Credentials_Manager that provides the system's certificate store as trust
store, if available. Otherwise it defaults to "no trusted certificates".
|
1712 |
asio_context.h |
A helper class to initialize and configure Botan::TLS::Stream
|
3950 |
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.
|
3701 |
asio_stream.h |
@brief Specialization of TLS::Callbacks for the ASIO Stream
Applications may decide to derive from this for fine-grained customizations
of the TLS::Stream's behaviour. Examples may be OCSP integration, custom
certificate validation or user-defined key exchange mechanisms.
By default, this class provides all necessary customizations for the ASIO
integration. The methods required for that are `final` and cannot be
overridden.
Each instance of TLS::Stream must have their own instance of this class. A
future major version of Botan will therefor consume instances of this class
as a std::unique_ptr. The current usage of std::shared_ptr is erratic.
|
42765 |
info.txt |
|
328 |