reset method

  1. @override
Future<void> reset()
override

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');
  });
}