summaryrefslogtreecommitdiffstats
path: root/defaults
diff options
context:
space:
mode:
authorArne Juul <arnej@yahoo-inc.com>2018-07-19 06:53:15 +0200
committerArne Juul <arnej@yahoo-inc.com>2018-07-19 06:53:15 +0200
commit1ee08f736d5db4b8ef05fc91518dd155748ca42a (patch)
tree692ca86fc539dc02d59fc0491f5a7f91505f7bb4 /defaults
parent84f11ac019f2ef36bd8885c871014ef52ab154f3 (diff)
refactor to look more like java version
Diffstat (limited to 'defaults')
-rw-r--r--defaults/src/vespa/defaults.cpp98
1 files changed, 69 insertions, 29 deletions
diff --git a/defaults/src/vespa/defaults.cpp b/defaults/src/vespa/defaults.cpp
index 1280f6bdca2..428dcfa6ce5 100644
--- a/defaults/src/vespa/defaults.cpp
+++ b/defaults/src/vespa/defaults.cpp
@@ -15,15 +15,15 @@ namespace {
#define HOST_BUF_SZ 1024
-const char *defaultHome = "/opt/vespa";
-const char *defaultUser = "vespa";
-const char *defaultHost = "localhost";
-int defaultWebServicePort = 8080;
-int defaultPortBase = 19000;
+const char *defaultHome = 0;
+const char *defaultUser = 0;
+const char *defaultHost = 0;
+int defaultWebServicePort = 0;
+int defaultPortBase = 0;
int defaultPortConfigServerRpc = 0;
int defaultPortConfigServerHttp = 0;
int defaultPortConfigProxyRpc = 0;
-const char *defaultConfigServers = "localhost";
+const char *defaultConfigServers = 0;
std::atomic<bool> initialized(false);
@@ -42,8 +42,7 @@ long getNumFromEnv(const char *envName)
return -1;
}
-void findDefaults() {
- if (initialized) return;
+const char *findVespaHome(const char *defHome) {
const char *env = getenv("VESPA_HOME");
if (env != NULL && *env != '\0') {
DIR *dp = NULL;
@@ -51,47 +50,72 @@ void findDefaults() {
dp = opendir(env);
}
if (dp != NULL) {
- defaultHome = env;
- // fprintf(stderr, "debug\tVESPA_HOME is '%s'\n", defaultHome);
+ // fprintf(stderr, "debug\tVESPA_HOME is '%s'\n", env);
closedir(dp);
+ return env;
} else {
fprintf(stderr, "warning\tbad VESPA_HOME '%s' (ignored)\n", env);
}
}
- env = getenv("VESPA_USER");
+ return defHome;
+}
+
+const char *findVespaUser(const char *defUser) {
+ const char *env = getenv("VESPA_USER");
if (env != NULL && *env != '\0') {
if (getpwnam(env) == 0) {
fprintf(stderr, "warning\tbad VESPA_USER '%s' (ignored)\n", env);
} else {
- defaultUser = env;
+ return env;
}
}
- env = getenv("VESPA_HOSTNAME");
+ return defUser;
+}
+
+const char *findHostname(const char *defHost) {
+ const char *env = getenv("VESPA_HOSTNAME");
if (env != NULL && *env != '\0') {
- defaultHost = env;
+ return env;
}
+ return defHost;
+}
+
+int findWebServicePort(int defPort) {
long p = getNumFromEnv("VESPA_WEB_SERVICE_PORT");
if (p > 0) {
// fprintf(stderr, "debug\tdefault web service port is '%ld'\n", p);
- defaultWebServicePort = p;
+ return p;
}
- p = getNumFromEnv("VESPA_PORT_BASE");
+ return defPort;
+}
+
+int findVespaPortBase(int defPort) {
+ long p = getNumFromEnv("VESPA_PORT_BASE");
if (p > 0) {
// fprintf(stderr, "debug\tdefault port base is '%ld'\n", p);
- defaultPortBase = p;
+ return p;
}
- defaultPortConfigServerRpc = defaultPortBase + 70;
- defaultPortConfigProxyRpc = defaultPortBase + 90;
- p = getNumFromEnv("port_configserver_rpc");
+ return defPort;
+}
+
+int findConfigServerPort(int defPort) {
+ long p = getNumFromEnv("port_configserver_rpc");
if (p > 0) {
- defaultPortConfigServerRpc = p;
+ return p;
}
- defaultPortConfigServerHttp = defaultPortConfigServerRpc + 1;
- p = getNumFromEnv("port_configproxy_rpc");
+ return defPort;
+}
+
+int findConfigProxyPort(int defPort) {
+ long p = getNumFromEnv("port_configproxy_rpc");
if (p > 0) {
- defaultPortConfigProxyRpc = p;
+ return p;
}
- env = getenv("VESPA_CONFIGSERVERS");
+ return defPort;
+}
+
+const char *findConfigServers(const char *defServers) {
+ const char *env = getenv("VESPA_CONFIGSERVERS");
if (env == NULL || *env == '\0') {
env = getenv("services__addr_configserver");
}
@@ -103,14 +127,26 @@ void findDefaults() {
}
if (env != NULL && *env != '\0') {
// fprintf(stderr, "debug\tdefault configserver(s) is '%s'\n", env);
- defaultConfigServers = env;
+ return env;
}
- initialized = true;
+ return defServers;
}
-}
+void findDefaults() {
+ if (initialized) return;
-namespace vespa {
+ defaultHome = findVespaHome("/opt/vespa");
+ defaultUser = findVespaUser("vespa");
+ defaultHost = findHostname("localhost");
+ defaultWebServicePort = findWebServicePort(8080);
+ defaultPortBase = findVespaPortBase(19000);
+ defaultPortConfigServerRpc = findConfigServerPort(defaultPortBase + 70);
+ defaultPortConfigServerHttp = defaultPortConfigServerRpc + 1;
+ defaultPortConfigProxyRpc = findConfigProxyPort(defaultPortBase + 90);
+ defaultConfigServers = findConfigServers("localhost");
+
+ initialized = true;
+}
std::string myPath(const char *argv0)
{
@@ -137,6 +173,10 @@ std::string myPath(const char *argv0)
return argv0;
}
+}
+
+namespace vespa {
+
void
Defaults::bootstrap(const char *argv0)
{