package com.distkv.server.storeserver; import com.google.common.base.Strings; import com.typesafe.config.Config; import com.typesafe.config.ConfigFactory; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.File; public class StoreConfig { private static final Logger LOG = LoggerFactory.getLogger(StoreConfig.class); public static final String CUSTOM_CONFIG_FILE = "store.conf"; public static final String DEFAULT_CONFIG_FILE = "store.default.conf"; private int listeningPort; private int shardsNum; /** * Mode represents how to start the store server. */ private RunningMode mode; /** * Meta Server address str. */ private final String metaServerAddresses; public int getPort() { return listeningPort; } public void setPort(int port) { listeningPort = port; } public int getShardNum() { return shardsNum; } public RunningMode getMode() { return mode; } public void setMode(RunningMode mode) { this.mode = mode; } public String getMetaServerAddresses() { return metaServerAddresses; } public StoreConfig(Config config) { listeningPort = config.getInt("store.listeningPort"); shardsNum = config.getInt("store.shardsNum"); metaServerAddresses = config.getString("store.metaServerAddresses"); mode = config.getEnum(RunningMode.class, "store.mode"); } @Override public String toString() { return "listeningPort: " + listeningPort + ";\n" + "shardNum: " + shardsNum + ";\n"; } public static StoreConfig create() { ConfigFactory.invalidateCaches(); Config config = ConfigFactory.systemProperties(); String configPath = System.getProperty("distkv.store.config"); if (Strings.isNullOrEmpty(configPath)) { LOG.info("Loading config from \"store.conf\" file in classpath."); config = config.withFallback(ConfigFactory.load(CUSTOM_CONFIG_FILE)); } else { LOG.info("Loading config from " + configPath + "."); config = config.withFallback(ConfigFactory.parseFile(new File(configPath))); } config = config.withFallback(ConfigFactory.load(DEFAULT_CONFIG_FILE)); return new StoreConfig(config); } }