process changes in configuration

This commit is contained in:
Zlatin Balevsky
2020-03-26 15:19:09 +00:00
parent 056e5800c2
commit a4bee73b8a
3 changed files with 23 additions and 1 deletions

View File

@@ -430,6 +430,7 @@ public class Core {
register(DirectoryWatchedEvent.class, directoryWatcher)
register(WatchedDirectoryConvertedEvent.class, directoryWatcher)
register(DirectoryUnsharedEvent.class, directoryWatcher)
register(WatchedDirectoryConfigurationEvent.class, directoryWatcher)
}
}

View File

@@ -15,6 +15,7 @@ import java.util.concurrent.ConcurrentHashMap
import com.muwire.core.EventBus
import com.muwire.core.MuWireSettings
import com.muwire.core.SharedFile
import com.muwire.core.files.directories.WatchedDirectoryConfigurationEvent
import com.muwire.core.files.directories.WatchedDirectoryConvertedEvent
import com.muwire.core.files.directories.WatchedDirectoryManager
@@ -80,6 +81,19 @@ class DirectoryWatcher {
wk?.cancel()
}
void onWatchedDirectoryConfigurationEvent(WatchedDirectoryConfigurationEvent e) {
if (watchService == null)
return // still converting
if (!e.autoWatch) {
WatchKey wk = watchedDirectories.remove(e.directory)
wk?.cancel()
} else if (!watchedDirectories.containsKey(e.directory)) {
Path path = e.directory.toPath()
def wk = path.register(watchService, kinds)
watchedDirectories.put(e.directory, wk)
} // else it was already watched
}
private void watch() {
try {
while(!shutdown) {

View File

@@ -61,7 +61,14 @@ class WatchedDirectoryManager {
newDir.autoWatch = e.autoWatch
persist(newDir)
} else {
// TODO: update state and stuff
def wd = watchedDirs.get(e.directory)
if (wd == null) {
log.severe("got a configuration event for a non-watched directory ${e.directory}")
return
}
wd.autoWatch = e.autoWatch
wd.syncInterval = e.syncInterval
persist(wd)
}
}