runZoned<R> static method

R runZoned<R>(
  1. R body(), {
  2. Directory createDirectory(
    1. String
    )?,
  3. Directory getCurrentDirectory()?,
  4. void setCurrentDirectory(
    1. String
    )?,
  5. Directory getSystemTempDirectory()?,
  6. File createFile(
    1. String
    )?,
  7. Future<FileStat> stat(
    1. String
    )?,
  8. FileStat statSync(
    1. String
    )?,
  9. Future<bool> fseIdentical(
    1. String,
    2. String
    )?,
  10. bool fseIdenticalSync(
    1. String,
    2. String
    )?,
  11. Future<FileSystemEntityType> fseGetType(
    1. String,
    2. bool
    )?,
  12. FileSystemEntityType fseGetTypeSync(
    1. String,
    2. bool
    )?,
  13. Stream<FileSystemEvent> fsWatch(
    1. String,
    2. int,
    3. bool
    )?,
  14. bool fsWatchIsSupported()?,
  15. Link createLink(
    1. String
    )?,
  16. Future<Socket> socketConnect(
    1. dynamic,
    2. int, {
    3. dynamic sourceAddress,
    4. int sourcePort,
    5. Duration? timeout,
    })?,
  17. Future<ConnectionTask<Socket>> socketStartConnect(
    1. dynamic,
    2. int, {
    3. dynamic sourceAddress,
    4. int sourcePort,
    })?,
  18. Future<ServerSocket> serverSocketBind(
    1. dynamic,
    2. int, {
    3. int backlog,
    4. bool shared,
    5. bool v6Only,
    })?,
  19. Stdin stdin()?,
  20. Stdout stdout()?,
  21. Stdout stderr()?,
})

Runs body in a fresh Zone using the provided overrides.

See the documentation on the corresponding methods of IOOverrides for information about what the optional arguments do.

Implementation

static R runZoned<R>(
  R body(), {
  // Directory
  Directory Function(String)? createDirectory,
  Directory Function()? getCurrentDirectory,
  void Function(String)? setCurrentDirectory,
  Directory Function()? getSystemTempDirectory,

  // File
  File Function(String)? createFile,

  // FileStat
  Future<FileStat> Function(String)? stat,
  FileStat Function(String)? statSync,

  // FileSystemEntity
  Future<bool> Function(String, String)? fseIdentical,
  bool Function(String, String)? fseIdenticalSync,
  Future<FileSystemEntityType> Function(String, bool)? fseGetType,
  FileSystemEntityType Function(String, bool)? fseGetTypeSync,

  // _FileSystemWatcher
  Stream<FileSystemEvent> Function(String, int, bool)? fsWatch,
  bool Function()? fsWatchIsSupported,

  // Link
  Link Function(String)? createLink,

  // Socket
  Future<Socket> Function(
    dynamic,
    int, {
    dynamic sourceAddress,
    int sourcePort,
    Duration? timeout,
  })?
  socketConnect,
  Future<ConnectionTask<Socket>> Function(
    dynamic,
    int, {
    dynamic sourceAddress,
    int sourcePort,
  })?
  socketStartConnect,

  // ServerSocket
  Future<ServerSocket> Function(
    dynamic,
    int, {
    int backlog,
    bool v6Only,
    bool shared,
  })?
  serverSocketBind,

  // Standard Streams
  Stdin Function()? stdin,
  Stdout Function()? stdout,
  Stdout Function()? stderr,
}) {
  // Avoid building chains of override scopes. Just copy outer scope's
  // functions and `_previous`.
  var current = IOOverrides.current;
  _IOOverridesScope? currentScope;
  if (current is _IOOverridesScope) {
    currentScope = current;
    current = currentScope._previous;
  }
  IOOverrides overrides = new _IOOverridesScope(
    current,
    // Directory
    createDirectory ?? currentScope?._createDirectory,
    getCurrentDirectory ?? currentScope?._getCurrentDirectory,
    setCurrentDirectory ?? currentScope?._setCurrentDirectory,
    getSystemTempDirectory ?? currentScope?._getSystemTempDirectory,

    // File
    createFile ?? currentScope?._createFile,

    // FileStat
    stat ?? currentScope?._stat,
    statSync ?? currentScope?._statSync,

    // FileSystemEntity
    fseIdentical ?? currentScope?._fseIdentical,
    fseIdenticalSync ?? currentScope?._fseIdenticalSync,
    fseGetType ?? currentScope?._fseGetType,
    fseGetTypeSync ?? currentScope?._fseGetTypeSync,

    // _FileSystemWatcher
    fsWatch ?? currentScope?._fsWatch,
    fsWatchIsSupported ?? currentScope?._fsWatchIsSupported,

    // Link
    createLink ?? currentScope?._createLink,

    // Socket
    socketConnect ?? currentScope?._socketConnect,
    socketStartConnect ?? currentScope?._socketStartConnect,

    // ServerSocket
    serverSocketBind ?? currentScope?._serverSocketBind,

    // Standard streams
    stdin ?? currentScope?._stdin,
    stdout ?? currentScope?._stdout,
    stderr ?? currentScope?._stderr,
  );
  return dart_async.runZoned<R>(
    body,
    zoneValues: {_ioOverridesToken: overrides},
  );
}