start static method

ConnectionTask<Socket> start({
  1. required InternetAddress proxyHost,
  2. required int proxyPort,
  3. required String targetHost,
  4. required int targetPort,
  5. String? tlsHost,
  6. SecurityContext? securityContext,
  7. bool onBadCertificate(
    1. X509Certificate
    )?,
  8. SocksCredentials? credentials,
  9. List<String>? supportedProtocols,
  10. Duration timeout = const Duration(seconds: 30),
})

Implementation

static ConnectionTask<Socket> start({
  required InternetAddress proxyHost,
  required int proxyPort,
  required String targetHost,
  required int targetPort,
  String? tlsHost,
  SecurityContext? securityContext,
  bool Function(X509Certificate)? onBadCertificate,
  SocksCredentials? credentials,
  List<String>? supportedProtocols,
  Duration timeout = const Duration(seconds: 30),
}) {
  for (final port in [proxyPort, targetPort]) {
    if (port < 1 || port > 65535) throw ArgumentError.value(port, 'port');
  }
  if (proxyHost.type == InternetAddressType.unix) {
    throw ArgumentError('A numeric IP proxy address is required');
  }
  if (timeout <= Duration.zero) throw ArgumentError.value(timeout, 'timeout');
  if (tlsHost != null && tlsHost.isEmpty) {
    throw ArgumentError.value(tlsHost, 'tlsHost');
  }
  final request = encodeSocksDestination(targetHost, targetPort);
  final operation = _ConnectOperation();
  operation.run(proxyHost, proxyPort, request, tlsHost, securityContext,
      onBadCertificate, credentials, supportedProtocols, timeout);
  return ConnectionTask.fromSocket(operation.result.future, operation.cancel);
}