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. SocksCredentials? credentials,
  8. List<String>? supportedProtocols,
  9. 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,
  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,
      credentials, supportedProtocols, timeout);
  return ConnectionTask.fromSocket(operation.result.future, operation.cancel);
}