diff --git a/include/spinscale/multiOperationResultSet.h b/include/spinscale/multiOperationResultSet.h new file mode 100644 index 0000000..02965c0 --- /dev/null +++ b/include/spinscale/multiOperationResultSet.h @@ -0,0 +1,29 @@ +#ifndef MULTI_OPERATION_RESULT_SET_H +#define MULTI_OPERATION_RESULT_SET_H + +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; +}; + +} // namespace sscl + +#endif // MULTI_OPERATION_RESULT_SET_H