static PINT_sm_action msgpairarray_post_retry( struct PINT_smcb *smcb, job_status_s *js_p) { PINT_sm_msgarray_op *mop = PINT_sm_frame(smcb, PINT_FRAME_CURRENT); job_id_t tmp_id; gossip_debug(GOSSIP_MSGPAIR_DEBUG, "%s: sm %p, wait %d ms\n", __func__, smcb, mop->params.retry_delay); js_p->error_code = 0; /* do not leak MSGPAIRS_RETRY through to wait */ return job_req_sched_post_timer( mop->params.retry_delay, smcb, 0, js_p, &tmp_id, mop->params.job_context); }
/* perf_update_do_work() * * resets counters, updates metrices, etc- this is intended to be called * repeatedly on a regular interval */ static PINT_sm_action perf_update_do_work( struct PINT_smcb *smcb, job_status_s *js_p) { job_id_t tmp_id; uint64_t current_mask = 0; int current_debug_on = 0; char* tmp_text; char* ptr; char* token; char delim[] = "\n"; struct server_configuration_s *user_opts = get_server_config_struct(); #if 0 PINT_STATE_DEBUG("do_work"); #endif /* log current statistics if the gossip mask permits */ gossip_get_debug_mask(¤t_debug_on, ¤t_mask); if(current_mask & GOSSIP_PERFCOUNTER_DEBUG) { tmp_text = PINT_perf_generate_text(PINT_server_pc, 4096); if(tmp_text) { token = strtok_r(tmp_text, delim, &ptr); while(token) { gossip_perf_log("%s\n", token); token = strtok_r(NULL, delim, &ptr); } free(tmp_text); } } /* roll over to next set of statistics */ PINT_perf_rollover(PINT_server_pc); /* post another timer */ return(job_req_sched_post_timer(user_opts->perf_update_interval, smcb, 0, js_p, &tmp_id, server_job_context)); }