00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef AXIS2_ASYNC_RESULT_H
00018 #define AXIS2_ASYNC_RESULT_H
00019
00033 #include <axis2_defines.h>
00034 #include <axis2_env.h>
00035 #include <axis2_msg_ctx.h>
00036 #include <axiom_soap_envelope.h>
00037
00038 #ifdef __cplusplus
00039 extern "C"
00040 {
00041 #endif
00042
00043
00045 typedef struct axis2_async_result_ops axis2_async_result_ops_t;
00047 typedef struct axis2_async_result axis2_async_result_t;
00048
00049
00054 struct axis2_async_result_ops
00055 {
00062 axiom_soap_envelope_t *(AXIS2_CALL *
00063 get_envelope)(
00064 axis2_async_result_t *async_result,
00065 const axis2_env_t *env);
00066
00067
00074 axis2_msg_ctx_t *(AXIS2_CALL *
00075 get_result)(
00076 axis2_async_result_t *async_result,
00077 const axis2_env_t *env);
00078
00085 axis2_status_t (AXIS2_CALL *
00086 free)(
00087 axis2_async_result_t *async_result,
00088 const axis2_env_t *env);
00089 };
00090
00094 struct axis2_async_result
00095 {
00097 axis2_async_result_ops_t *ops;
00098 };
00099
00107 AXIS2_EXTERN axis2_async_result_t *AXIS2_CALL
00108 axis2_async_result_create(
00109 const axis2_env_t *env,
00110 axis2_msg_ctx_t *result);
00111
00114 #define AXIS2_ASYNC_RESULT_GET_ENVELOPE(async_result, env) \
00115 ((async_result)->ops->get_envelope(async_result, env))
00116
00119 #define AXIS2_ASYNC_RESULT_GET_RESULT(async_result, env) \
00120 ((async_result)->ops->get_result(async_result, env))
00121
00124 #define AXIS2_ASYNC_RESULT_FREE(async_result, env) \
00125 ((async_result)->ops->free (async_result, env))
00126
00128 #ifdef __cplusplus
00129 }
00130 #endif
00131
00132 #endif