getNextProxy method

  1. @override
Proxy? getNextProxy()
override

Gets the next proxy from the internal list

Implementation

@override
Proxy? getNextProxy() {
  if (_proxies.isEmpty) {
    return null;
  }

  // Sort proxies by last used timestamp (ascending)
  final sortedProxies = List<Proxy>.from(_proxies)..sort((a, b) {
    final aKey = '${a.ip}:${a.port}';
    final bKey = '${b.ip}:${b.port}';
    final aLastUsed = _lastUsedMap[aKey] ?? 0;
    final bLastUsed = _lastUsedMap[bKey] ?? 0;
    return aLastUsed.compareTo(bLastUsed);
  });

  final proxy = sortedProxies.first;
  final proxyKey = '${proxy.ip}:${proxy.port}';
  _lastUsedMap[proxyKey] = DateTime.now().millisecondsSinceEpoch;

  return proxy;
}