connect method
Connect to NATS server
Implementation
Future connect(
Uri uri, {
ConnectOption? connectOption,
int timeout = 5,
bool retry = true,
int retryInterval = 10,
int retryCount = 3,
}) async {
this._retry = retry;
_connectCompleter = Completer();
if (_clientStatus == _ClientStatus.used) {
throw Exception(
NatsException('client in use. must close before call connect'));
}
if (status != Status.disconnected && status != Status.closed) {
return Future.error('Error: status not disconnected and not closed');
}
_clientStatus = _ClientStatus.used;
if (connectOption != null) _connectOption = connectOption;
do {
_connectLoop(
uri,
timeout: timeout,
retryInterval: retryInterval,
retryCount: retryCount,
);
if (_clientStatus == _ClientStatus.closed || status == Status.closed) {
if (!_connectCompleter.isCompleted) {
_connectCompleter.complete();
}
close();
_clientStatus = _ClientStatus.closed;
return;
}
if (!this._retry || retryCount != -1) {
return _connectCompleter.future;
}
await for (var s in statusStream) {
if (s == Status.disconnected) {
break;
}
if (s == Status.closed) {
return;
}
}
} while (this._retry && retryCount == -1);
return _connectCompleter.future;
}