📄 timer.tcl
字号:
## A simple timer class. You can derive a subclass of Timer# to provide a simple mechanism for scheduling events:## $self sched $delay -- causes "$self timeout" to be called# $delay seconds in the future# $self cancel -- cancels any pending scheduled callback# Class TimerTimer instproc init { ns } { $self set ns_ $ns}# sched is the same as resched; the previous setting is cancelled# and another event is scheduled. No state is kept for the timers.# This is different than the C++ timer API in timer-handler.cc,h; where a # sched aborts if the timer is already set. C++ timers maintain state # (e.g. IDLE, PENDING..etc) that is checked before the timer is scheduled.Timer instproc sched delay { $self instvar ns_ $self instvar id_ $self cancel set id_ [$ns_ after $delay "$self timeout"]}Timer instproc destroy {} { $self cancel}Timer instproc cancel {} { $self instvar ns_ $self instvar id_ if [info exists id_] { $ns_ cancel $id_ unset id_ }}# resched and expire are added to have a similar API to C++ timers.Timer instproc resched delay { $self sched $delay }# the subclass must provide the timeout functionTimer instproc expire {} { $self timeout}# Interface timersClass Timer/Iface -superclass TimerTimer/Iface instproc init { protocol source group oiface sim} { $self instvar proto_ src_ grp_ oif_ $self next $sim set proto_ $protocol set src_ $source set grp_ $group set oif_ $oiface}Timer/Iface instproc schedule {} { $self sched [[$self info class] set timeout]}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -