2 #ifndef GLOBUS_I_CALLBACK_H
3 #define GLOBUS_I_CALLBACK_H
11 #define GLOBUS_CALLBACK_NONTHREADED_MODULE (&globus_i_callback_module_nonthreaded)
12 #define GLOBUS_CALLBACK_THREADED_MODULE (&globus_i_callback_module_threaded)
15 #define GLOBUS_L_CALLBACK_CONSTRUCT_INVALID_CALLBACK_HANDLE(func) \
17 globus_error_construct_error( \
18 GLOBUS_CALLBACK_MODULE, \
20 GLOBUS_CALLBACK_ERROR_INVALID_CALLBACK_HANDLE, \
24 "Invalid callback handle"))
26 #define GLOBUS_L_CALLBACK_CONSTRUCT_INVALID_SPACE(func) \
28 globus_error_construct_error( \
29 GLOBUS_CALLBACK_MODULE, \
31 GLOBUS_CALLBACK_ERROR_INVALID_SPACE, \
35 "Invalid space handle"))
37 #define GLOBUS_L_CALLBACK_CONSTRUCT_MEMORY_ALLOC(func, alloc) \
39 globus_error_construct_error( \
40 GLOBUS_CALLBACK_MODULE, \
42 GLOBUS_CALLBACK_ERROR_MEMORY_ALLOC, \
46 "Could not allocate memory for %s", \
49 #define GLOBUS_L_CALLBACK_CONSTRUCT_INVALID_ARGUMENT(func, argument) \
51 globus_error_construct_error( \
52 GLOBUS_CALLBACK_MODULE, \
54 GLOBUS_CALLBACK_ERROR_INVALID_ARGUMENT, \
58 "Invalid argument: %s", \
61 #define GLOBUS_L_CALLBACK_CONSTRUCT_ALREADY_CANCELED(func) \
63 globus_error_construct_error( \
64 GLOBUS_CALLBACK_MODULE, \
66 GLOBUS_CALLBACK_ERROR_ALREADY_CANCELED, \
70 "Callback previoulsy unregistered"))
72 #define GLOBUS_L_CALLBACK_CONSTRUCT_NO_ACTIVE_CALLBACK(func) \
74 globus_error_construct_error( \
75 GLOBUS_CALLBACK_MODULE, \
77 GLOBUS_CALLBACK_ERROR_NO_ACTIVE_CALLBACK, \
81 "No cuurently running callback"))
83 #define GlobusICallbackReadyInit(queue) \
85 (queue)->head = GLOBUS_NULL; \
86 (queue)->tail = &(queue)->head; \
89 #define GlobusICallbackReadyEnqueue(queue, callback_info) \
91 (callback_info)->next = GLOBUS_NULL; \
92 *(queue)->tail = callback_info; \
93 (queue)->tail = &callback_info->next; \
96 #define GlobusICallbackReadyEnqueueFirst(queue, callback_info) \
98 (callback_info)->next = (queue)->head; \
101 (queue)->tail = &callback_info->next; \
103 (queue)->head = (callback_info); \
106 #define GlobusICallbackReadyDequeue(queue, callback_info) \
108 (callback_info) = (queue)->head; \
109 if((callback_info)) \
111 (queue)->head = (callback_info)->next; \
114 (queue)->tail = &(queue)->head; \
119 #define GlobusICallbackReadyPeak(queue, callback_info) \
121 (callback_info) = (queue)->head; \
124 #define GlobusICallbackReadyRemove(queue, callback_info) \
126 globus_l_callback_info_t ** tmp; \
128 tmp = &(queue)->head; \
129 while(*tmp && *tmp != (callback_info)) \
131 tmp = &(*tmp)->next; \
136 if(!(callback_info)->next) \
138 (queue)->tail = tmp; \
140 *tmp = (*tmp)->next; \
Module Descriptor.
Definition: globus_module.h:54