libzypp 17.37.17
zyppng::detail::is_nested_async< T > Struct Template Reference

#include <zypp-core/zyppng/pipelines/asyncresult.h>

Inheritance diagram for zyppng::detail::is_nested_async< T >:

Detailed Description

template<typename T>
struct zyppng::detail::is_nested_async< T >

The AsyncResult class is used to bind previous operations to a new operation and to carry the result of the full pipeline. It has a pointer to the _prevTask, which is usually a AsyncResult too, and to the task it should execute once the previous task enters ready state.

In theory this is a single linked list, but each node owns all the previous nodes, means that once a node is destroyed all previous ones are destroyed as well. Basically the async results are nested objects, where the outermost object is the last to be executed. While executing the nodes they are cleaned up right away after they enter finished or ready state.

When returned to the code the AsyncResult is casted into the AsyncOp base class, otherwise the type information gets too complex and matching the pipe operator functions is a nightmare. This could be revisited with newer C++ versions.

Todo
with newer C++ versions revisit the possibility to use non shared ptr types throughout the pipeline instead of the current smart pointer solution.

Definition at line 120 of file asyncresult.h.


The documentation for this struct was generated from the following file: