修改:delay 延时支持延时变更、取消事件

git-svn-id: svn://47.119.165.148/zhub@95 e63fbceb-bcc3-4977-ac22-735b83d8d0f4
This commit is contained in:
lxy
2021-02-01 11:18:26 +00:00
parent d6dda9e968
commit 8e1074e461
2 changed files with 25 additions and 6 deletions

View File

@@ -70,7 +70,7 @@ func msgAccept(v Message) {
case "broadcast":
zsub.broadcast(rcmd[1], rcmd[2])
case "daly":
daly(rcmd, c)
zsub.daly(rcmd, c)
case "timer":
zsub.timer(rcmd, c)
case "cmd":
@@ -88,7 +88,9 @@ func msgAccept(v Message) {
}
// daly topic value 100 -> publish topic value
func daly(rcmd []string, c *ZConn) {
func (s *ZSub) daly(rcmd []string, c *ZConn) {
s.Lock()
defer s.Unlock()
if len(rcmd) != 4 {
c.send("-Error: subscribe para number!")
return
@@ -100,10 +102,24 @@ func daly(rcmd []string, c *ZConn) {
return
}
timer := time.NewTimer(time.Duration(t) * time.Millisecond)
select {
case <-timer.C:
zsub.publish(rcmd[1], rcmd[2])
timer := s.delays[rcmd[1]+"-"+rcmd[2]]
if timer != nil {
if t == -1 {
timer.Stop()
s.delays[rcmd[1]+"-"+rcmd[2]] = nil
return
}
timer.Reset(time.Duration(t) * time.Millisecond)
} else {
timer = time.NewTimer(time.Duration(t) * time.Millisecond)
s.delays[rcmd[1]+"-"+rcmd[2]] = timer
go func() {
select {
case <-timer.C:
zsub.publish(rcmd[1], rcmd[2])
s.delays[rcmd[1]+"-"+rcmd[2]] = nil
}
}()
}
}