Install SeisComP and scanloc ARM64 nightly packages
This commit is contained in:
@ -21,6 +21,7 @@
|
||||
#ifndef SEISCOMP_SYSTEM_APPLICATION_H
|
||||
#define SEISCOMP_SYSTEM_APPLICATION_H
|
||||
|
||||
|
||||
#include <seiscomp/core/exceptions.h>
|
||||
#include <seiscomp/core/interruptible.h>
|
||||
#include <seiscomp/config/config.h>
|
||||
@ -48,6 +49,25 @@ class Application;
|
||||
namespace Detail {
|
||||
|
||||
|
||||
template <typename T>
|
||||
bool convertString(T &value, const std::string &str) {
|
||||
using namespace Seiscomp::Core;
|
||||
return fromString(value, str);
|
||||
}
|
||||
|
||||
|
||||
template <typename T>
|
||||
bool convertString(Core::Optional<T> &value, const std::string &str) {
|
||||
using namespace Seiscomp::Core;
|
||||
T tmp;
|
||||
if ( !fromString(tmp, str) ) {
|
||||
return false;
|
||||
}
|
||||
value = tmp;
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
template <typename T>
|
||||
T getConfig(const Application *app, const std::string &symbol, bool asPath);
|
||||
|
||||
@ -785,7 +805,7 @@ class SC_SYSTEM_CORE_API Application : public Core::InterruptibleObject {
|
||||
template <typename T>
|
||||
struct IsNativelySupported {
|
||||
enum {
|
||||
value = Generic::Detail::IsClassType<T>::value ?
|
||||
value = Generic::Detail::IsClassType<T>::value ?
|
||||
(
|
||||
std::is_same<std::string,T>::value ?
|
||||
1
|
||||
@ -875,7 +895,7 @@ class SC_SYSTEM_CORE_API Application : public Core::InterruptibleObject {
|
||||
hasOption = proc._external.constCli->hasOption(visitedItem.cliAbsoluteSymbol);
|
||||
|
||||
if ( hasOption )
|
||||
return fromString(visitedItem.value, proc._proxyValueStore[&visitedItem.value]);
|
||||
return Detail::convertString(visitedItem.value, proc._proxyValueStore[&visitedItem.value]);
|
||||
else
|
||||
return true;
|
||||
}
|
||||
@ -936,7 +956,7 @@ class SC_SYSTEM_CORE_API Application : public Core::InterruptibleObject {
|
||||
Detail::join(prefix, visitedItem.configFileRelativeSymbol),
|
||||
visitedItem.flags & OptionBinding<T>::InterpretAsPath
|
||||
);
|
||||
return fromString(visitedItem.value, tmp);
|
||||
return Detail::convertString(visitedItem.value, tmp);
|
||||
}
|
||||
catch ( ... ) {}
|
||||
|
||||
@ -962,7 +982,7 @@ class SC_SYSTEM_CORE_API Application : public Core::InterruptibleObject {
|
||||
);
|
||||
visitedItem.value.resize(tmp.size());
|
||||
for ( size_t i = 0; i < tmp.size(); ++i ) {
|
||||
if ( !fromString(visitedItem.value[i], tmp[i]) )
|
||||
if ( !Detail::convertString(visitedItem.value[i], tmp[i]) )
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@ -988,7 +1008,11 @@ class SC_SYSTEM_CORE_API Application : public Core::InterruptibleObject {
|
||||
visitedItem.flags & OptionBinding<T>::InterpretAsPath
|
||||
);
|
||||
}
|
||||
catch ( ... ) {}
|
||||
catch ( Config::OptionNotFoundException &e ) {}
|
||||
catch ( ... ) {
|
||||
// All other exceptions are not OK.
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
@ -1000,6 +1024,7 @@ class SC_SYSTEM_CORE_API Application : public Core::InterruptibleObject {
|
||||
template <typename T>
|
||||
struct PrintHelper<T,0> {
|
||||
static void process(std::ostream &os, const T &value, bool) {
|
||||
using namespace Seiscomp::Core;
|
||||
os << toString(value);
|
||||
}
|
||||
};
|
||||
@ -1051,10 +1076,11 @@ class SC_SYSTEM_CORE_API Application : public Core::InterruptibleObject {
|
||||
template <typename T>
|
||||
struct PrintHelper<std::vector<T>,1> {
|
||||
static void process(std::ostream &os, const std::vector<T> &value) {
|
||||
using namespace Seiscomp::Core;
|
||||
if ( value.empty() )
|
||||
os << "[]";
|
||||
else
|
||||
os << Core::toString(value);
|
||||
os << toString(value);
|
||||
}
|
||||
};
|
||||
|
||||
@ -1179,9 +1205,6 @@ class SC_SYSTEM_CORE_API Application : public Core::InterruptibleObject {
|
||||
static bool _handleCrash;
|
||||
static bool _handleTermination;
|
||||
|
||||
int _argc;
|
||||
char **_argv;
|
||||
|
||||
std::string _name;
|
||||
|
||||
Arguments _arguments;
|
||||
@ -1204,7 +1227,7 @@ class SC_SYSTEM_CORE_API Application : public Core::InterruptibleObject {
|
||||
BaseSettings();
|
||||
|
||||
std::string alternativeConfigFile;
|
||||
bool enableDaemon;
|
||||
bool enableDaemon{true};
|
||||
std::string crashHandler;
|
||||
std::string lockfile;
|
||||
std::string plugins;
|
||||
@ -1219,7 +1242,7 @@ class SC_SYSTEM_CORE_API Application : public Core::InterruptibleObject {
|
||||
bool syslog{false};
|
||||
#endif
|
||||
bool context{false};
|
||||
int component{-1};
|
||||
OPT(bool) component;
|
||||
bool toStdout{false};
|
||||
bool UTC{false};
|
||||
std::string alternativeLogFile;
|
||||
@ -1258,7 +1281,7 @@ class SC_SYSTEM_CORE_API Application : public Core::InterruptibleObject {
|
||||
& cfg(UTC, "utc")
|
||||
& cfg(file, "file")
|
||||
|
||||
& cli(
|
||||
& cliSwitch(
|
||||
quiet,
|
||||
"Verbose", "quiet,q",
|
||||
"Quiet mode: no logging output"
|
||||
@ -1325,7 +1348,7 @@ class SC_SYSTEM_CORE_API Application : public Core::InterruptibleObject {
|
||||
}
|
||||
} logging;
|
||||
|
||||
virtual void accept(SettingsLinker &linker);
|
||||
virtual void accept(SettingsLinker &linker) override;
|
||||
} _baseSettings;
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user