mirror of https://github.com/v2ray/v2ray-core
clean up validity map
parent
da24d00367
commit
9457c4b349
|
@ -3,17 +3,15 @@ package collect
|
|||
import (
|
||||
"sync"
|
||||
"sync/atomic"
|
||||
|
||||
"github.com/v2ray/v2ray-core/common"
|
||||
)
|
||||
|
||||
type Validity interface {
|
||||
common.Releasable
|
||||
IsValid() bool
|
||||
}
|
||||
|
||||
type entry struct {
|
||||
key string
|
||||
value Validity
|
||||
}
|
||||
|
||||
type ValidityMap struct {
|
||||
sync.RWMutex
|
||||
cache map[string]Validity
|
||||
|
@ -28,6 +26,11 @@ func NewValidityMap(cleanupIntervalSec int) *ValidityMap {
|
|||
}
|
||||
|
||||
func (this *ValidityMap) cleanup() {
|
||||
type entry struct {
|
||||
key string
|
||||
value Validity
|
||||
}
|
||||
|
||||
entry2Remove := make([]entry, 0, 128)
|
||||
this.RLock()
|
||||
for key, value := range this.cache {
|
||||
|
@ -40,10 +43,10 @@ func (this *ValidityMap) cleanup() {
|
|||
}
|
||||
this.RUnlock()
|
||||
|
||||
for _, entry := range entry2Remove {
|
||||
if !entry.value.IsValid() {
|
||||
for _, e := range entry2Remove {
|
||||
if !e.value.IsValid() {
|
||||
this.Lock()
|
||||
delete(this.cache, entry.key)
|
||||
delete(this.cache, e.key)
|
||||
this.Unlock()
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue