mirror of
https://github.com/latentPrion/libspinscale.git
synced 2026-06-23 19:48:32 +00:00
51 lines
1.2 KiB
C++
51 lines
1.2 KiB
C++
#ifndef MULTI_OPERATION_RESULT_SET_H
|
|
#define MULTI_OPERATION_RESULT_SET_H
|
|
|
|
#include <exception>
|
|
|
|
namespace sscl {
|
|
|
|
/** Plain aggregate for fan-out / fan-in results returned from coroutines. */
|
|
struct MultiOperationResultSet
|
|
{
|
|
MultiOperationResultSet(
|
|
unsigned int total = 0,
|
|
unsigned int succeeded = 0,
|
|
unsigned int failed = 0)
|
|
: nTotal(total), nSucceeded(succeeded), nFailed(failed)
|
|
{}
|
|
|
|
bool isComplete() const
|
|
{ return nSucceeded + nFailed == nTotal; }
|
|
|
|
bool nTotalIsZero() const
|
|
{ return nTotal == 0; }
|
|
|
|
unsigned int nTotal;
|
|
unsigned int nSucceeded;
|
|
unsigned int nFailed;
|
|
};
|
|
|
|
/** Fan-out / fan-in counts plus optional aggregated member failure. */
|
|
struct MultiOperationResultSetWithException
|
|
{
|
|
MultiOperationResultSetWithException() = default;
|
|
|
|
MultiOperationResultSetWithException(
|
|
MultiOperationResultSet resultsIn,
|
|
std::exception_ptr memberFailureExceptionIn = nullptr)
|
|
: results(resultsIn),
|
|
memberFailureException(memberFailureExceptionIn)
|
|
{}
|
|
|
|
bool hasMemberFailure() const
|
|
{ return memberFailureException != nullptr; }
|
|
|
|
MultiOperationResultSet results;
|
|
std::exception_ptr memberFailureException = nullptr;
|
|
};
|
|
|
|
} // namespace sscl
|
|
|
|
#endif // MULTI_OPERATION_RESULT_SET_H
|