connectAuto method

  1. @override
Future<MqttConnectionStatus?> connectAuto(
  1. String server,
  2. int port
)
override

Connect Auto

Implementation

@override
Future<MqttConnectionStatus?> connectAuto(String server, int port) {
  final completer = Completer<MqttConnectionStatus?>();
  MqttLogger.log('MqttNormalConnection::connectAuto - entered');
  try {
    // Connect and save the socket.
    Socket.connect(server, port)
        .then((dynamic socket) {
          // Socket options
          final applied = _applySocketOptions(socket, socketOptions);
          if (applied) {
            MqttLogger.log(
              'MqttNormalConnection::connectAuto - socket options applied',
            );
          }
          client = socket;
          _startListening();
          completer.complete();
        })
        .catchError((dynamic e) {
          if (_isSocketTimeout(e)) {
            final message =
                'MqttNormalConnection::connectAuto - The connection to the message broker '
                '{$server}:{$port} could not be made, a socket timeout has occurred';
            MqttLogger.log(message);
            completer.complete();
          } else {
            onError(e);
            completer.completeError(e);
          }
        });
  } on Exception catch (e, stack) {
    completer.completeError(e);
    final message =
        'MqttNormalConnection::ConnectAuto - The connection to the message '
        'broker {$server}:{$port} could not be made.';
    Error.throwWithStackTrace(MqttNoConnectionException(message), stack);
  }
  return completer.future;
}