00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00022 #ifndef GLOBUS_ERROR_GENERIC_H
00023 #define GLOBUS_ERROR_GENERIC_H
00024
00025 #include "globus_object.h"
00026 #include "globus_module.h"
00027
00028 #include <stdarg.h>
00029
00078 #ifdef __cplusplus
00079 extern "C" {
00080 #endif
00081
00098 #define GLOBUS_ERROR_TYPE_GLOBUS (&GLOBUS_ERROR_TYPE_GLOBUS_DEFINITION)
00099 extern const globus_object_type_t GLOBUS_ERROR_TYPE_GLOBUS_DEFINITION;
00100
00101 #ifndef DOXYGEN
00102
00103 globus_object_t *
00104 globus_error_construct_error(
00105 globus_module_descriptor_t * base_source,
00106 globus_object_t * base_cause,
00107 int type,
00108 const char * source_file,
00109 const char * source_func,
00110 int source_line,
00111 const char * short_desc_format,
00112 ...);
00113
00114 globus_object_t *
00115 globus_error_v_construct_error(
00116 globus_module_descriptor_t * base_source,
00117 globus_object_t * base_cause,
00118 int type,
00119 const char * source_file,
00120 const char * source_func,
00121 int source_line,
00122 const char * short_desc_format,
00123 va_list ap);
00124
00125 globus_object_t *
00126 globus_error_initialize_error(
00127 globus_object_t * error,
00128 globus_module_descriptor_t * base_source,
00129 globus_object_t * base_cause,
00130 int type,
00131 const char * source_file,
00132 const char * source_func,
00133 int source_line,
00134 const char * short_desc_format,
00135 va_list ap);
00136
00137 #endif
00138
00150 globus_module_descriptor_t *
00151 globus_error_get_source(
00152 globus_object_t * error);
00153
00154 void
00155 globus_error_set_source(
00156 globus_object_t * error,
00157 globus_module_descriptor_t * source_module);
00158
00159 globus_object_t *
00160 globus_error_get_cause (
00161 globus_object_t * error);
00162
00163 void
00164 globus_error_set_cause (
00165 globus_object_t * error,
00166 globus_object_t * causal_error);
00167
00168 int
00169 globus_error_get_type(
00170 globus_object_t * error);
00171
00172 void
00173 globus_error_set_type(
00174 globus_object_t * error,
00175 const int type);
00176
00177 char *
00178 globus_error_get_short_desc(
00179 globus_object_t * error);
00180
00181 void
00182 globus_error_set_short_desc(
00183 globus_object_t * error,
00184 const char * short_desc_format,
00185 ...);
00186
00187 char *
00188 globus_error_get_long_desc(
00189 globus_object_t * error);
00190
00191 void
00192 globus_error_set_long_desc(
00193 globus_object_t * error,
00194 const char * long_desc_format,
00195 ...);
00196
00208 globus_bool_t
00209 globus_error_match(
00210 globus_object_t * error,
00211 globus_module_descriptor_t * module,
00212 int type);
00213
00214 char *
00215 globus_error_print_chain(
00216 globus_object_t * error);
00217
00218 char *
00219 globus_error_print_friendly(
00220 globus_object_t * error);
00221
00249 typedef char * (*globus_error_print_friendly_t)(
00250 globus_object_t * error,
00251 const globus_object_type_t * type);
00252
00253
00254 #define GLOBUS_ERROR_TYPE_MULTIPLE (&GLOBUS_ERROR_TYPE_MULTIPLE_DEFINITION)
00255 extern const globus_object_type_t GLOBUS_ERROR_TYPE_MULTIPLE_DEFINITION;
00256
00257 globus_object_t *
00258 globus_error_construct_multiple(
00259 globus_module_descriptor_t * base_source,
00260 int type,
00261 const char * fmt,
00262 ...);
00263
00264 void
00265 globus_error_mutliple_add_chain(
00266 globus_object_t * multiple_error,
00267 globus_object_t * chain,
00268 const char * fmt,
00269 ...);
00270
00271 globus_object_t *
00272 globus_error_multiple_remove_chain(
00273 globus_object_t * multiple_error);
00274
00275 #ifdef __cplusplus
00276 }
00277 #endif
00278
00279 #endif