4#include "Stroika/Frameworks/StroikaPreComp.h"
8#include "Stroika/Foundation/Characters/String2Int.h"
10#include "Stroika/Foundation/Containers/Sequence.h"
12#include "Stroika/Foundation/Execution/CommandLine.h"
13#include "Stroika/Foundation/Execution/Module.h"
14#include "Stroika/Foundation/Execution/SignalHandlers.h"
15#include "Stroika/Foundation/Execution/TimeOutException.h"
16#include "Stroika/Foundation/Execution/WaitableEvent.h"
21#include "AppVersion.h"
32using namespace StroikaSample::WebServices;
34int main (
int argc,
const char* argv[])
39#if qStroika_Foundation_Common_Platform_POSIX
42 uint16_t portNumber = 8080;
46 const CommandLine::Option kQuitAfterO_{.fLongName =
"quit-after"sv, .fSupportsArgument =
true};
49 cmdLine.Validate ({kPortO_, kQuitAfterO_});
51 if (
auto o = cmdLine.GetArgument (kPortO_)) {
52 portNumber = Characters::String2Int<uint16_t> (*o);
54 if (
auto o = cmdLine.GetArgument (kQuitAfterO_)) {
55 quitAfter =
Time::DurationSeconds{Characters::FloatConversion::ToFloat<Time::DurationSeconds::rep> (*o)};
58 WebServer myWebServer{portNumber, make_shared<WSImpl> ()};
62 cerr <<
"Timed out - so - exiting..." << endl;
66 cerr <<
"Error encountered: " << Characters::ToString (current_exception ()) <<
" - terminating..." << endl;
chrono::duration< double > DurationSeconds
chrono::duration<double> - a time span (length of time) measured in seconds, but high precision.
String is like std::u32string, except it is much easier to use, often much more space efficient,...
A generalization of a vector: a container whose elements are keyed by the natural numbers.
nonvirtual void SetSignalHandlers(SignalID signal)
static const SignalHandler kIGNORED
static SignalHandlerRegistry sThe
nonvirtual void Wait(Time::DurationSeconds timeout=Time::kInfinity)
Create a format-string (see std::wformat_string or Stroika FormatString, or python 'f' strings.