24 #include <baseapp/init_options.h> 25 #include <baseapp/run.h> 26 #include <utils/system/argparser.h> 54 __basename = strdup(basename);
55 __default_plugin = strdup(
"default");
56 __has_net_tcp_port =
false;
58 __has_loggers =
false;
61 __has_net_service_name =
false;
62 __net_service_name = NULL;
63 __has_username =
false;
65 __has_groupname =
false;
67 __default_config = NULL;
70 __daemon_pid_file = NULL;
71 __daemonize_kill =
false;
72 __daemonize_status =
false;
75 __default_signal_handlers =
true;
76 __init_plugin_cache =
true;
77 __has_load_plugin_list =
false;
78 __load_plugin_list = NULL;
88 __basename = strdup(options.__basename);
89 __default_plugin = strdup(options.__default_plugin);
91 __has_net_tcp_port = options.__has_net_tcp_port;
92 if (__has_net_tcp_port) {
93 __net_tcp_port = options.__net_tcp_port;
96 __has_loggers = options.__has_loggers;
98 __loggers = strdup(options.__loggers);
101 __log_level = options.__log_level;
103 __net_service_name = NULL;
104 __has_net_service_name = options.__has_net_service_name;
105 if (__has_net_service_name) {
106 __net_service_name = strdup(options.__net_service_name);
110 __has_username = options.__has_username;
111 if (__has_username) {
112 __username = strdup(options.__username);
115 __has_groupname = options.__has_groupname;
116 if (__has_groupname) {
117 __groupname = strdup(options.__groupname);
120 __default_config = NULL;
121 if (options.__default_config) {
122 __default_config = strdup(options.__default_config);
124 __host_config = NULL;
125 if (options.__host_config) {
126 __host_config = strdup(options.__host_config);
128 __daemonize = options.__daemonize;
129 __daemon_pid_file = NULL;
130 if (__daemonize && options.__daemon_pid_file) {
131 __daemon_pid_file = strdup(options.__daemon_pid_file);
133 __daemonize_kill = options.__daemonize_kill;
134 __daemonize_status = options.__daemonize_status;
135 __show_help = options.__show_help;
136 __bb_cleanup = options.__bb_cleanup;
137 __default_signal_handlers = options.__default_signal_handlers;
138 __init_plugin_cache = options.__init_plugin_cache;
139 __load_plugin_list = NULL;
140 __has_load_plugin_list = options.__has_load_plugin_list;
141 if (__has_load_plugin_list) {
142 __load_plugin_list = strdup(options.__load_plugin_list);
145 __plugin_module_flags = options.__plugin_module_flags;
157 option long_options[] = {
158 {
"net-service-name", 1, 0, 0},
162 fawkes::runtime::argument_parser =
164 "hCc:d:q::l:L:p:P:u:g:D::ks",
170 __default_plugin = strdup(
"default");
172 __has_net_tcp_port = argp->
has_arg(
"P");
173 if (__has_net_tcp_port) {
176 __has_loggers = argp->
has_arg(
"L");
178 __loggers = strdup(argp->
arg(
"L"));
185 if ( (tmp = argp->
arg(
"q")) != NULL ) {
186 for (
unsigned int i = 0; i < strlen(tmp); ++i) {
187 if ( tmp[i] ==
'q' ) {
188 switch (__log_level) {
197 }
else if ( (tmp = argp->
arg(
"l")) != NULL ) {
198 if ( strcmp(tmp,
"debug") == 0 ) {
200 }
else if ( strcmp(tmp,
"info") == 0 ) {
202 }
else if ( strcmp(tmp,
"warn") == 0 ) {
204 }
else if ( strcmp(tmp,
"error") == 0 ) {
206 }
else if ( strcmp(tmp,
"none") == 0 ) {
211 __has_net_service_name = argp->
has_arg(
"net-service-name");
212 if (__has_net_service_name) {
213 __net_service_name = strdup(argp->
arg(
"net-service-name"));
215 __net_service_name = NULL;
218 __has_username = argp->
has_arg(
"u");
219 if (__has_username) {
220 __username = strdup(argp->
arg(
"u"));
225 __has_groupname = argp->
has_arg(
"u");
226 if (__has_groupname) {
227 __groupname = strdup(argp->
arg(
"u"));
233 __default_config = NULL;
234 __host_config = NULL;
235 if (argp->
arg(
"d")) {
236 __default_config = strdup(argp->
arg(
"d"));
238 if (argp->
arg(
"c")) {
239 __host_config = strdup(argp->
arg(
"c"));
242 __daemonize = argp->
has_arg(
"D");
243 __daemonize_kill = __daemonize && argp->
has_arg(
"k");
244 __daemonize_status = __daemonize && argp->
has_arg(
"s");
245 __daemon_pid_file = NULL;
246 if (__daemonize && argp->
arg(
"D")) {
247 __daemon_pid_file = strdup(argp->
arg(
"D"));
249 __daemon_pid_file = NULL;
251 __show_help = argp->
has_arg(
"h");
252 __bb_cleanup = argp->
has_arg(
"C");
254 __has_load_plugin_list = argp->
has_arg(
"p");
255 if (__has_load_plugin_list) {
256 __load_plugin_list = strdup(argp->
arg(
"p"));
258 __load_plugin_list = NULL;
261 __init_plugin_cache =
true;
263 __default_signal_handlers =
true;
271 free(__default_plugin);
272 if (__has_loggers) free(__loggers);
273 if (__has_net_service_name) free(__net_service_name);
274 if (__has_username) free(__username);
275 if (__has_groupname) free(__groupname);
276 if (__has_load_plugin_list) free(__load_plugin_list);
277 if (__default_config) free(__default_config);
278 if (__host_config) free(__host_config);
279 if (__daemon_pid_file) free(__daemon_pid_file);
291 __basename = strdup(options.__basename);
292 free(__default_plugin);
293 __default_plugin = strdup(options.__default_plugin);
295 __has_net_tcp_port = options.__has_net_tcp_port;
296 if (__has_net_tcp_port) {
297 __net_tcp_port = options.__net_tcp_port;
300 __has_loggers =
false;
304 __has_loggers = options.__has_loggers;
306 __loggers = strdup(options.__loggers);
309 __log_level = options.__log_level;
311 if (__has_net_service_name) {
312 __has_net_service_name =
false;
313 free(__net_service_name);
314 __net_service_name = NULL;
316 __has_net_service_name = options.__has_net_service_name;
317 if (__has_net_service_name) {
318 __net_service_name = strdup(options.__net_service_name);
321 if (__has_username) {
322 __has_username =
false;
326 __has_username = options.__has_username;
327 if (__has_username) {
328 __username = strdup(options.__username);
331 if (__has_groupname) {
332 __has_groupname =
false;
337 __has_groupname = options.__has_groupname;
338 if (__has_groupname) {
339 __groupname = strdup(options.__groupname);
342 if (__default_config) {
343 free(__default_config);
344 __default_config = NULL;
346 if (options.__default_config) {
347 __default_config = strdup(options.__default_config);
352 __host_config = NULL;
354 if (options.__host_config) {
355 __host_config = strdup(options.__host_config);
358 __daemonize = options.__daemonize;
359 if (__daemon_pid_file) {
360 free(__daemon_pid_file);
361 __daemon_pid_file = NULL;
363 if (__daemonize && options.__daemon_pid_file) {
364 __daemon_pid_file = strdup(options.__daemon_pid_file);
366 __daemonize_kill = options.__daemonize_kill;
367 __daemonize_status = options.__daemonize_status;
368 __show_help = options.__show_help;
369 __bb_cleanup = options.__bb_cleanup;
371 if (__load_plugin_list) {
372 free(__load_plugin_list);
373 __load_plugin_list = NULL;
375 __has_load_plugin_list = options.__has_load_plugin_list;
376 if (__has_load_plugin_list) {
377 __load_plugin_list = strdup(options.__load_plugin_list);
380 __init_plugin_cache = options.__init_plugin_cache;
381 __plugin_module_flags = options.__plugin_module_flags;
382 __default_signal_handlers = options.__default_signal_handlers;
395 free(__default_plugin);
396 __default_plugin = strdup(default_plugin_);
408 __has_net_tcp_port =
true;
409 __net_tcp_port = port;
420 if (__has_net_service_name) {
421 __has_net_service_name =
false;
422 free(__net_service_name);
425 __has_net_service_name =
true;
426 __net_service_name = strdup(service_name);
440 const char *pid_file)
443 __daemonize_kill = daemonize && kill;
444 __daemonize_status = daemonize && status;
445 if (daemonize && pid_file) {
446 __daemon_pid_file = strdup(pid_file);
459 __has_loggers =
false;
463 __has_loggers =
true;
464 __loggers = strdup(loggers);
499 __init_plugin_cache = init_cache;
510 if (__has_username) {
511 __has_username =
false;
515 __has_username =
true;
516 __username = strdup(username);
529 if (__has_load_plugin_list) {
530 __has_load_plugin_list =
false;
531 free(__load_plugin_list);
532 __load_plugin_list = NULL;
535 __has_load_plugin_list =
true;
536 __load_plugin_list = strdup(plugin_list);
549 if (__has_groupname) {
550 __has_groupname =
false;
554 __has_groupname =
true;
555 __groupname = strdup(groupname);
567 if (__default_config) {
568 free(__default_config);
569 __default_config = NULL;
571 if (default_config) {
572 __default_config = strdup(default_config);
586 __host_config = NULL;
589 __host_config = strdup(host_config);
613 __plugin_module_flags = flags;
627 __default_signal_handlers = enable;
652 return __default_plugin;
662 return __has_net_tcp_port;
671 return __net_tcp_port;
680 return __has_net_service_name;
689 return __net_service_name;
698 return __has_load_plugin_list;
707 return __load_plugin_list;
716 return __has_loggers;
762 return __init_plugin_cache;
772 return __default_signal_handlers;
790 return __daemonize_kill;
799 return __daemonize_status;
809 return __daemon_pid_file;
819 return __has_username;
838 return __has_groupname;
857 return __default_config;
867 return __host_config;
877 return __plugin_module_flags;
const char * username() const
Get user name to run as.
bool has_net_tcp_port() const
Check if TCP port has been passed.
bool daemonize_status() const
Check if status of daemon has been requested.
Logger::LogLevel log_level() const
Get log level.
informational output about normal procedures
const char * arg(const char *argn)
Get argument value.
bool has_loggers() const
Check if logger string has been passed.
bool has_groupname() const
Check if group name has been passed.
const char * load_plugin_list() const
Get plugin load list.
bool default_signal_handlers() const
Check if default signal handlers should be enabled.
bool show_help() const
Check if help has been requested.
bool init_plugin_cache() const
Check if plugin cache initialization has been requested.
Fawkes library namespace.
warning, should be investigated but software still functions, an example is that something was reques...
Parse command line arguments.
InitOptions & load_plugins(const char *plugin_list)
Set list of plugins to load during startup.
~InitOptions()
Destructor.
bool bb_cleanup() const
Check if blackboard cleanup has been requested.
bool has_net_service_name() const
Check if network service name has been passed.
InitOptions & operator=(const InitOptions &options)
Assignment operator.
ModuleFlags
Flags for the loading process.
long int parse_int(const char *argn)
Parse argument as integer.
unsigned short int net_tcp_port() const
Get Fawkes network TCP port.
error, may be recoverable (software still running) or not (software has to terminate).
Initialization options class.
const char * net_service_name() const
Get network service name.
const char * host_config() const
Get host config.
bool has_username() const
Check if user name has been passed.
const char * groupname() const
Get group name to run as.
InitOptions & user(const char *username)
Set user name to run as.
const char * loggers() const
Get logger string.
Module::ModuleFlags plugin_module_flags() const
Get plugin module flags.
bool has_load_plugin_list() const
Check if plugin load list has been set.
debug output, relevant only when tracking down problems
const char * default_config() const
Get default config.
const char * default_plugin() const
Get name of default plugin.
InitOptions(const char *basename)
Constructor.
const char * program_name() const
Get name of program.
bool daemonize_kill() const
Check if killing of daemon has been requested.
bool has_arg(const char *argn)
Check if argument has been supplied.
InitOptions & group(const char *groupname)
Set group name to run as.
Default flags, these are MODULE_BIND_GLOBAL, MODULE_BIND_NOW and MODULE_BIND_DEEP.
use this to disable log output
const char * basename() const
Get program basename.
const char * daemon_pid_file() const
Get daemon PID file.
bool daemonize() const
Check if daemonization has been requested.