[Click] Strange timer behavior

Roberto Riggio roberto.riggio at create-net.org
Tue Mar 4 13:19:08 EST 2008


Eddie,

ok in order to simply the problem I've increased the confusion. This is the
run_timer method:

void
Blank::run_timer(Timer *)
{
  click_chatter("Pruning...")
  _next += Timestamp::make_msec(10000);
  _timer.schedule_at(_next);
}

_next is set to Timestap::now() in the element's initialize method.

R.

----- "Eddie Kohler" <kohler at cs.ucla.edu> wrote:
> Roberto,
> 
> What is "now"?  Not Timestamp::now().  It must be some variable that
> you are 
> maintaining.
> 
> If you want the timer to run once, use
> 
> schedule_at(Timestamp::now() + delay)
> 
> or equivalently
> 
> schedule_after(delay)
> 
> If you want the timer to run 60 times, use
> 
> now = _timer.expiry();
> ...
> schedule_at(now + delay)
> 
> or
> 
> reschedule_after(delay)
> 
> Eddie
> 
> 
> Roberto Riggio wrote:
> > Eddie,
> > 
> > I don't know if it is really a problem. I use schedule_at
> > in order to schedule the timer at X. Then, in run_timer I do 
> > something like this:
> > 
> > schedule_at(now + delay)
> > 
> > now let's assume that I change the system clock while click is
> > running moving it forward one hour.
> > 
> > Then if delay is 1 min run_timer is executed 
> > 60 times right after the clock change is committed.
> > 
> > Is this the expected behavior?
> > 
> > 
> > ----- "Eddie Kohler" <kohler at cs.ucla.edu> wrote:
> >> Roberto,
> >>
> >> I don't know exactly what the "problem" is here, which behavior do
> you
> >> not like?
> >>
> >> The meaning of "schedule_after" is "schedule at X past the current
> >> time."  The 
> >> meaning of "scheudle_at" is "schedule at the moment the system
> clock
> >> says X." 
> >>   These methods are behaving correctly.
> >>
> >> Eddie
> >>
> >>
> >> Roberto Riggio wrote:
> >>> Hi,
> >>>
> >>> the problem is the following: if I use the schedule_at function
> >>> in order to reschedule a timer I get the timer scheduled several
> >>> times if i move the system clock forward.
> >>>
> >>> On the other hand if I use the schedule_after function this
> >>> does not occur and the timer is scheduled only one even if I move
> >>> the clock several years in the future.
> >>>
> >>> The problem is annoying because I'm using click over an embedded 
> >>> platform that forget the system date at each reboot (the default
> >> date
> >>> is Jan 2000).
> >>>
> > 
> >


-- 
--------------------------------------------------------
Roberto Riggio, PhD Student

CREATE-NET
Via alla Cascata 56/C 
38100 Trento (Italy)

E-mail: roberto.riggio at create-net.org
HomePage: http://disi.unitn.it/~riggio/

Tel: +39.0461.314.960
Fax: +39.0461.314.972
--------------------------------------------------------



More information about the click mailing list