00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef AXIS2_DLL_DESC_H
00019 #define AXIS2_DLL_DESC_H
00020
00026 #include <axis2_utils_defines.h>
00027 #include <axis2_qname.h>
00028 #include <axis2_error.h>
00029 #include <axis2_utils.h>
00030 #include <platforms/axis2_platform_auto_sense.h>
00031
00032 #ifdef __cplusplus
00033 extern "C"
00034 {
00035 #endif
00036
00044 typedef struct axis2_dll_desc axis2_dll_desc_t;
00045 typedef struct axis2_dll_desc_ops axis2_dll_desc_ops_t;
00046
00047
00048 typedef int (*CREATE_FUNCT) (void **inst, const axis2_env_t *env);
00049
00050 typedef int (*DELETE_FUNCT) (void *inst, const axis2_env_t *env);
00051
00052 typedef enum axis2_dll_type
00053 {
00055 AXIS2_SVC_DLL = 0,
00057 AXIS2_HANDLER_DLL,
00059 AXIS2_MSG_RECV_DLL,
00061 AXIS2_MODULE_DLL,
00063 AXIS2_TRANSPORT_RECV_DLL,
00065 AXIS2_TRANSPORT_SENDER_DLL
00066
00067 }axis2_dll_type_t;
00068
00072 struct axis2_dll_desc_ops
00073 {
00074 axis2_status_t (AXIS2_CALL *
00075 free) (axis2_dll_desc_t *dll_desc,
00076 const axis2_env_t *env);
00077
00081 axis2_status_t (AXIS2_CALL *
00082 set_name) (axis2_dll_desc_t *dll_desc,
00083 const axis2_env_t *env,
00084 axis2_char_t *name);
00085
00089 axis2_char_t *(AXIS2_CALL *
00090 get_name) (axis2_dll_desc_t *dll_desc,
00091 const axis2_env_t *env);
00092
00093 axis2_status_t (AXIS2_CALL *
00094 set_type) (axis2_dll_desc_t *dll_desc,
00095 const axis2_env_t *env,
00096 axis2_dll_type_t type);
00097
00098 axis2_dll_type_t (AXIS2_CALL *
00099 get_type) (axis2_dll_desc_t *dll_desc,
00100 const axis2_env_t *env);
00101
00102 axis2_status_t (AXIS2_CALL *
00103 set_load_options) (axis2_dll_desc_t *dll_desc,
00104 const axis2_env_t *env,
00105 int options);
00106
00107 int (AXIS2_CALL *
00108 get_load_options) (axis2_dll_desc_t *dll_desc,
00109 const axis2_env_t *env);
00110
00111 axis2_status_t (AXIS2_CALL *
00112 set_dl_handler) (axis2_dll_desc_t *dll_desc,
00113 const axis2_env_t *env,
00114 AXIS2_DLHANDLER dl_handler);
00115
00116 AXIS2_DLHANDLER (AXIS2_CALL *
00117 get_dl_handler) (axis2_dll_desc_t *dll_desc,
00118 const axis2_env_t *env);
00119
00120 axis2_status_t (AXIS2_CALL *
00121 set_create_funct) (axis2_dll_desc_t *dll_desc,
00122 const axis2_env_t *env,
00123 CREATE_FUNCT funct);
00124
00125 CREATE_FUNCT (AXIS2_CALL *
00126 get_create_funct) (axis2_dll_desc_t *dll_desc,
00127 const axis2_env_t *env);
00128
00129 axis2_status_t (AXIS2_CALL *
00130 set_delete_funct) (axis2_dll_desc_t *dll_desc,
00131 const axis2_env_t *env,
00132 DELETE_FUNCT funct);
00133
00134 DELETE_FUNCT (AXIS2_CALL *
00135 get_delete_funct) (axis2_dll_desc_t *dll_desc,
00136 const axis2_env_t *env);
00137
00138 axis2_status_t (AXIS2_CALL *
00139 set_timestamp) (axis2_dll_desc_t *dll_desc,
00140 const axis2_env_t *env,
00141 AXIS2_TIME_T timestamp);
00142
00143 axis2_status_t (AXIS2_CALL *
00144 set_error_code) (
00145 axis2_dll_desc_t *dll_desc,
00146 const axis2_env_t *env,
00147 axis2_error_codes_t error_code);
00148
00149 axis2_error_codes_t (AXIS2_CALL *
00150 get_error_code) (
00151 axis2_dll_desc_t *dll_desc,
00152 const axis2_env_t *env);
00153
00154 AXIS2_TIME_T (AXIS2_CALL *
00155 get_timestamp) (axis2_dll_desc_t *dll_desc,
00156 const axis2_env_t *env);
00166 axis2_char_t *(AXIS2_CALL *
00167 create_platform_specific_dll_name)(axis2_dll_desc_t *dll_desc,
00168 const axis2_env_t *env,
00169 const axis2_char_t *class_name);
00170
00171
00172 };
00173
00177 struct axis2_dll_desc
00178 {
00180 axis2_dll_desc_ops_t *ops;
00181
00182 };
00183
00184
00189 AXIS2_EXTERN axis2_dll_desc_t* AXIS2_CALL
00190 axis2_dll_desc_create(const axis2_env_t *env);
00191
00192 AXIS2_EXTERN axis2_status_t AXIS2_CALL
00193 axis2_dll_desc_free_void_arg (void *dll_desc,
00194 const axis2_env_t *env);
00195
00196
00197
00198 #define AXIS2_DLL_DESC_FREE(dll_desc, env) \
00199 ((dll_desc)->ops->free(dll_desc, env))
00200
00201 #define AXIS2_DLL_DESC_GET_NAME(dll_desc, env) \
00202 ((dll_desc)->ops->get_name(dll_desc, env))
00203
00204 #define AXIS2_DLL_DESC_SET_NAME(dll_desc, env, name) \
00205 ((dll_desc)->ops->set_name(dll_desc, env, name))
00206
00207 #define AXIS2_DLL_DESC_GET_TYPE(dll_desc, env) \
00208 ((dll_desc)->ops->get_type(dll_desc, env))
00209
00210 #define AXIS2_DLL_DESC_SET_TYPE(dll_desc, env, type) \
00211 ((dll_desc)->ops->set_type(dll_desc, env, type))
00212
00213 #define AXIS2_DLL_DESC_GET_LOAD_OPTIONS(dll_desc, env) \
00214 ((dll_desc)->ops->get_load_options(dll_desc, env))
00215
00216 #define AXIS2_DLL_DESC_SET_LOAD_OPTIONS(dll_desc, env, load_options) \
00217 ((dll_desc)->ops->set_load_options(dll_desc, env, load_options))
00218
00219 #define AXIS2_DLL_DESC_GET_DL_HANDLER(dll_desc, env) \
00220 ((dll_desc)->ops->get_dl_handler(dll_desc, env))
00221
00222 #define AXIS2_DLL_DESC_SET_DL_HANDLER(dll_desc, env, dl_handler) \
00223 ((dll_desc)->ops->set_dl_handler(dll_desc, env, dl_handler))
00224
00225 #define AXIS2_DLL_DESC_GET_CREATE_FUNCT(dll_desc, env) \
00226 ((dll_desc)->ops->get_create_funct(dll_desc, env))
00227
00228 #define AXIS2_DLL_DESC_SET_CREATE_FUNCT(dll_desc, env, funct) \
00229 ((dll_desc)->ops->set_create_funct(dll_desc, env, funct))
00230
00231 #define AXIS2_DLL_DESC_GET_DELETE_FUNCT(dll_desc, env) \
00232 ((dll_desc)->ops->get_delete_funct((dll_desc, env))
00233
00234 #define AXIS2_DLL_DESC_SET_DELETE_FUNCT(dll_desc, env, funct) \
00235 ((dll_desc)->ops->set_delete_funct(dll_desc, env, funct))
00236
00237 #define AXIS2_DLL_DESC_GET_TIMESTAMP(dll_desc, env) \
00238 ((dll_desc)->ops->get_timestamp(dll_desc, env))
00239
00240 #define AXIS2_DLL_DESC_SET_TIMESTAMP(dll_desc, env, timestamp) \
00241 ((dll_desc)->ops->set_timestamp(dll_desc, env, timestamp))
00242
00243 #define AXIS2_DLL_DESC_SET_ERROR_CODE(dll_desc, env, error_code) \
00244 ((dll_desc)->ops->set_error_code(dll_desc, env, error_code))
00245
00246 #define AXIS2_DLL_DESC_GET_ERROR_CODE(dll_desc, env) \
00247 ((dll_desc)->ops->get_error_code(dll_desc, env))
00248
00249 #define AXIS2_DLL_DESC_CREATE_PLATFORM_SPECIFIC_DLL_NAME(dll_desc, env, class_name) \
00250 ((dll_desc)->ops->create_platform_specific_dll_name(dll_desc, env, class_name))
00251
00254 #ifdef __cplusplus
00255 }
00256 #endif
00257
00258 #endif