mirror of
https://github.com/MetaCubeX/mihomo.git
synced 2026-02-26 16:57:08 +00:00
chore: add lock in baseProvider for thread-safe
This commit is contained in:
@@ -8,6 +8,7 @@ import (
|
||||
"reflect"
|
||||
"runtime"
|
||||
"strings"
|
||||
"sync"
|
||||
"time"
|
||||
|
||||
"github.com/metacubex/mihomo/adapter"
|
||||
@@ -43,6 +44,7 @@ type providerForApi struct {
|
||||
}
|
||||
|
||||
type baseProvider struct {
|
||||
mutex sync.RWMutex
|
||||
name string
|
||||
proxies []C.Proxy
|
||||
healthCheck *HealthCheck
|
||||
@@ -54,6 +56,8 @@ func (bp *baseProvider) Name() string {
|
||||
}
|
||||
|
||||
func (bp *baseProvider) Version() uint32 {
|
||||
bp.mutex.RLock()
|
||||
defer bp.mutex.RUnlock()
|
||||
return bp.version
|
||||
}
|
||||
|
||||
@@ -73,10 +77,14 @@ func (bp *baseProvider) Type() P.ProviderType {
|
||||
}
|
||||
|
||||
func (bp *baseProvider) Proxies() []C.Proxy {
|
||||
bp.mutex.RLock()
|
||||
defer bp.mutex.RUnlock()
|
||||
return bp.proxies
|
||||
}
|
||||
|
||||
func (bp *baseProvider) Count() int {
|
||||
bp.mutex.RLock()
|
||||
defer bp.mutex.RUnlock()
|
||||
return len(bp.proxies)
|
||||
}
|
||||
|
||||
@@ -93,6 +101,8 @@ func (bp *baseProvider) RegisterHealthCheckTask(url string, expectedStatus utils
|
||||
}
|
||||
|
||||
func (bp *baseProvider) setProxies(proxies []C.Proxy) {
|
||||
bp.mutex.Lock()
|
||||
defer bp.mutex.Unlock()
|
||||
bp.proxies = proxies
|
||||
bp.version += 1
|
||||
bp.healthCheck.setProxies(proxies)
|
||||
|
||||
Reference in New Issue
Block a user