Skip to content

Commit 1ab8f29

Browse files
committed
Make the child watches updater asynchronous
1 parent 4a1423b commit 1ab8f29

File tree

1 file changed

+4
-2
lines changed

1 file changed

+4
-2
lines changed

src/main/java/engineering/swat/watch/impl/jdk/JDKFileTreeWatch.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ public JDKFileTreeWatch(Path rootPath, Path relativePathParent, Executor exec,
6262
this.rootPath = rootPath;
6363
this.relativePathParent = relativePathParent;
6464

65-
var internalEventHandler = eventHandler.andThen(new ChildWatchesUpdater());
65+
var internalEventHandler = eventHandler.andThen(new AsyncChildWatchesUpdater());
6666
this.internal = new JDKDirectoryWatch(path, exec, internalEventHandler) {
6767

6868
// Override to ensure that this watch relativizes events wrt
@@ -103,15 +103,17 @@ protected WatchEvent translate(java.nio.file.WatchEvent<?> jdkEvent) {
103103
* is opened for that subdirectory; (c) when a subdirectory deletion
104104
* happens, an existing child watch is closed for that subdirectory.
105105
*/
106-
private class ChildWatchesUpdater implements BiConsumer<EventHandlingWatch, WatchEvent> {
106+
private class AsyncChildWatchesUpdater implements BiConsumer<EventHandlingWatch, WatchEvent> {
107107
@Override
108108
public void accept(EventHandlingWatch watch, WatchEvent event) {
109+
exec.execute(() -> {
109110
switch (event.getKind()) {
110111
case OVERFLOW: acceptOverflow(); break;
111112
case CREATED: getFileNameAndThen(event, this::acceptCreated); break;
112113
case DELETED: getFileNameAndThen(event, this::acceptDeleted); break;
113114
case MODIFIED: break;
114115
}
116+
});
115117
}
116118

117119
private void getFileNameAndThen(WatchEvent event, Consumer<Path> consumer) {

0 commit comments

Comments
 (0)