mirror of
https://github.com/netbirdio/netbird.git
synced 2025-08-08 14:55:30 +02:00
This PR introduces a new inactivity package responsible for monitoring peer activity and notifying when peers become inactive. Introduces a new Signal message type to close the peer connection after the idle timeout is reached. Periodically checks the last activity of registered peers via a Bind interface. Notifies via a channel when peers exceed a configurable inactivity threshold. Default settings DefaultInactivityThreshold is set to 15 minutes, with a minimum allowed threshold of 1 minute. Limitations This inactivity check does not support kernel WireGuard integration. In kernel–user space communication, the user space side will always be responsible for closing the connection.
25 lines
333 B
Go
25 lines
333 B
Go
package inactivity
|
|
|
|
import "time"
|
|
|
|
var newTicker = func(d time.Duration) Ticker {
|
|
return &realTicker{t: time.NewTicker(d)}
|
|
}
|
|
|
|
type Ticker interface {
|
|
C() <-chan time.Time
|
|
Stop()
|
|
}
|
|
|
|
type realTicker struct {
|
|
t *time.Ticker
|
|
}
|
|
|
|
func (r *realTicker) C() <-chan time.Time {
|
|
return r.t.C
|
|
}
|
|
|
|
func (r *realTicker) Stop() {
|
|
r.t.Stop()
|
|
}
|