00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef __AWHANDLER_PING__
00024 #define __AWHANDLER_PING__
00025
00026 #include "sysnet.h"
00027 #include "monitor.h"
00028 #include "wire.h"
00029
00098
00099
00100
00101
00102
00103
00104
00105
00106
00107
00108
00109
00110
00111
00112
00113
00114
00118 typedef struct {
00119
00120 aw_event_sig_t
00121 connect,
00122 noconnect,
00123 triptime,
00124 packets;
00125
00126 u_int32_t
00127 statefull;
00128
00129
00130
00131 } aw_pinghandler_events_t;
00132
00136 typedef enum {
00137
00138 AW_PINGHANDLER_IDLE,
00139 AW_PINGHANDLER_WAIT_READ,
00140 AW_PINGHANDLER_DONE_READ,
00141
00142 } aw_pinghandler_state_cd_t;
00143
00144
00148 typedef struct {
00149
00150 aw_pinghandler_state_cd_t
00151 state_cd;
00152
00153 aw_event_t
00154 *current_event;
00155
00156 int32_t
00157 sfd;
00158
00159
00160 aw_timestamp_t
00161 starttime;
00162
00163
00164 u_int32_t
00165 tries;
00166
00167
00168 int32_t
00169 connect;
00170
00171 } aw_pinghandler_state_t;
00172
00176 typedef struct {
00177
00178 aw_handler_t
00179 handler_header;
00180
00181 aw_pinghandler_state_t
00182 state;
00183
00184 aw_pinghandler_events_t
00185 events;
00186
00187 struct sockaddr_in
00188 whereto_addr;
00189
00190
00191 aw_address_t
00192 timeout_event_id;
00193
00194
00195 aw_alarm_sched_t
00196 timeout_sched;
00197
00198
00199 u_int32_t
00200 maxretries;
00201
00202 byte_t
00203 *host;
00204
00205 } aw_pinghandler_t ;
00206
00219 aw_pinghandler_t *aw_create_pinghandler(const aw_pinghandler_events_t *events,
00220 const byte_t *hostname,
00221 aw_timestamp_t timeout,
00222 u_int32_t maxretries,
00223 int32_t (*regevent)(aw_handler_t *h, aw_address_t *eventid, u_int32_t index),
00224 int32_t (*regmaskevent)(aw_handler_t *h, aw_address_t *eventid, u_int32_t index),
00225 const aw_alarm_sched_t *sched,
00226 aw_logger_t *logger
00227 );
00228
00233 void aw_free_pinghandler(aw_pinghandler_t *p);
00234
00238 aw_handler_t *aw_wire_pinghandler(aw_wire_mkhandler_args_t *args);
00239
00240 #endif
00241
00242