Golang实践经验和教训( 七 )

if sessionTimeout[session
== nil {

sessionTimeout[session
:= new(TimeoutHandler)

timeout = sessionTimeout[session

timeout.session = session

timeout.callback = callback

timeout.duration = duration

return timeout

一旦创建并注册了超时处理程序 , 它就会在持续时间秒数之后运行回调 。 但是 , 某些事件将要求重新安排超时处理程序(在SYN状态下发生 , 即每3秒一次) 。

为此 , 可以让回调函数重新安排新的超时:

func synCallback(session Session) {

sendSynPacket(session)

// reschedules the same callback.

推荐阅读