timer.tcl
上传用户:rrhhcc
上传日期:2015-12-11
资源大小:54129k
文件大小:1k
源码类别:

通讯编程

开发平台:

Visual C++

  1. #
  2. # A simple timer class.  You can derive a subclass of Timer
  3. # to provide a simple mechanism for scheduling events:
  4. #
  5. #  $self sched $delay -- causes "$self timeout" to be called
  6. # $delay seconds in the future
  7. # $self cancel    -- cancels any pending scheduled callback
  8. Class Timer
  9. # sched is the same as resched; the previous setting is cancelled
  10. # and another event is scheduled. No state is kept for the timers.
  11. # This is different than the C++ timer API in timer-handler.cc,h; where a 
  12. # sched aborts if the timer is already set. C++ timers maintain state 
  13. # (e.g. IDLE, PENDING..etc) that is checked before the timer is scheduled.
  14. Timer instproc sched delay {
  15. global ns
  16. $self instvar id_
  17. $self cancel
  18. set id_ [$ns at [expr [$ns now] + $delay] "$self timeout"]
  19. }
  20. Timer instproc destroy {} {
  21. $self cancel
  22. }
  23. Timer instproc cancel {} {
  24. global ns
  25. $self instvar id_
  26. if [info exists id_] {
  27. $ns cancel $id_
  28. unset id_
  29. }
  30. }
  31. # resched and expire are added to have a similar API to C++ timers.
  32. Timer instproc resched delay {
  33. $self sched $delay 
  34. }
  35. # the subclass must provide the timeout function
  36. Timer instproc expire {} {
  37. $self timeout
  38. }