int main(int argc, char *argv[]) { int ret; if (argc != 5) { printf("Usage: %s HOST PORT EVENT_NAME CONFIG_FILE\n", argv[0]); return 1; } settings.smsalarm = 0; //settings.logfname = "-"; log_init(); if (config_parse_file(argv[4], &g_cfg) != 1) { printf("parse config file %s failure", argv[3]); return 1; } mevent_t *evt = mevent_init(argv[3]); if (evt == NULL) { printf("init error\n"); SMS_ALARM("mevent_init error"); return 1; } struct timeval tv; tv.tv_sec = 0; tv.tv_usec = 800000; mevent_add_udp_server(evt, argv[1], atoi(argv[2]), NULL, &tv); ret = mevent_trigger(evt, NULL, REQ_CMD_STATS, FLAGS_SYNC); if (PROCESS_OK(ret)) { hdf_dump(evt->hdfrcv, NULL); } else { int try = 0; redo: sleep(10); ret = mevent_trigger(evt, NULL, REQ_CMD_STATS, FLAGS_SYNC); if (PROCESS_NOK(ret) && try < 3) { try++; goto redo; } if (PROCESS_NOK(ret) && try >= 3) { printf("process failure %d\n", ret); SMS_ALARM("process failure %d, restarted", ret); system("killall -9 mevent; sleep 2; /usr/local/revive/xport/daemon/mevent -c /usr/local/revive/xport/conf/server.hdf"); } else { printf("process temproray error %d, %d", ret, try); } } mevent_free(evt); return 0; }
void levt_destroy(HASH *evth) { char *key = NULL; mevent_t *evt = (mevent_t*)hash_next(evth, (void**)&key); while (evt != NULL) { mevent_free(evt); evt = hash_next(evth, (void**)&key); } hash_destroy(&evth); }