globus_common  17.9
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
globus_callback.h
Go to the documentation of this file.
1 
2 #ifndef GLOBUS_CALLBACK_H
3 #define GLOBUS_CALLBACK_H
4 
16 #include "globus_common_include.h"
17 #include "globus_module.h"
18 #include "globus_time.h"
19 
20 #ifdef __cplusplus
21 extern "C" {
22 #endif
23 
24 extern
25 globus_module_descriptor_t globus_i_callback_module;
26 
39 #define GLOBUS_CALLBACK_MODULE (&globus_i_callback_module)
40 
50 #define GLOBUS_POLL_MODULE GLOBUS_CALLBACK_MODULE
51 
63 typedef enum
64 {
78 
88 
98 
106 typedef struct globus_l_callback_space_attr_s * globus_callback_space_attr_t;
107 
118 /* @{ */
119 
131 #define globus_callback_poll(a) \
132  globus_callback_space_poll((a), GLOBUS_CALLBACK_GLOBAL_SPACE)
133 
145 #define globus_poll_blocking() \
146  globus_callback_poll(&globus_i_abstime_infinity)
147 
159 #define globus_poll_nonblocking() \
160  globus_callback_poll(&globus_i_abstime_zero)
161 
173 #define globus_poll() \
174  globus_poll_nonblocking()
175 
186 #define globus_signal_poll() \
187  globus_callback_signal_poll()
188 
200 #define globus_callback_register_oneshot( \
201  callback_handle, \
202  delay_time, \
203  callback_func, \
204  callback_user_arg) \
205  globus_callback_space_register_oneshot( \
206  (callback_handle), \
207  (delay_time), \
208  (callback_func), \
209  (callback_user_arg), \
210  GLOBUS_CALLBACK_GLOBAL_SPACE)
211 
223 #define globus_callback_register_periodic( \
224  callback_handle, \
225  delay_time, \
226  period, \
227  callback_func, \
228  callback_user_arg) \
229  globus_callback_space_register_periodic( \
230  (callback_handle), \
231  (delay_time), \
232  (period), \
233  (callback_func), \
234  (callback_user_arg), \
235  GLOBUS_CALLBACK_GLOBAL_SPACE)
236 
249 #define globus_callback_register_signal_handler( \
250  signum, \
251  persist, \
252  callback_func, \
253  callback_user_arg) \
254  globus_callback_space_register_signal_handler( \
255  (signum), \
256  (persist), \
257  (callback_func), \
258  (callback_user_arg), \
259  GLOBUS_CALLBACK_GLOBAL_SPACE)
260 
261 /* @} */
262 
266 /* @{ */
267 
297 typedef
298 void
300  void * user_arg);
301 
302 /* @} */
303 
307 /* @{ */
308 
344  globus_callback_handle_t * callback_handle,
345  const globus_reltime_t * delay_time,
346  globus_callback_func_t callback_func,
347  void * callback_user_arg,
348  globus_callback_space_t space);
349 
350 /* @} */
351 
355 /* @{ */
356 
396  globus_callback_handle_t * callback_handle,
397  const globus_reltime_t * delay_time,
398  const globus_reltime_t * period,
399  globus_callback_func_t callback_func,
400  void * callback_user_arg,
401  globus_callback_space_t space);
402 
449  globus_callback_handle_t callback_handle,
450  globus_callback_func_t unregister_callback,
451  void * unreg_arg,
452  globus_bool_t * active);
453 
483  globus_callback_handle_t callback_handle,
484  const globus_reltime_t * new_delay);
485 
520  globus_callback_handle_t callback_handle,
521  const globus_reltime_t * new_period);
522 /* @} */
523 
527 /* @{ */
528 
570 void
572  const globus_abstime_t * timestop,
573  globus_callback_space_t space);
574 
593 void
595 /* @} */
596 
600 /* @{ */
601 
622  globus_reltime_t * time_left);
623 
639 
659 
660 /* @} */
661 
678 #define GLOBUS_CALLBACK_GLOBAL_SPACE -2
679 
710 typedef enum
711 {
723 
751  globus_callback_space_t * space,
752  globus_callback_space_attr_t attr);
753 
773  globus_callback_space_t space);
774 
800  globus_callback_space_t space);
801 
821  globus_callback_space_attr_t * attr);
822 
839  globus_callback_space_attr_t attr);
840 
859  globus_callback_space_attr_t attr,
861 
883  globus_callback_space_attr_t attr,
885 
900  globus_callback_space_t * space);
901 
913 int
915  globus_callback_space_t space);
916 
930  globus_callback_space_t space);
931 
932 
947 #ifdef SIGINT
948 #define GLOBUS_SIGNAL_INTERRUPT SIGINT
949 #else
950 #define GLOBUS_SIGNAL_INTERRUPT 0
951 #endif
952 
990  int signum,
991  globus_bool_t persist,
992  globus_callback_func_t callback_func,
993  void * callback_user_arg,
994  globus_callback_space_t space);
995 
1022  int signum,
1023  globus_callback_func_t unregister_callback,
1024  void * unreg_arg);
1025 
1053 void
1055  void (*wakeup)(void *),
1056  void * user_arg);
1057 
1058 #ifdef __cplusplus
1059 }
1060 #endif
1061 
1062 #endif /* GLOBUS_CALLBACK_H */
globus_callback_space_behavior_t
Callback space behaviors describe how a space behaves.
Definition: globus_callback.h:710
Definition: globus_callback.h:74
globus_result_t globus_callback_space_register_oneshot(globus_callback_handle_t *callback_handle, const globus_reltime_t *delay_time, globus_callback_func_t callback_func, void *callback_user_arg, globus_callback_space_t space)
Register a oneshot some delay from now.
globus_result_t globus_callback_space_register_periodic(globus_callback_handle_t *callback_handle, const globus_reltime_t *delay_time, const globus_reltime_t *period, globus_callback_func_t callback_func, void *callback_user_arg, globus_callback_space_t space)
Register a periodic callback.
globus_result_t globus_callback_unregister_signal_handler(int signum, globus_callback_func_t unregister_callback, void *unreg_arg)
Unregister a signal handling callback.
Definition: globus_callback.h:719
globus_result_t globus_callback_adjust_period(globus_callback_handle_t callback_handle, const globus_reltime_t *new_period)
Adjust the period of a periodic callback.
Definition: globus_callback.h:70
globus_bool_t globus_callback_get_timeout(globus_reltime_t *time_left)
Get the amount of time left in a callback.
Definition: globus_callback.h:72
Definition: globus_callback.h:66
int globus_bool_t
Boolean type.
Definition: globus_types.h:78
int globus_callback_space_get_depth(globus_callback_space_t space)
Retrieve the current nesting level of a space.
int globus_callback_handle_t
Periodic callback handle.
Definition: globus_callback.h:87
globus_result_t globus_callback_space_init(globus_callback_space_t *space, globus_callback_space_attr_t attr)
Initialize a user space.
Reference Counting Module Activation and Deactivation.
globus_result_t globus_callback_adjust_oneshot(globus_callback_handle_t callback_handle, const globus_reltime_t *new_delay)
Adjust the delay of a oneshot callback.
globus_callback_error_type_t
Error types.
Definition: globus_callback.h:63
void globus_callback_add_wakeup_handler(void(*wakeup)(void *), void *user_arg)
Register a wakeup handler with callback library.
Definition: globus_callback.h:76
globus_result_t globus_callback_unregister(globus_callback_handle_t callback_handle, globus_callback_func_t unregister_callback, void *unreg_arg, globus_bool_t *active)
Unregister a callback.
globus_result_t globus_callback_space_reference(globus_callback_space_t space)
Take a reference to a space.
globus_result_t globus_callback_space_register_signal_handler(int signum, globus_bool_t persist, globus_callback_func_t callback_func, void *callback_user_arg, globus_callback_space_t space)
Fire a callback when the specified signal is received.
globus_bool_t globus_callback_space_is_single(globus_callback_space_t space)
See if the specified space is a single threaded behavior space.
void globus_callback_space_poll(const globus_abstime_t *timestop, globus_callback_space_t space)
Poll for ready callbacks.
globus_bool_t globus_callback_has_time_expired()
See if there is remaining time in a callback.
globus_result_t globus_callback_space_attr_init(globus_callback_space_attr_t *attr)
Initialize a space attr.
Definition: globus_callback.h:715
Definition: globus_callback.h:68
Definition: globus_callback.h:721
void(* globus_callback_func_t)(void *user_arg)
Globus callback prototype.
Definition: globus_callback.h:299
void globus_callback_signal_poll()
Signal the poll.
globus_result_t globus_callback_space_attr_set_behavior(globus_callback_space_attr_t attr, globus_callback_space_behavior_t behavior)
Set the behavior of a space.
globus_result_t globus_callback_space_attr_destroy(globus_callback_space_attr_t attr)
Destroy a space attr.
uint32_t globus_result_t
Definition: globus_types.h:84
globus_result_t globus_callback_space_attr_get_behavior(globus_callback_space_attr_t attr, globus_callback_space_behavior_t *behavior)
Get the behavior associated with an attr.
struct globus_l_callback_space_attr_s * globus_callback_space_attr_t
Callback space attribute.
Definition: globus_callback.h:106
Time Types and Macros.
globus_result_t globus_callback_space_destroy(globus_callback_space_t space)
Destroy a reference to a user space.
globus_bool_t globus_callback_was_restarted()
See if a callback has been restarted.
globus_result_t globus_callback_space_get(globus_callback_space_t *space)
Retrieve the space of a currently running callback.
Include System Headers.
int globus_callback_space_t
Callback space handle.
Definition: globus_callback.h:97
Module Descriptor.
Definition: globus_module.h:54