start static method
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),
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);
}