mirror of
https://github.com/netbirdio/netbird.git
synced 2026-07-17 20:19:55 +00:00
Relocate WorkerICE (renamed worker.ICE) and WorkerRelay plus ConnPriority into client/internal/peer/worker. To break the peer<->worker cycle the workers no longer take *Conn or ConnConfig: callbacks are passed as plain functions (Conn's unexported methods as method values), and each worker receives only the fields it needs (key, ICE config, isController) plus a small services struct. Context is passed to OnNewOffer instead of stored. Move the worker connection-status helper the other way, out of the worker package into peer as worker_status.go (WorkerStatus / AtomicWorkerStatus), since only Conn uses it.
70 lines
1.6 KiB
Go
70 lines
1.6 KiB
Go
package peer
|
|
|
|
import (
|
|
"time"
|
|
|
|
"github.com/pion/ice/v4"
|
|
|
|
"github.com/netbirdio/netbird/client/internal/peer/signaling"
|
|
"github.com/netbirdio/netbird/client/internal/peer/worker"
|
|
"github.com/netbirdio/netbird/route"
|
|
)
|
|
|
|
// event is a message processed by the Conn event loop. All mutable Conn state
|
|
// is owned by that loop; producers deliver events through the mailbox and
|
|
// never mutate Conn state directly.
|
|
type event any
|
|
|
|
// evClose asks the event loop to tear down the connection. done is closed
|
|
// once the teardown finished.
|
|
type evClose struct {
|
|
signalToRemote bool
|
|
done chan struct{}
|
|
}
|
|
|
|
type evRemoteOffer struct {
|
|
offer signaling.OfferAnswer
|
|
}
|
|
|
|
type evRemoteAnswer struct {
|
|
answer signaling.OfferAnswer
|
|
}
|
|
|
|
type evRemoteCandidate struct {
|
|
candidate ice.Candidate
|
|
haRoutes route.HAMap
|
|
}
|
|
|
|
type evICEReady struct {
|
|
priority worker.ConnPriority
|
|
info worker.ICEConnInfo
|
|
}
|
|
|
|
type evICEDown struct {
|
|
sessionChanged bool
|
|
}
|
|
|
|
type evRelayReady struct {
|
|
info worker.RelayConnInfo
|
|
}
|
|
|
|
type evRelayDown struct{}
|
|
|
|
// evRelayDialDone reports that the relay dial helper goroutine finished,
|
|
// successfully or not, so the loop may dispatch a pending offer.
|
|
type evRelayDialDone struct{}
|
|
|
|
type evWGTimeout struct{}
|
|
|
|
// evWGHandshake reports the first WireGuard handshake of the current watcher run.
|
|
type evWGHandshake struct {
|
|
when time.Time
|
|
}
|
|
|
|
// evWGCheckOK reports a watcher check that observed a fresh handshake,
|
|
// including handshakes of connections that were already up.
|
|
type evWGCheckOK struct{}
|
|
|
|
// evGuardTick asks the loop to send a new offer to restore connectivity.
|
|
type evGuardTick struct{}
|