00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef GLOBUS_SCHEDULER_EVENT_GENERATOR_H
00018 #define GLOBUS_SCHEDULER_EVENT_GENERATOR_H
00019
00020 #include "globus_common.h"
00021
00022 #ifdef __cplusplus
00023 extern "C" {
00024 #endif
00025
00026 #ifndef GLOBUS_GLOBAL_DOCUMENT_SET
00027
00031 #endif
00032
00049 typedef enum
00050 {
00052 GLOBUS_SEG_ERROR_TYPE_NULL = 1024,
00054 GLOBUS_SEG_ERROR_TYPE_ALREADY_SET,
00056 GLOBUS_SEG_ERROR_TYPE_INVALID_MODULE,
00058 GLOBUS_SEG_ERROR_TYPE_INVALID_FORMAT,
00060 GLOBUS_SEG_ERROR_TYPE_OUT_OF_MEMORY,
00062 GLOBUS_SEG_ERROR_TYPE_LOADING_MODULE
00063 }
00064 globus_scheduler_event_generator_error_t;
00065
00066 #if __STDC_VERSION__ == 199901L
00067 # define MYNAME __func__
00068 #elif defined(__GNUC__)
00069 # define MYNAME __FUNCTION__
00070 #else
00071 # define MYNAME ""
00072 #endif
00073
00074 typedef void (*globus_scheduler_event_generator_fault_t)(
00075 void * user_arg,
00076 globus_result_t fault);
00077
00078 #define GLOBUS_SEG_ERROR_NULL_OBJECT() \
00079 globus_error_construct_error(GLOBUS_SCHEDULER_EVENT_GENERATOR_MODULE, \
00080 NULL, \
00081 GLOBUS_SEG_ERROR_TYPE_NULL, \
00082 __FILE__, \
00083 MYNAME, \
00084 __LINE__, \
00085 "Null parameter")
00086
00087 #define GLOBUS_SEG_ERROR_ALREADY_SET_OBJECT() \
00088 globus_error_construct_error(GLOBUS_SCHEDULER_EVENT_GENERATOR_MODULE, \
00089 NULL, \
00090 GLOBUS_SEG_ERROR_TYPE_ALREADY_SET, \
00091 __FILE__, \
00092 MYNAME, \
00093 __LINE__, \
00094 "Value already set")
00095
00096 #define GLOBUS_SEG_ERROR_INVALID_MODULE_OBJECT(module, errmsg) \
00097 globus_error_construct_error(GLOBUS_SCHEDULER_EVENT_GENERATOR_MODULE, \
00098 NULL, \
00099 GLOBUS_SEG_ERROR_TYPE_INVALID_MODULE, \
00100 __FILE__, \
00101 MYNAME, \
00102 __LINE__, \
00103 "Invalid module %s: %s", \
00104 module, \
00105 errmsg)
00106
00107 #define GLOBUS_SEG_ERROR_INVALID_FORMAT_OBJECT(fmt) \
00108 globus_error_construct_error(GLOBUS_SCHEDULER_EVENT_GENERATOR_MODULE, \
00109 NULL, \
00110 GLOBUS_SEG_ERROR_TYPE_INVALID_FORMAT, \
00111 __FILE__, \
00112 MYNAME, \
00113 __LINE__, \
00114 "Invalid format %s", \
00115 fmt)
00116
00117 #define GLOBUS_SEG_ERROR_OUT_OF_MEMORY_OBJECT() \
00118 globus_error_construct_error(GLOBUS_SCHEDULER_EVENT_GENERATOR_MODULE, \
00119 NULL, \
00120 GLOBUS_SEG_ERROR_TYPE_OUT_OF_MEMORY, \
00121 __FILE__, \
00122 MYNAME, \
00123 __LINE__, \
00124 "Out of memory")
00125
00126 #define GLOBUS_SEG_ERROR_LOADING_MODULE_OBJECT(module, dlerr_msg) \
00127 globus_error_construct_error(GLOBUS_SCHEDULER_EVENT_GENERATOR_MODULE, \
00128 NULL, \
00129 GLOBUS_SEG_ERROR_TYPE_LOADING_MODULE, \
00130 __FILE__, \
00131 MYNAME, \
00132 __LINE__, \
00133 "Unable to dlopen module \"%s\": %s", \
00134 module, \
00135 dlerr_msg)
00136
00137 #define GLOBUS_SEG_ERROR_NULL \
00138 globus_error_put(GLOBUS_SEG_ERROR_NULL_OBJECT())
00139
00140 #define GLOBUS_SEG_ERROR_ALREADY_SET \
00141 globus_error_put(GLOBUS_SEG_ERROR_ALREADY_SET_OBJECT())
00142
00143 #define GLOBUS_SEG_ERROR_INVALID_MODULE(module, errmsg) \
00144 globus_error_put(GLOBUS_SEG_ERROR_INVALID_MODULE_OBJECT(module, errmsg))
00145
00146 #define GLOBUS_SEG_ERROR_INVALID_FORMAT(fmt) \
00147 globus_error_put(GLOBUS_SEG_ERROR_INVALID_FORMAT_OBJECT(fmt))
00148
00149 #define GLOBUS_SEG_ERROR_OUT_OF_MEMORY \
00150 globus_error_put(GLOBUS_SEG_ERROR_OUT_OF_MEMORY_OBJECT())
00151
00152 #define GLOBUS_SEG_ERROR_LOADING_MODULE(module, dlerr_msg) \
00153 globus_error_put(GLOBUS_SEG_ERROR_LOADING_MODULE_OBJECT(module, \
00154 dlerr_msg))
00155
00156 extern globus_module_descriptor_t globus_i_scheduler_event_generator_module;
00157 #define GLOBUS_SCHEDULER_EVENT_GENERATOR_MODULE \
00158 (&globus_i_scheduler_event_generator_module)
00159
00180 globus_result_t
00181 globus_scheduler_event(
00182 const char * format,
00183 ...);
00184
00185 globus_result_t
00186 globus_scheduler_event_pending(
00187 time_t timestamp,
00188 const char * jobid);
00189
00190 globus_result_t
00191 globus_scheduler_event_active(
00192 time_t timestamp,
00193 const char * jobid);
00194
00195 globus_result_t
00196 globus_scheduler_event_failed(
00197 time_t timestamp,
00198 const char * jobid,
00199 int failure_code);
00200
00201 globus_result_t
00202 globus_scheduler_event_done(
00203 time_t timestamp,
00204 const char * jobid,
00205 int exit_code);
00206
00207 globus_result_t
00208 globus_scheduler_event_generator_get_timestamp(
00209 time_t * timestamp);
00210
00211 #ifdef __cplusplus
00212 }
00213 #endif
00214
00215 #endif