libpromeki 1.0.0-alpha
PROfessional MEdia toolKIt
 
Loading...
Searching...
No Matches
libraryoptions.h
Go to the documentation of this file.
1
8#pragma once
9
10
11#include <promeki/config.h>
12#if PROMEKI_ENABLE_CORE
13#include <promeki/namespace.h>
15
16PROMEKI_NAMESPACE_BEGIN
17
49class LibraryOptions : public VariantDatabase<"LibraryOptions"> {
50 public:
52 using Base = VariantDatabase<"LibraryOptions">;
53
54 using Base::Base;
55
56 // ============================================================
57 // Crash handling
58 // ============================================================
59
61 PROMEKI_DECLARE_ID(CrashHandler, VariantSpec()
62 .setType(DataTypeBool)
63 .setDefault(true)
64 .setDescription("Install crash signal handlers."));
65
67 PROMEKI_DECLARE_ID(CoreDumps, VariantSpec()
68 .setType(DataTypeBool)
69 .setDefault(false)
70 .setDescription("Enable core dumps via RLIMIT_CORE."));
71
73 PROMEKI_DECLARE_ID(CrashLogDir, VariantSpec()
74 .setType(DataTypeString)
75 .setDefault(String())
76 .setDescription("Crash log directory (empty = system temp)."));
77
81 PROMEKI_DECLARE_ID(CaptureEnvironment,
82 VariantSpec()
83 .setType(DataTypeBool)
84 .setDefault(true)
85 .setDescription("Include environment variables in crash reports."));
86
100 PROMEKI_DECLARE_ID(CrashStackTraceTimeout,
101 VariantSpec()
102 .setType(DataTypeInt32)
103 .setDefault(10)
104 .setDescription("Seconds before crash stack-trace symbolization "
105 "times out (0 disables)."));
106
107 // ============================================================
108 // Filesystem
109 // ============================================================
110
140 PROMEKI_DECLARE_ID(TempDir, VariantSpec()
141 .setType(DataTypeString)
142 .setDefault(String())
143 .setDescription("Override for Dir::temp() (empty = OS default)."));
144
183 PROMEKI_DECLARE_ID(IpcDir,
184 VariantSpec()
185 .setType(DataTypeString)
186 .setDefault(String())
187 .setDescription("Override for Dir::ipc() (empty = platform default)."));
188
221 PROMEKI_DECLARE_ID(ModelsDir,
222 VariantSpec()
223 .setType(DataTypeString)
224 .setDefault(String())
225 .setDescription("Override for Dir::models() (empty = platform default)."));
226
227 // ============================================================
228 // Logging
229 // ============================================================
230
260 PROMEKI_DECLARE_ID(LogToStderr,
261 VariantSpec()
262 .setType(DataTypeBool)
263 .setDefault(true)
264 .setDescription("Route Logger console output to stderr (else stdout)."));
265
266 // ============================================================
267 // Termination signal handling
268 // ============================================================
269
278 PROMEKI_DECLARE_ID(TerminationSignalHandler,
279 VariantSpec()
280 .setType(DataTypeBool)
281 .setDefault(true)
282 .setDescription("Install termination signal handlers (Ctrl-C/kill)."));
283
292 PROMEKI_DECLARE_ID(SignalDoubleTapExit,
293 VariantSpec()
294 .setType(DataTypeBool)
295 .setDefault(true)
296 .setDescription("Force-exit on second termination signal delivery."));
297
306 static LibraryOptions &instance();
307
318 void loadFromEnvironment();
319};
320
321PROMEKI_NAMESPACE_END
322
323#endif // PROMEKI_ENABLE_CORE