.TH "globus_callback.h" 3 "Sat Nov 8 2014" "Version 15.26" "globus_common" \" -*- nroff -*- .ad l .nh .SH NAME globus_callback.h \- .PP Globus Callback API\&. .SH SYNOPSIS .br .PP \fC#include 'globus_common_include\&.h'\fP .br \fC#include 'globus_module\&.h'\fP .br \fC#include 'globus_time\&.h'\fP .br .SS "Macros" .in +1c .ti -1c .RI "#define \fBGLOBUS_CALLBACK_MODULE\fP" .br .RI "\fIModule descriptor\&. \fP" .ti -1c .RI "#define \fBGLOBUS_POLL_MODULE\fP" .br .RI "\fIModule descriptor\&. \fP" .ti -1c .RI "#define \fBGLOBUS_CALLBACK_GLOBAL_SPACE\fP" .br .RI "\fIGlobal callback space\&. \fP" .ti -1c .RI "#define \fBGLOBUS_SIGNAL_INTERRUPT\fP" .br .in -1c .PP .RI "\fBConvenience Macros\fP" .br .in +1c .in +1c .ti -1c .RI "#define \fBglobus_callback_poll\fP(a)" .br .RI "\fIPoll the global callback space\&. \fP" .ti -1c .RI "#define \fBglobus_poll_blocking\fP()" .br .RI "\fIBlocking poll of the global callback space\&. \fP" .ti -1c .RI "#define \fBglobus_poll_nonblocking\fP()" .br .RI "\fINonblocking poll of the global callback space\&. \fP" .ti -1c .RI "#define \fBglobus_poll\fP()" .br .RI "\fINonblocking poll of the global callback space\&. \fP" .ti -1c .RI "#define \fBglobus_signal_poll\fP()" .br .RI "\fIWake up callback polling thread\&. \fP" .ti -1c .RI "#define \fBglobus_callback_register_oneshot\fP(callback_handle,delay_time,callback_func,callback_user_arg)" .br .RI "\fIRegister a oneshot function in the global callback space\&. \fP" .ti -1c .RI "#define \fBglobus_callback_register_periodic\fP(callback_handle,delay_time,period,callback_func,callback_user_arg)" .br .RI "\fIRegister a periodic function in the global callback space\&. \fP" .ti -1c .RI "#define \fBglobus_callback_register_signal_handler\fP(signum,persist,callback_func,callback_user_arg)" .br .RI "\fIRegister a signal handler in the global callback space\&. \fP" .in -1c .in -1c .SS "Typedefs" .in +1c .ti -1c .RI "typedef int \fBglobus_callback_handle_t\fP" .br .RI "\fIPeriodic callback handle\&. \fP" .ti -1c .RI "typedef int \fBglobus_callback_space_t\fP" .br .RI "\fICallback space handle\&. \fP" .ti -1c .RI "typedef struct .br globus_l_callback_space_attr_s * \fBglobus_callback_space_attr_t\fP" .br .RI "\fICallback space attribute\&. \fP" .in -1c .PP .RI "\fBCallback Prototypes\fP" .br .in +1c .in +1c .ti -1c .RI "typedef void(* \fBglobus_callback_func_t\fP )(void *user_arg)" .br .RI "\fIGlobus callback prototype\&. \fP" .in -1c .in -1c .SS "Enumerations" .in +1c .ti -1c .RI "enum \fBglobus_callback_error_type_t\fP { \fBGLOBUS_CALLBACK_ERROR_INVALID_CALLBACK_HANDLE\fP = 1024, \fBGLOBUS_CALLBACK_ERROR_INVALID_SPACE\fP, \fBGLOBUS_CALLBACK_ERROR_MEMORY_ALLOC\fP, \fBGLOBUS_CALLBACK_ERROR_INVALID_ARGUMENT\fP, \fBGLOBUS_CALLBACK_ERROR_ALREADY_CANCELED\fP, \fBGLOBUS_CALLBACK_ERROR_NO_ACTIVE_CALLBACK\fP }" .br .RI "\fIError types\&. \fP" .ti -1c .RI "enum \fBglobus_callback_space_behavior_t\fP { \fBGLOBUS_CALLBACK_SPACE_BEHAVIOR_SINGLE\fP, \fBGLOBUS_CALLBACK_SPACE_BEHAVIOR_SERIALIZED\fP, \fBGLOBUS_CALLBACK_SPACE_BEHAVIOR_THREADED\fP }" .br .RI "\fICallback space behaviors describe how a space behaves\&. \fP" .in -1c .SS "Functions" .in +1c .ti -1c .RI "\fBglobus_result_t\fP \fBglobus_callback_space_init\fP (\fBglobus_callback_space_t\fP *space, \fBglobus_callback_space_attr_t\fP attr)" .br .RI "\fIInitialize a user space\&. \fP" .ti -1c .RI "\fBglobus_result_t\fP \fBglobus_callback_space_reference\fP (\fBglobus_callback_space_t\fP space)" .br .RI "\fITake a reference to a space\&. \fP" .ti -1c .RI "\fBglobus_result_t\fP \fBglobus_callback_space_destroy\fP (\fBglobus_callback_space_t\fP space)" .br .RI "\fIDestroy a reference to a user space\&. \fP" .ti -1c .RI "\fBglobus_result_t\fP \fBglobus_callback_space_attr_init\fP (\fBglobus_callback_space_attr_t\fP *attr)" .br .RI "\fIInitialize a space attr\&. \fP" .ti -1c .RI "\fBglobus_result_t\fP \fBglobus_callback_space_attr_destroy\fP (\fBglobus_callback_space_attr_t\fP attr)" .br .RI "\fIDestroy a space attr\&. \fP" .ti -1c .RI "\fBglobus_result_t\fP \fBglobus_callback_space_attr_set_behavior\fP (\fBglobus_callback_space_attr_t\fP attr, \fBglobus_callback_space_behavior_t\fP behavior)" .br .RI "\fISet the behavior of a space\&. \fP" .ti -1c .RI "\fBglobus_result_t\fP \fBglobus_callback_space_attr_get_behavior\fP (\fBglobus_callback_space_attr_t\fP attr, \fBglobus_callback_space_behavior_t\fP *behavior)" .br .RI "\fIGet the behavior associated with an attr\&. \fP" .ti -1c .RI "\fBglobus_result_t\fP \fBglobus_callback_space_get\fP (\fBglobus_callback_space_t\fP *space)" .br .RI "\fIRetrieve the space of a currently running callback\&. \fP" .ti -1c .RI "int \fBglobus_callback_space_get_depth\fP (\fBglobus_callback_space_t\fP space)" .br .RI "\fIRetrieve the current nesting level of a space\&. \fP" .ti -1c .RI "\fBglobus_bool_t\fP \fBglobus_callback_space_is_single\fP (\fBglobus_callback_space_t\fP space)" .br .RI "\fISee if the specified space is a single threaded behavior space\&. \fP" .ti -1c .RI "\fBglobus_result_t\fP \fBglobus_callback_space_register_signal_handler\fP (int signum, \fBglobus_bool_t\fP persist, \fBglobus_callback_func_t\fP callback_func, void *callback_user_arg, \fBglobus_callback_space_t\fP space)" .br .RI "\fIFire a callback when the specified signal is received\&. \fP" .ti -1c .RI "\fBglobus_result_t\fP \fBglobus_callback_unregister_signal_handler\fP (int signum, \fBglobus_callback_func_t\fP unregister_callback, void *unreg_arg)" .br .RI "\fIUnregister a signal handling callback\&. \fP" .ti -1c .RI "void \fBglobus_callback_add_wakeup_handler\fP (void(*wakeup)(void *), void *user_arg)" .br .RI "\fIRegister a wakeup handler with callback library\&. \fP" .in -1c .PP .RI "\fBOneshot Callbacks\fP" .br .in +1c .in +1c .ti -1c .RI "\fBglobus_result_t\fP \fBglobus_callback_space_register_oneshot\fP (\fBglobus_callback_handle_t\fP *callback_handle, const globus_reltime_t *delay_time, \fBglobus_callback_func_t\fP callback_func, void *callback_user_arg, \fBglobus_callback_space_t\fP space)" .br .RI "\fIRegister a oneshot some delay from now\&. \fP" .in -1c .in -1c .PP .RI "\fBPeriodic Callbacks\fP" .br .in +1c .in +1c .ti -1c .RI "\fBglobus_result_t\fP \fBglobus_callback_space_register_periodic\fP (\fBglobus_callback_handle_t\fP *callback_handle, const globus_reltime_t *delay_time, const globus_reltime_t *period, \fBglobus_callback_func_t\fP callback_func, void *callback_user_arg, \fBglobus_callback_space_t\fP space)" .br .RI "\fIRegister a periodic callback\&. \fP" .ti -1c .RI "\fBglobus_result_t\fP \fBglobus_callback_unregister\fP (\fBglobus_callback_handle_t\fP callback_handle, \fBglobus_callback_func_t\fP unregister_callback, void *unreg_arg, \fBglobus_bool_t\fP *active)" .br .RI "\fIUnregister a callback\&. \fP" .ti -1c .RI "\fBglobus_result_t\fP \fBglobus_callback_adjust_oneshot\fP (\fBglobus_callback_handle_t\fP callback_handle, const globus_reltime_t *new_delay)" .br .RI "\fIAdjust the delay of a oneshot callback\&. \fP" .ti -1c .RI "\fBglobus_result_t\fP \fBglobus_callback_adjust_period\fP (\fBglobus_callback_handle_t\fP callback_handle, const globus_reltime_t *new_period)" .br .RI "\fIAdjust the period of a periodic callback\&. \fP" .in -1c .in -1c .PP .RI "\fBCallback Polling\fP" .br .in +1c .in +1c .ti -1c .RI "void \fBglobus_callback_space_poll\fP (const globus_abstime_t *timestop, \fBglobus_callback_space_t\fP space)" .br .RI "\fIPoll for ready callbacks\&. \fP" .ti -1c .RI "void \fBglobus_callback_signal_poll\fP ()" .br .RI "\fISignal the poll\&. \fP" .in -1c .in -1c .PP .RI "\fBMiscellaneous\fP" .br .in +1c .in +1c .ti -1c .RI "\fBglobus_bool_t\fP \fBglobus_callback_get_timeout\fP (globus_reltime_t *time_left)" .br .RI "\fIGet the amount of time left in a callback\&. \fP" .ti -1c .RI "\fBglobus_bool_t\fP \fBglobus_callback_has_time_expired\fP ()" .br .RI "\fISee if there is remaining time in a callback\&. \fP" .ti -1c .RI "\fBglobus_bool_t\fP \fBglobus_callback_was_restarted\fP ()" .br .RI "\fISee if a callback has been restarted\&. \fP" .in -1c .in -1c .SH "Detailed Description" .PP Globus Callback API\&. .SH "Author" .PP Generated automatically by Doxygen for globus_common from the source code\&.