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