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
00020
00026 #include <axis2_defines.h>
00027 #include <axis2_env.h>
00028 #include <axis2_msg_ctx.h>
00029 #include <axiom_soap_envelope.h>
00030
00031 #ifdef __cplusplus
00032 extern "C"
00033 {
00034 #endif
00035
00041 typedef struct axis2_async_result_ops axis2_async_result_ops_t;
00042 typedef struct axis2_async_result axis2_async_result_t;
00043
00044
00049 struct axis2_async_result_ops
00050 {
00051 axiom_soap_envelope_t* (AXIS2_CALL *
00052 get_envelope)(struct axis2_async_result *async_result,
00053 const axis2_env_t *env);
00054
00055
00056 axis2_msg_ctx_t* (AXIS2_CALL *
00057 get_result)(struct axis2_async_result *async_result,
00058 const axis2_env_t *env);
00059
00060 axis2_status_t (AXIS2_CALL *
00061 free)(struct axis2_async_result *async_result,
00062 const axis2_env_t *env);
00063 };
00064
00069 struct axis2_async_result
00070 {
00071 axis2_async_result_ops_t *ops;
00072 };
00073
00074 AXIS2_EXTERN axis2_async_result_t* AXIS2_CALL
00075 axis2_async_result_create(const axis2_env_t *env,
00076 axis2_msg_ctx_t *result);
00077
00078
00079
00080 #define AXIS2_ASYNC_RESULT_GET_ENVELOPE(async_result, env) \
00081 ((async_result)->ops->get_envelope(async_result, env))
00082
00083 #define AXIS2_ASYNC_RESULT_GET_RESULT(async_result, env) \
00084 ((async_result)->ops->get_result(async_result, env))
00085
00086 #define AXIS2_ASYNC_RESULT_FREE(async_result, env) \
00087 ((async_result)->ops->free (async_result, env))
00088
00089
00090
00092 #ifdef __cplusplus
00093 }
00094 #endif
00095
00096 #endif