addStream method

void addStream(
  1. Direction dir
)

Implementation

void addStream(Direction dir) {
  if (_isDone) {
    throw _wrapError(network_errors.ResourceScopeClosedException());
  }

  final err = _resources.addStream(dir, name); // Pass owner id (name)
  if (err != null) {
    throw _wrapError(err); // Wrap it for context
  }

  try {
    _addStreamForAncestors(dir);
  } catch (e) {
    _resources.removeStream(dir, name); // Rollback, Pass owner id (name)
    if (e is network_errors.ResourceLimitExceededException ||
        e is network_errors.ResourceScopeClosedException) {
      rethrow;
    } else if (e is Exception) {
      throw _wrapError(e);
    } else {
      rethrow;
    }
  }
}