connect method
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();
}