diff options
Diffstat (limited to 'configserver/src/main/java/com/yahoo/vespa/config/server/filedistribution/FileDistributionProvider.java')
-rw-r--r-- | configserver/src/main/java/com/yahoo/vespa/config/server/filedistribution/FileDistributionProvider.java | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/filedistribution/FileDistributionProvider.java b/configserver/src/main/java/com/yahoo/vespa/config/server/filedistribution/FileDistributionProvider.java new file mode 100644 index 00000000000..2453381131d --- /dev/null +++ b/configserver/src/main/java/com/yahoo/vespa/config/server/filedistribution/FileDistributionProvider.java @@ -0,0 +1,55 @@ +// Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +package com.yahoo.vespa.config.server.filedistribution; + +import com.yahoo.config.model.api.FileDistribution; +import com.yahoo.config.application.api.FileRegistry; +import com.yahoo.vespa.filedistribution.FileDistributionManager; + +import java.io.File; +import java.util.concurrent.locks.Lock; + +/** + * Provides file distribution registry and invoker. + * + * @author lulf + * @since 5.1.14 + */ +public class FileDistributionProvider { + + private final FileRegistry fileRegistry; + private final FileDistribution fileDistribution; + + public FileDistributionProvider(File applicationDir, String zooKeepersSpec, String applicationId, Lock fileDistributionLock) { + ensureDirExists(FileDistribution.getDefaultFileDBPath()); + final FileDistributionManager manager = new FileDistributionManager( + FileDistribution.getDefaultFileDBPath(), + applicationDir, + zooKeepersSpec, + applicationId, + fileDistributionLock); + this.fileDistribution = new FileDBHandler(manager); + this.fileRegistry = new FileDBRegistry(manager); + } + + public FileDistributionProvider(FileRegistry fileRegistry, FileDistribution fileDistribution) { + this.fileRegistry = fileRegistry; + this.fileDistribution = fileDistribution; + } + + public FileRegistry getFileRegistry() { + return fileRegistry; + } + + public FileDistribution getFileDistribution() { + return fileDistribution; + } + + private void ensureDirExists(File dir) { + if (!dir.exists()) { + boolean success = dir.mkdirs(); + if (!success) + throw new RuntimeException("Could not create directory " + dir.getPath()); + } + } + +} |