Exemplo n.º 1
0
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 ;

}
Exemplo n.º 2
0
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 ;

}