(ctx context.Context, logger slog.Logger, tracer trace.Tracer, coordinatee tailnet.Coordinatee)
| 525 | } |
| 526 | |
| 527 | func NewMultiAgentController(ctx context.Context, logger slog.Logger, tracer trace.Tracer, coordinatee tailnet.Coordinatee) *MultiAgentController { |
| 528 | m := &MultiAgentController{ |
| 529 | BasicCoordinationController: &tailnet.BasicCoordinationController{ |
| 530 | Logger: logger, |
| 531 | Coordinatee: coordinatee, |
| 532 | SendAcks: false, // we are a client, connecting to multiple agents |
| 533 | Initiator: codersdk.DisconnectInitiatorServer, |
| 534 | Direction: codersdk.ConnectionDirectionServerToAgent, |
| 535 | }, |
| 536 | logger: logger, |
| 537 | tracer: tracer, |
| 538 | connectionTimes: make(map[uuid.UUID]time.Time), |
| 539 | tickets: make(map[uuid.UUID]map[uuid.UUID]struct{}), |
| 540 | expireOldAgentsDone: make(chan struct{}), |
| 541 | } |
| 542 | ctx, m.cancel = context.WithCancel(ctx) |
| 543 | go m.expireOldAgents(ctx) |
| 544 | return m |
| 545 | } |
| 546 | |
| 547 | type Pinger interface { |
| 548 | Ping(context.Context) (time.Duration, error) |
no test coverage detected