00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00022 #if !defined(GLOBUS_MODULE_H)
00023 #define GLOBUS_MODULE_H 1
00024
00035 struct globus_module_descriptor_s;
00036 typedef struct globus_module_descriptor_s globus_module_descriptor_t;
00039 #include "globus_error_generic.h"
00040
00041 #include <stdio.h>
00042
00043 #ifdef __cplusplus
00044 extern "C" {
00045 #endif
00046
00047
00048
00049
00050 typedef int (*globus_module_activation_func_t)(void);
00051 typedef int (*globus_module_deactivation_func_t)(void);
00052 typedef void (*globus_module_atexit_func_t)(void);
00053 typedef void * (*globus_module_get_pointer_func_t)(void);
00054
00055 typedef struct
00056 {
00057 int major;
00058 int minor;
00059
00060 unsigned long timestamp;
00061 int branch_id;
00062 } globus_version_t;
00063
00071 struct globus_module_descriptor_s
00072 {
00074 char * module_name;
00076 globus_module_activation_func_t activation_func;
00078 globus_module_deactivation_func_t deactivation_func;
00080 globus_module_atexit_func_t atexit_func;
00082 globus_module_get_pointer_func_t get_pointer_func;
00084 globus_version_t * version;
00086 globus_error_print_friendly_t friendly_error_func;
00087 };
00088
00089
00090
00091
00092
00093
00094
00095
00096
00097 int
00098 globus_module_activate(
00099 globus_module_descriptor_t * module_descriptor);
00100
00101 int
00102 globus_module_activate_array(
00103 globus_module_descriptor_t * modules[],
00104 globus_module_descriptor_t ** failed_module);
00105
00106 int
00107 globus_module_deactivate(
00108 globus_module_descriptor_t * module_descriptor);
00109
00110 int
00111 globus_module_deactivate_all(void);
00112
00118 typedef
00119 int
00120 (*globus_module_deactivate_proxy_cb_t)(
00121 globus_module_descriptor_t * module_descriptor,
00122 void * user_arg);
00123
00133 int
00134 globus_module_activate_proxy(
00135 globus_module_descriptor_t * module_descriptor,
00136 globus_module_deactivate_proxy_cb_t deactivate_cb,
00137 void * user_arg);
00138
00142 void
00143 globus_module_setenv(
00144 const char * name,
00145 const char * value);
00146
00150 char *
00151 globus_module_getenv(
00152 const char * name);
00153
00157 void *
00158 globus_module_get_module_pointer(
00159 globus_module_descriptor_t *);
00160
00161 int
00162 globus_module_get_version(
00163 globus_module_descriptor_t * module_descriptor,
00164 globus_version_t * version);
00165
00166 void
00167 globus_module_print_version(
00168 globus_module_descriptor_t * module_descriptor,
00169 FILE * stream,
00170 globus_bool_t verbose);
00171
00172 void
00173 globus_module_print_activated_versions(
00174 FILE * stream,
00175 globus_bool_t verbose);
00176
00177 void
00178 globus_version_print(
00179 const char * name,
00180 const globus_version_t * version,
00181 FILE * stream,
00182 globus_bool_t verbose);
00183
00184
00185 void
00186 globus_module_set_args(
00187 int * argc,
00188 char *** argv);
00189
00190 void
00191 globus_module_get_args(
00192 int ** argc,
00193 char **** argv);
00194
00195
00196 #ifdef __cplusplus
00197 }
00198 #endif
00199
00200 #endif