inc/azure_uamqp_c/async_operation.h (30 lines of code) (raw):

// Copyright (c) Microsoft. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. #ifndef ASYNC_OPERATION_H #define ASYNC_OPERATION_H #ifdef __cplusplus extern "C" { #include <cstdint> #include <cstddef> #else #include <stdint.h> #include <stddef.h> #endif /* __cplusplus */ #include "umock_c/umock_c_prod.h" typedef struct ASYNC_OPERATION_INSTANCE_TAG* ASYNC_OPERATION_HANDLE; typedef void(*ASYNC_OPERATION_CANCEL_HANDLER_FUNC)(ASYNC_OPERATION_HANDLE async_operation); #define DEFINE_ASYNC_OPERATION_CONTEXT(type) \ typedef struct MU_C3(ASYNC_OPERATION_CONTEXT_STRUCT_, type, _TAG) \ { \ ASYNC_OPERATION_CANCEL_HANDLER_FUNC async_operation_cancel_handler; \ type context; \ } MU_C2(ASYNC_OPERATION_CONTEXT_STRUCT_, type); #define GET_ASYNC_OPERATION_CONTEXT(type, async_operation) \ (type*)((unsigned char*)async_operation + offsetof(MU_C2(ASYNC_OPERATION_CONTEXT_STRUCT_, type), context)) #define CREATE_ASYNC_OPERATION(type, async_operation_cancel_handler) \ async_operation_create(async_operation_cancel_handler, sizeof(MU_C2(ASYNC_OPERATION_CONTEXT_STRUCT_, type))) MOCKABLE_FUNCTION(, ASYNC_OPERATION_HANDLE, async_operation_create, ASYNC_OPERATION_CANCEL_HANDLER_FUNC, async_operation_cancel_handler, size_t, context_size); MOCKABLE_FUNCTION(, void, async_operation_destroy, ASYNC_OPERATION_HANDLE, async_operation); MOCKABLE_FUNCTION(, int, async_operation_cancel, ASYNC_OPERATION_HANDLE, async_operation); #ifdef __cplusplus } #endif /* __cplusplus */ #endif /* ASYNC_OPERATION_H */