*[<Null safety>](https://dart.dev/null-safety)*
int connect (dynamic flags, int mode, InterfaceRequest request, [dynamic parentFlags])
override
@override int connect(OpenFlags flags, int mode, fidl.InterfaceRequest<Node> request, [OpenFlags? parentFlags]) { if (_isClosed) { sendErrorEvent(flags, ZX.ERR_NOT_SUPPORTED, request); return ZX.ERR_NOT_SUPPORTED; } // There should be no modeType* flags set, except for, possibly, // modeTypeDirectory when the target is a pseudo dir. if ((mode & ~modeProtectionMask) & ~modeTypeDirectory != 0) { sendErrorEvent(flags, ZX.ERR_INVALID_ARGS, request); return ZX.ERR_INVALID_ARGS; } var connectFlags = filterForNodeReference(flags); // Explicitly expand OpenFlags.posixDeprecated into new equivalent flags. // TODO(fxbug.dev/81185): Remove entire branch when flag is removed from fuchsia.io. if ((connectFlags & OpenFlags.posixDeprecated) != OpenFlags.$none) { connectFlags |= OpenFlags.posixWritable | OpenFlags.posixExecutable; connectFlags &= ~OpenFlags.posixDeprecated; } parentFlags ??= Flags.fsRightsDefault(); // Grant POSIX clients additional rights. if (Flags.isPosixWritable(connectFlags)) { connectFlags |= parentFlags & OpenFlags.rightWritable; } if (Flags.isPosixExecutable(connectFlags)) { connectFlags |= parentFlags & OpenFlags.rightExecutable; } // Clear any remaining POSIX right expansion flags. connectFlags &= ~(OpenFlags.posixWritable | OpenFlags.posixExecutable); final status = _validateFlags(connectFlags); if (status != ZX.OK) { sendErrorEvent(connectFlags, status, request); return status; } final connection = _DirConnection( mode, connectFlags, this, fidl.InterfaceRequest(request.passChannel())); _connections.add(connection); return ZX.OK; }