open method
Implementation
@override
Future<void> open() async {
if (_closed) {
throw StateError('TcpModbusByteTransport already closed');
}
if (_opened) return;
final fut = Socket.connect(host, port);
final socket = await (connectTimeout == null
? fut
: fut.timeout(connectTimeout!));
socket.setOption(SocketOption.tcpNoDelay, true);
_socket = socket;
_rxSub = socket.listen(
(chunk) {
if (!_rxCtrl.isClosed) _rxCtrl.add(chunk);
},
onError: (Object e, StackTrace st) {
if (!_rxCtrl.isClosed) _rxCtrl.addError(e, st);
},
onDone: () {
if (!_closed) {
_closed = true;
if (!_rxCtrl.isClosed) _rxCtrl.close();
}
},
cancelOnError: false,
);
_opened = true;
}