Support multiple registered interfaces in interface monitor

This commit is contained in:
世界 2026-06-03 10:24:14 +08:00
parent 1aa83a9f92
commit 3b51857024
No known key found for this signature in database
GPG key ID: CD109927C34A63C4
2 changed files with 5 additions and 5 deletions

View file

@ -31,7 +31,7 @@ type DefaultInterfaceMonitor interface {
RegisterCallback(callback DefaultInterfaceUpdateCallback) *list.Element[DefaultInterfaceUpdateCallback] RegisterCallback(callback DefaultInterfaceUpdateCallback) *list.Element[DefaultInterfaceUpdateCallback]
UnregisterCallback(element *list.Element[DefaultInterfaceUpdateCallback]) UnregisterCallback(element *list.Element[DefaultInterfaceUpdateCallback])
RegisterMyInterface(interfaceName string) RegisterMyInterface(interfaceName string)
MyInterface() string MyInterfaces() []string
} }
type DefaultInterfaceMonitorOptions struct { type DefaultInterfaceMonitorOptions struct {

View file

@ -47,7 +47,7 @@ type defaultInterfaceMonitor struct {
element *list.Element[NetworkUpdateCallback] element *list.Element[NetworkUpdateCallback]
access sync.Mutex access sync.Mutex
callbacks list.List[DefaultInterfaceUpdateCallback] callbacks list.List[DefaultInterfaceUpdateCallback]
myInterface string myInterfaces []string
} }
func NewDefaultInterfaceMonitor(networkMonitor NetworkUpdateMonitor, logger logger.Logger, options DefaultInterfaceMonitorOptions) (DefaultInterfaceMonitor, error) { func NewDefaultInterfaceMonitor(networkMonitor NetworkUpdateMonitor, logger logger.Logger, options DefaultInterfaceMonitorOptions) (DefaultInterfaceMonitor, error) {
@ -137,11 +137,11 @@ func (m *defaultInterfaceMonitor) emit(defaultInterface *control.Interface, flag
func (m *defaultInterfaceMonitor) RegisterMyInterface(interfaceName string) { func (m *defaultInterfaceMonitor) RegisterMyInterface(interfaceName string) {
m.access.Lock() m.access.Lock()
defer m.access.Unlock() defer m.access.Unlock()
m.myInterface = interfaceName m.myInterfaces = append(m.myInterfaces, interfaceName)
} }
func (m *defaultInterfaceMonitor) MyInterface() string { func (m *defaultInterfaceMonitor) MyInterfaces() []string {
m.access.Lock() m.access.Lock()
defer m.access.Unlock() defer m.access.Unlock()
return m.myInterface return m.myInterfaces
} }