ProjectSystem\FileChangeWatcher.cs (50)
94private readonly Kind _kind;
97/// The path to subscribe to for <see cref="Kind.WatchDirectory"/> or <see cref="Kind.WatchFile"/>.
102/// The extension filter to apply for <see cref="Kind.WatchDirectory"/>. This value may be
108/// The file change flags to apply for <see cref="Kind.WatchFile"/>.
113/// The instance to receive callback events for <see cref="Kind.WatchDirectory"/> or
114/// <see cref="Kind.WatchFile"/>.
119/// The collection holding cookies. For <see cref="Kind.WatchDirectory"/>, the operation will add the
120/// resulting cookie to this collection. For <see cref="Kind.UnwatchDirectories"/>, the operation will
132/// operation for <see cref="Kind.WatchFile"/>, or read by the operation for <see cref="Kind.UnwatchFile"/>.
137/// A collection of file watcher tokens to remove for <see cref="Kind.UnwatchFiles"/>.
141private WatcherOperation(Kind kind)
143Contract.ThrowIfFalse(kind is Kind.None);
156private WatcherOperation(Kind kind, string directory, string? filter, IVsFreeThreadedFileChangeEvents2 sink, List<uint> cookies)
158Contract.ThrowIfFalse(kind is Kind.WatchDirectory);
172private WatcherOperation(Kind kind, string path, _VSFILECHANGEFLAGS fileChangeFlags, IVsFreeThreadedFileChangeEvents2 sink, Context.RegularWatchedFile token)
174Contract.ThrowIfFalse(kind is Kind.WatchFile);
188private WatcherOperation(Kind kind, List<uint> cookies)
190Contract.ThrowIfFalse(kind is Kind.UnwatchDirectories);
204private WatcherOperation(Kind kind, IEnumerable<Context.RegularWatchedFile> tokens)
206Contract.ThrowIfFalse(kind is Kind.UnwatchFiles);
220private WatcherOperation(Kind kind, Context.RegularWatchedFile token)
222Contract.ThrowIfFalse(kind is Kind.UnwatchFile);
250public static WatcherOperation Empty => new(Kind.None);
253=> new(Kind.WatchDirectory, directory, filter, sink, cookies);
256=> new(Kind.WatchFile, path, fileChangeFlags, sink, token);
259=> new(Kind.UnwatchDirectories, cookies);
262=> new(Kind.UnwatchFiles, tokens);
265=> new(Kind.UnwatchFile, token);
280if (other._kind == Kind.None)
285else if (_kind == Kind.None)
293case Kind.WatchDirectory:
294case Kind.WatchFile:
298case Kind.UnwatchFile when other._kind == Kind.UnwatchFile:
302case Kind.UnwatchFile when other._kind == Kind.UnwatchFiles:
306case Kind.UnwatchDirectories when other._kind == Kind.UnwatchDirectories:
312case Kind.UnwatchFiles when other._kind == Kind.UnwatchFile:
316case Kind.UnwatchFiles when other._kind == Kind.UnwatchFiles:
332case Kind.None:
335case Kind.WatchDirectory:
344case Kind.WatchFile:
348case Kind.UnwatchFile:
352case Kind.UnwatchDirectories:
357case Kind.UnwatchFiles: