int Counter::generate_counter() { Rule* rule = get_app().get_rule(m_data.rule_name) ; if(rule == NULL || rule->config.offset != m_data.node_offset ) return -1 ; RuleConfig& config = rule->config ; m_data.counter += config.step ; int now = generate_time() ; if( (!framework::is_same_cycle(m_data.update_time,now,config.reset_seconds)) || (m_data.counter > config.max_counter) ) { m_data.counter = config.min_counter + config.offset ; m_data.saved_counter = m_data.counter ; } m_data.update_time = now ; if(m_data.counter >= m_data.saved_counter) { m_data.saved_counter = m_data.counter + config.step * config.batch_save ; async_save() ; } return m_data.counter ; }
int Counter::generate_counter() { Rule* rule = get_app().get_rule(m_data.rule_name) ; if(rule == NULL || rule->config.offset != m_data.node_offset ) return -1 ; m_data.counter += rule->config.step ; int now = generate_time() ; int reset_seconds = rule->config.reset_seconds ; if( ( reset_seconds>0 && (!framework::is_same_cycle(m_data.update_time,now,reset_seconds) ) )|| (m_data.counter > rule->config.max_counter) ) { m_data.counter = rule->config.min_counter + rule->config.offset ; } m_data.update_time = now ; async_save() ; return m_data.counter ; }