diff options
| author | Stefan Boberg <[email protected]> | 2026-01-19 15:47:59 +0100 |
|---|---|---|
| committer | GitHub Enterprise <[email protected]> | 2026-01-19 15:47:59 +0100 |
| commit | 975babca65c6e118db268c6335a4ecbf7c2a9744 (patch) | |
| tree | 08c9ad8a58a7a2393ab10b26666d5fd29d44bd63 /src/zenserver/main.cpp | |
| parent | ZenServerProcess API changes (#719) (diff) | |
| download | zen-975babca65c6e118db268c6335a4ecbf7c2a9744.tar.xz zen-975babca65c6e118db268c6335a4ecbf7c2a9744.zip | |
zenserver API changes, some other minor changes (#720)
* add system metrics output to top command
* removed unnecessary xmake directives
* file system API/comment tweaks
* fixed out-of-range access in httpserver test
* updated ZenServer base API to allow customization by mode
Diffstat (limited to 'src/zenserver/main.cpp')
| -rw-r--r-- | src/zenserver/main.cpp | 54 |
1 files changed, 41 insertions, 13 deletions
diff --git a/src/zenserver/main.cpp b/src/zenserver/main.cpp index da256d06d..78bce7d06 100644 --- a/src/zenserver/main.cpp +++ b/src/zenserver/main.cpp @@ -54,8 +54,6 @@ SignalCallbackHandler(int SigNum) namespace zen { -using namespace std::literals; - ////////////////////////////////////////////////////////////////////////// #if ZEN_PLATFORM_WINDOWS @@ -89,6 +87,13 @@ AppMain(int argc, char* argv[]) { using namespace std::literals; + signal(SIGINT, utils::SignalCallbackHandler); + signal(SIGTERM, utils::SignalCallbackHandler); + +#if ZEN_PLATFORM_LINUX + IgnoreChildSignals(); +#endif + try { typename Main::Config ServerOptions; @@ -227,26 +232,49 @@ main(int argc, char* argv[]) #endif // ZEN_PLATFORM_WINDOWS using namespace zen; + using namespace std::literals; + + auto _ = zen::MakeGuard([] { + // Allow some time for worker threads to unravel, in an effort + // to prevent shutdown races in TLS object destruction + WaitForThreads(1000); + }); + + enum + { + kHub, + kStore, + kTest + } ServerMode = kStore; if (argc >= 2) { - if (argv[1] == "test"sv) + if (argv[1] == "hub"sv) { + ServerMode = kHub; + } + else if (argv[1] == "store"sv) + { + ServerMode = kStore; + } + else if (argv[1] == "test"sv) + { + ServerMode = kTest; + } + } + + switch (ServerMode) + { + case kTest: #if ZEN_WITH_TESTS return test_main(argc, argv); #else fprintf(stderr, "test option not available in release mode!\n"); exit(5); #endif - } + break; + default: + case kStore: + return AppMain<ZenStorageServerMain>(argc, argv); } - - signal(SIGINT, utils::SignalCallbackHandler); - signal(SIGTERM, utils::SignalCallbackHandler); - -#if ZEN_PLATFORM_LINUX - IgnoreChildSignals(); -#endif - - return AppMain<ZenStorageServerMain>(argc, argv); } |