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