reset method
Closes both ends of the stream
Implementation
@override
Future<void> reset() async {
await _closedLock.synchronized(() async {
if (_isClosed) return;
_isClosed = true; // Mark as closed immediately
_logger.fine('Resetting stream $_id');
try {
await _underlyingMuxedStream.reset();
} catch (e, s) {
_logger.warning('Error resetting underlying muxed stream for stream $_id: $e\n$s');
}
// Only clean up scope once to prevent double cleanup
if (!_scopeCleanedUp) {
_logger.fine('Stream $_id: Cleaning up management scope during reset');
_managementScope.done();
_scopeCleanedUp = true;
} else {
_logger.fine('Stream $_id: Scope already cleaned up, skipping during reset');
}
// Let SwarmConn handle its own cleanup without additional scope cleanup
await _conn.removeStream(this);
_logger.fine('Stream $_id reset and removed from connection');
});
}