StunClientPool constructor

StunClientPool({
  1. List<({String host, int port})>? stunServers,
  2. Duration timeout = defaultTimeout,
  3. Duration healthCheckInterval = defaultHealthCheckInterval,
})

Creates a new STUN client pool

stunServers - List of STUN servers to use timeout - Timeout for STUN requests healthCheckInterval - Interval for health checks

Implementation

StunClientPool({
  List<({String host, int port})>? stunServers,
  this.timeout = defaultTimeout,
  this.healthCheckInterval = defaultHealthCheckInterval,
}) {
  final servers = stunServers ?? defaultStunServers;

  // Initialize the server pool
  for (final server in servers) {
    _servers.add(
      _StunServerInfo(
        client: StunClient(
          serverHost: server.host,
          stunPort: server.port,
          timeout: timeout,
        ),
        host: server.host,
        port: server.port,
        healthScore: 100, // Start with perfect health
        lastResponseTime: null,
        lastSuccessTime: null,
        consecutiveFailures: 0,
      ),
    );
  }

  // Start periodic health checks
  _startHealthChecks();
}