[Click] Strange timer behavior
Eddie Kohler
kohler at cs.ucla.edu
Tue Mar 4 13:15:14 EST 2008
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).
>>>
>
>
More information about the click
mailing list