globus_common  17.11
globus_error.h
Go to the documentation of this file.
1 
7 #ifndef GLOBUS_ERROR_H
8 #define GLOBUS_ERROR_H
9 
10 #include "globus_common_include.h"
11 #include "globus_object.h"
12 #include "globus_module.h"
13 
14 #include <inttypes.h>
15 
16 typedef uint_least32_t globus_uint_t;
17 
18 #ifdef __cplusplus
19 extern "C" {
20 #endif
21 
22 /**********************************************************************
23  * Error API Types
24  * globus_result_t -- used as error object handle
25  **********************************************************************/
26 
27 /**********************************************************************
28  * Error Creation API
29  **********************************************************************/
30 
31 extern globus_object_t *
32 globus_error_initialize_base (
33  globus_object_t * error,
34  globus_module_descriptor_t * source_module,
35  globus_object_t * causal_error);
36 
37 extern globus_object_t *
38 globus_error_construct_base (
39  globus_module_descriptor_t * source_module,
40  globus_object_t * causal_error);
41 
42 #define globus_error_type_static_initializer(parent_type, \
43  copy_func, \
44  destructor, \
45  string_func) \
46  globus_object_type_static_initializer ((parent_type), \
47  (copy_func), \
48  (destructor), \
49  ((void *) string_func))
50 
51 
52 /**********************************************************************
53  * Standard Error Type
54  * ERROR_TYPE_BASE
55  **********************************************************************/
56 
57 extern const globus_object_type_t GLOBUS_ERROR_TYPE_BASE_DEFINITION;
58 #define GLOBUS_ERROR_TYPE_BASE (&GLOBUS_ERROR_TYPE_BASE_DEFINITION)
59 
60 /**********************************************************************
61  * Standard Error Prototype
62  * ERROR_NO_INFO (type GLOBUS_ERROR_TYPE_BASE)
63  **********************************************************************/
64 
65 extern globus_object_t GLOBUS_ERROR_BASE_STATIC_PROTOTYPE;
66 #define GLOBUS_ERROR_BASE_PROTOTYPE (&GLOBUS_ERROR_BASE_STATIC_PROTOTYPE)
67 
68 #define GLOBUS_ERROR_NO_INFO GLOBUS_ERROR_BASE_PROTOTYPE
69 
70 /**********************************************************************
71  * Error Management API
72  **********************************************************************/
73 
74 extern globus_object_t *
75 globus_error_get(
76  globus_result_t result);
77 /* returns corresponding object for result,
78  * may return GLOBUS_ERROR_NO_INFO */
79 
80 extern globus_object_t *
81 globus_error_peek(
82  globus_result_t result);
83 /* returns pointer to object for result DOES NOT REMOVE object.
84  * This pointer is only valid for the current thread and until another call to
85  * globus_error_peek is made
86  * may return GLOBUS_ERROR_NO_INFO
87  */
88 
89 extern globus_result_t
90 globus_error_put(
91  globus_object_t * error);
92 /* does nothing if error is NULL */
93 
94 /**********************************************************************
95  * Error Manipulation API
96  **********************************************************************/
97 
99 globus_error_base_get_source (
100  globus_object_t * error);
101 
102 extern void
103 globus_error_base_set_source (
104  globus_object_t * error,
105  globus_module_descriptor_t * source_module);
106 
107 extern globus_object_t *
108 globus_error_base_get_cause (
109  globus_object_t * error);
110 
111 extern void
112 globus_error_base_set_cause (
113  globus_object_t * error,
114  globus_object_t * causal_error);
115 
116 
117 #include "globus_thread.h"
118 
119 extern globus_bool_t globus_i_error_verbose;
120 extern globus_thread_key_t globus_i_error_verbose_key;
121 
122 /**********************************************************************
123  * Module definition
124  **********************************************************************/
125 
126 extern globus_module_descriptor_t globus_i_error_module;
127 
128 #define GLOBUS_ERROR_MODULE (&globus_i_error_module)
129 
130 #ifdef __cplusplus
131 }
132 #endif
133 
134 #endif /* GLOBUS_ERROR_H */
Include System Headers.
Reference Counting Module Activation and Deactivation.
Globus Threading Abstraction.
uint32_t globus_result_t
Definition: globus_types.h:84
int globus_bool_t
Boolean type.
Definition: globus_types.h:78
Module Descriptor.
Definition: globus_module.h:55
Thread-specific data key.
Definition: globus_thread.h:186