connect method

  1. @override
Future<void> connect({
  1. String? host,
  2. int? port,
  3. Duration? duration,
  4. Duration? deadline,
})
override

TCP connect

Implementation

@override
Future<void> connect(
    {String? host, int? port, Duration? duration, Duration? deadline}) async {
  if (log) {
    loger.log(
      "\u001b[32m${"connecting"}\u001b[0m",
      time: DateTime.now(),
      name: "tcp",
    );
  }
  _ip = host ?? _ip;
  _port = port ?? _port;
  _duration = duration ?? _duration;
  _deadline = deadline ?? _deadline;

  if (status != ConnectStatus.disconnect) {
    return Future.value();
  }
  status = ConnectStatus.connecting;
  try {
    _socket = await getConnectionSocket(duration: duration);
    _remoteInfo = RemoteInfo(
      address: _socket?.remoteAddress.address ?? "",
      host: (credentials.isSecure ? credentials.authority : null) ??
          _socket?.remoteAddress.host ??
          "",
      port: _port,
      family: _socket?.remoteAddress.type.name ?? "",
    );
    _localInfo = LocalInfo(
      address: _localInfo.address,
      family: _socket?.address.type.name ?? "",
      port: _socket?.port ?? 0,
    );
    status = ConnectStatus.connected;
    _onConnect?.call();
  } catch (e) {
    loger.log(
      "connect",
      error: e,
      name: "tcp",
    );
    status = ConnectStatus.disconnect;
    _onError?.call(Error.from(e));
    _onClose?.call();
    return Future.value();
  }
  _broadcastNotifications(deadline: _deadline);
  return Future.value();
}