6#include <condition_variable>
12namespace Azure {
namespace Core {
namespace Amqp {
namespace Common {
namespace _internal {
16 template <
typename CompleteFn,
typename ArgumentRewriter>
struct CompletionOperation
18 CompleteFn m_onOperationComplete;
20 CompletionOperation(CompleteFn
const& onOperationComplete)
21 : m_onOperationComplete{onOperationComplete}
25 template <
typename... T>
static void OnOperationFn(
void* context, T... args)
29 std::unique_ptr<CompletionOperation> operation;
30 operation.reset(
reinterpret_cast<CompletionOperation*
>(context));
31 operation->OnOperation(args...);
34 template <
typename... T>
void OnOperation(T... args)
36 if (m_onOperationComplete)
38 ArgumentRewriter::OnOperation(m_onOperationComplete, args...);