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
00076 #ifdef __cplusplus
00077 extern "C" {
00078 #endif
00079
00095 #define GLOBUS_ERROR_TYPE_GLOBUS (&GLOBUS_ERROR_TYPE_GLOBUS_DEFINITION)
00096 extern const globus_object_type_t GLOBUS_ERROR_TYPE_GLOBUS_DEFINITION;
00097
00098 #ifndef DOXYGEN
00099
00100 globus_object_t *
00101 globus_error_construct_error(
00102 globus_module_descriptor_t * base_source,
00103 globus_object_t * base_cause,
00104 int type,
00105 const char * source_file,
00106 const char * source_func,
00107 int source_line,
00108 const char * short_desc_format,
00109 ...);
00110
00111 globus_object_t *
00112 globus_error_v_construct_error(
00113 globus_module_descriptor_t * base_source,
00114 globus_object_t * base_cause,
00115 int type,
00116 const char * source_file,
00117 const char * source_func,
00118 int source_line,
00119 const char * short_desc_format,
00120 va_list ap);
00121
00122 globus_object_t *
00123 globus_error_initialize_error(
00124 globus_object_t * error,
00125 globus_module_descriptor_t * base_source,
00126 globus_object_t * base_cause,
00127 int type,
00128 const char * source_file,
00129 const char * source_func,
00130 int source_line,
00131 const char * short_desc_format,
00132 va_list ap);
00133
00134 #endif
00135
00146 globus_module_descriptor_t *
00147 globus_error_get_source(
00148 globus_object_t * error);
00149
00150 void
00151 globus_error_set_source(
00152 globus_object_t * error,
00153 globus_module_descriptor_t * source_module);
00154
00155 globus_object_t *
00156 globus_error_get_cause (
00157 globus_object_t * error);
00158
00159 void
00160 globus_error_set_cause (
00161 globus_object_t * error,
00162 globus_object_t * causal_error);
00163
00164 int
00165 globus_error_get_type(
00166 globus_object_t * error);
00167
00168 void
00169 globus_error_set_type(
00170 globus_object_t * error,
00171 const int type);
00172
00173 char *
00174 globus_error_get_short_desc(
00175 globus_object_t * error);
00176
00177 void
00178 globus_error_set_short_desc(
00179 globus_object_t * error,
00180 const char * short_desc_format,
00181 ...);
00182
00183 char *
00184 globus_error_get_long_desc(
00185 globus_object_t * error);
00186
00187 void
00188 globus_error_set_long_desc(
00189 globus_object_t * error,
00190 const char * long_desc_format,
00191 ...);
00192
00203 globus_bool_t
00204 globus_error_match(
00205 globus_object_t * error,
00206 globus_module_descriptor_t * module,
00207 int type);
00208
00209 char *
00210 globus_error_print_chain(
00211 globus_object_t * error);
00212
00213 char *
00214 globus_error_print_friendly(
00215 globus_object_t * error);
00216
00244 typedef char * (*globus_error_print_friendly_t)(
00245 globus_object_t * error,
00246 const globus_object_type_t * type);
00247
00248
00249 #define GLOBUS_ERROR_TYPE_MULTIPLE (&GLOBUS_ERROR_TYPE_MULTIPLE_DEFINITION)
00250 extern const globus_object_type_t GLOBUS_ERROR_TYPE_MULTIPLE_DEFINITION;
00251
00252 globus_object_t *
00253 globus_error_construct_multiple(
00254 globus_module_descriptor_t * base_source,
00255 int type,
00256 const char * fmt,
00257 ...);
00258
00259 void
00260 globus_error_mutliple_add_chain(
00261 globus_object_t * multiple_error,
00262 globus_object_t * chain,
00263 const char * fmt,
00264 ...);
00265
00266 globus_object_t *
00267 globus_error_multiple_remove_chain(
00268 globus_object_t * multiple_error);
00269
00270 #ifdef __cplusplus
00271 }
00272 #endif
00273
00274 #endif