reconnect method
Implementation
Future<Connection> reconnect([bool noreplyWait = true]) {
close(noreplyWait);
if (_listeners["connect"] != null) {
for (var func in _listeners["connect"]!) {
func();
}
}
var sock = Socket.connect(_host, _port);
if (_sslOpts != null && _sslOpts.containsKey('ca')) {
SecurityContext context = SecurityContext()
..setTrustedCertificates(_sslOpts['ca']);
sock = SecureSocket.connect(_host, _port, context: context);
}
sock.then((socket) {
// ignore: unnecessary_null_comparison
if (socket != null) {
_socket = socket;
_socket!.listen(_handleResponse, onDone: () {
if (_listeners["close"] != null) {
for (var func in _listeners["close"]!) {
func();
}
}
});
_clientFirstMessage = "n=$_user,r=${_makeSalt()}";
String message = json.encode({
'protocol_version': _protocolVersion,
'authentication_method': "SCRAM-SHA-256",
// ignore: unnecessary_brace_in_string_interps
'authentication': "n,,${_clientFirstMessage}"
});
List<int> handshake =
List.from(_toBytes(p.VersionDummy_Version.V1_0.value))
..addAll(message.codeUnits)
..add(0);
_socket!.add(handshake);
}
}).catchError((err) {
_completer.completeError(
RqlDriverError("Could not connect to $_host:$_port. Error $err"),
);
});
return _completer.future;
}