globus_common 18.14
Loading...
Searching...
No Matches
globus_error.h
Go to the documentation of this file.
1/*
2 * Copyright 1999-2006 University of Chicago
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
22#ifndef GLOBUS_ERROR_H
23#define GLOBUS_ERROR_H
24
26#include "globus_object.h"
27#include "globus_module.h"
28
29#include <inttypes.h>
30
31typedef uint_least32_t globus_uint_t;
32
33#ifdef __cplusplus
34extern "C" {
35#endif
36
37/**********************************************************************
38 * Error API Types
39 * globus_result_t -- used as error object handle
40 **********************************************************************/
41
42/**********************************************************************
43 * Error Creation API
44 **********************************************************************/
45
46extern globus_object_t *
47globus_error_initialize_base (
48 globus_object_t * error,
49 globus_module_descriptor_t * source_module,
50 globus_object_t * causal_error);
51
52extern globus_object_t *
53globus_error_construct_base (
54 globus_module_descriptor_t * source_module,
55 globus_object_t * causal_error);
56
57#define globus_error_type_static_initializer(parent_type, \
58 copy_func, \
59 destructor, \
60 string_func) \
61 globus_object_type_static_initializer ((parent_type), \
62 (copy_func), \
63 (destructor), \
64 ((void *) string_func))
65
66
67/**********************************************************************
68 * Standard Error Type
69 * ERROR_TYPE_BASE
70 **********************************************************************/
71
72extern const globus_object_type_t GLOBUS_ERROR_TYPE_BASE_DEFINITION;
73#define GLOBUS_ERROR_TYPE_BASE (&GLOBUS_ERROR_TYPE_BASE_DEFINITION)
74
75/**********************************************************************
76 * Standard Error Prototype
77 * ERROR_NO_INFO (type GLOBUS_ERROR_TYPE_BASE)
78 **********************************************************************/
79
80extern globus_object_t GLOBUS_ERROR_BASE_STATIC_PROTOTYPE;
81#define GLOBUS_ERROR_BASE_PROTOTYPE (&GLOBUS_ERROR_BASE_STATIC_PROTOTYPE)
82
83#define GLOBUS_ERROR_NO_INFO GLOBUS_ERROR_BASE_PROTOTYPE
84
85/**********************************************************************
86 * Error Management API
87 **********************************************************************/
88
89extern globus_object_t *
90globus_error_get(
91 globus_result_t result);
92/* returns corresponding object for result,
93 * may return GLOBUS_ERROR_NO_INFO */
94
95extern globus_object_t *
96globus_error_peek(
97 globus_result_t result);
98/* returns pointer to object for result DOES NOT REMOVE object.
99 * This pointer is only valid for the current thread and until another call to
100 * globus_error_peek is made
101 * may return GLOBUS_ERROR_NO_INFO
102 */
103
104extern globus_result_t
105globus_error_put(
106 globus_object_t * error);
107/* does nothing if error is NULL */
108
109/**********************************************************************
110 * Error Manipulation API
111 **********************************************************************/
112
114globus_error_base_get_source (
115 globus_object_t * error);
116
117extern void
118globus_error_base_set_source (
119 globus_object_t * error,
120 globus_module_descriptor_t * source_module);
121
122extern globus_object_t *
123globus_error_base_get_cause (
124 globus_object_t * error);
125
126extern void
127globus_error_base_set_cause (
128 globus_object_t * error,
129 globus_object_t * causal_error);
130
131
132#include "globus_thread.h"
133
134extern globus_bool_t globus_i_error_verbose;
135extern globus_thread_key_t globus_i_error_verbose_key;
136
137/**********************************************************************
138 * Module definition
139 **********************************************************************/
140
141extern globus_module_descriptor_t globus_i_error_module;
142
143#define GLOBUS_ERROR_MODULE (&globus_i_error_module)
144
145#ifdef __cplusplus
146}
147#endif
148
149#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:99
int globus_bool_t
Boolean type.
Definition globus_types.h:93
Module Descriptor.
Definition globus_module.h:72
Thread-specific data key.
Definition globus_thread.h:202