mirror of
https://github.com/v2fly/v2ray-core.git
synced 2025-02-20 23:47:21 -05:00
predicate.Not
This commit is contained in:
parent
f3a83c57ab
commit
da9f1a8013
@ -23,3 +23,9 @@ func Any(predicates ...Predicate) Predicate {
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
func Not(predicate Predicate) Predicate {
|
||||
return func() bool {
|
||||
return !predicate()
|
||||
}
|
||||
}
|
||||
|
@ -225,17 +225,21 @@ func NewConnection(conv uint16, writerCloser io.WriteCloser, local *net.UDPAddr,
|
||||
conn.congestionControl = config.Congestion
|
||||
conn.sendingWorker = NewSendingWorker(conn)
|
||||
|
||||
isTerminating := func() bool {
|
||||
return conn.State().Is(StateTerminating, StateTerminated)
|
||||
}
|
||||
isTerminated := func() bool {
|
||||
return conn.State() == StateTerminated
|
||||
}
|
||||
conn.dataUpdater = NewUpdater(
|
||||
conn.interval,
|
||||
predicate.Any(conn.sendingWorker.UpdateNecessary, conn.receivingWorker.UpdateNecessary),
|
||||
func() bool {
|
||||
return conn.State() == StateTerminated
|
||||
},
|
||||
predicate.All(predicate.Not(isTerminating), predicate.Any(conn.sendingWorker.UpdateNecessary, conn.receivingWorker.UpdateNecessary)),
|
||||
isTerminating,
|
||||
conn.updateTask)
|
||||
conn.pingUpdater = NewUpdater(
|
||||
5000, // 5 seconds
|
||||
func() bool { return conn.State() != StateTerminated },
|
||||
func() bool { return conn.State() == StateTerminated },
|
||||
predicate.Not(isTerminated),
|
||||
isTerminated,
|
||||
conn.updateTask)
|
||||
conn.pingUpdater.WakeUp()
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user