Example #1
0
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);
}
Example #2
0
/* 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(&current_debug_on, &current_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));
}