libamxrt  0.4.2
Ambiorix Run Time Library
amxrt_priv.h
Go to the documentation of this file.
1 /****************************************************************************
2 **
3 ** SPDX-License-Identifier: BSD-2-Clause-Patent
4 **
5 ** SPDX-FileCopyrightText: Copyright (c) 2023 SoftAtHome
6 **
7 ** Redistribution and use in source and binary forms, with or without modification,
8 ** are permitted provided that the following conditions are met:
9 **
10 ** 1. Redistributions of source code must retain the above copyright notice,
11 ** this list of conditions and the following disclaimer.
12 **
13 ** 2. Redistributions in binary form must reproduce the above copyright notice,
14 ** this list of conditions and the following disclaimer in the documentation
15 ** and/or other materials provided with the distribution.
16 **
17 ** Subject to the terms and conditions of this license, each copyright holder
18 ** and contributor hereby grants to those receiving rights under this license
19 ** a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable
20 ** (except for failure to satisfy the conditions of this license) patent license
21 ** to make, have made, use, offer to sell, sell, import, and otherwise transfer
22 ** this software, where such license applies only to those patent claims, already
23 ** acquired or hereafter acquired, licensable by such copyright holder or contributor
24 ** that are necessarily infringed by:
25 **
26 ** (a) their Contribution(s) (the licensed copyrights of copyright holders and
27 ** non-copyrightable additions of contributors, in source or binary form) alone;
28 ** or
29 **
30 ** (b) combination of their Contribution(s) with the work of authorship to which
31 ** such Contribution(s) was added by such copyright holder or contributor, if,
32 ** at the time the Contribution is added, such addition causes such combination
33 ** to be necessarily infringed. The patent license shall not apply to any other
34 ** combinations which include the Contribution.
35 **
36 ** Except as expressly stated above, no rights or licenses from any copyright
37 ** holder or contributor is granted under this license, whether expressly, by
38 ** implication, estoppel or otherwise.
39 **
40 ** DISCLAIMER
41 **
42 ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
43 ** AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
44 ** IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
45 ** ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE
46 ** LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
47 ** DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
48 ** SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
49 ** CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
50 ** OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
51 ** USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
52 **
53 ****************************************************************************/
54 
55 #if !defined(__AMXRT_PRIV_H__)
56 #define __AMXRT_PRIV_H__
57 
58 #ifdef __cplusplus
59 extern "C"
60 {
61 #endif
62 
63 
64 #define AMXRT_CVAL_PLUGIN_DIR "/usr/lib/amx"
65 #define AMXRT_CVAL_CFG_DIR "/etc/amx"
66 #define AMXRT_CVAL_BACKEND_DIR "/usr/bin/mods/amxb"
67 #define AMXRT_CVAL_STORAGE_TYPE "odl"
68 
69 #define COLOR_BLACK "\033[30m"
70 #define COLOR_RED "\033[31m"
71 #define COLOR_GREEN "\033[32m"
72 #define COLOR_YELLOW "\033[33m"
73 #define COLOR_BLUE "\033[34m"
74 #define COLOR_MAGENTA "\033[35m"
75 #define COLOR_CYAN "\033[36m"
76 #define COLOR_WHITE "\033[37m"
77 
78 #define COLOR_BRIGHT_BLACK "\033[30;1m"
79 #define COLOR_BRIGHT_RED "\033[31;1m"
80 #define COLOR_BRIGHT_GREEN "\033[32;1m"
81 #define COLOR_BRIGHT_YELLOW "\033[33;1m"
82 #define COLOR_BRIGHT_BLUE "\033[34;1m"
83 #define COLOR_BRIGHT_MAGENTA "\033[35;1m"
84 #define COLOR_BRIGHT_CYAN "\033[36;1m"
85 #define COLOR_BRIGHT_WHITE "\033[37;1m"
86 
87 #define COLOR_RESET "\033[0m"
88 
89 #define BLUE 0
90 #define GREEN 1
91 #define RED 2
92 #define WHITE 3
93 #define CYAN 4
94 #define YELLOW 5
95 #define RESET 6
96 
97 #define c(x) get_color(x)
98 
99 typedef struct _runtime {
100  amxd_dm_t dm;
101  amxo_parser_t parser;
102  amxc_llist_t cmd_line_args;
103  amxc_var_t forced_options;
104  amxc_llist_t event_sources;
105  const char* usage_doc;
107 
108 typedef struct _runtime_options {
110  const char* long_option;
111  int has_args;
112  int id;
113  const char* doc;
114  const char* arg_doc;
115  amxc_llist_it_t it;
117 
118 PRIVATE
119 const char* get_color(uint32_t cc);
120 
121 PRIVATE
122 amxrt_t* amxrt_get(void);
123 
124 PRIVATE
126 
127 PRIVATE
128 void amxrt_print_help(void);
129 
130 PRIVATE
131 void amxrt_print_configuration(void);
132 
133 PRIVATE
134 void amxrt_print_error(const char* fmt, ...);
135 
136 PRIVATE
137 void amxrt_print_message(const char* fmt, ...);
138 
139 PRIVATE
140 void amxrt_print_failure(amxo_parser_t* parser, const char* string);
141 
142 PRIVATE
143 void amxrt_config_add_options(amxo_parser_t* parser);
144 
145 PRIVATE
146 void amxrt_connection_detect_sockets(amxc_var_t* config);
147 
148 PRIVATE
149 int amxrt_connection_load_backends(amxc_var_t* config);
150 
151 PRIVATE
152 int amxrt_connection_connect_all(amxo_parser_t* parser);
153 
154 PRIVATE
155 int amxrt_connection_listen_all(amxo_parser_t* parser);
156 
157 PRIVATE
158 int amxrt_connection_register_dm(amxo_parser_t* parser, amxd_dm_t* dm);
159 
160 PRIVATE
161 amxp_connection_t* amxrt_el_get_connection(amxc_llist_t* cons, int fd);
162 
163 PRIVATE
164 int amxrt_dm_create_dir(amxo_parser_t* parser, uid_t uid, gid_t gid);
165 
166 #ifdef __cplusplus
167 }
168 #endif
169 
170 #endif // __AMXRT_PRIV_H__
PRIVATE void amxrt_print_failure(amxo_parser_t *parser, const char *string)
PRIVATE void amxrt_cmd_line_add_default_options(void)
Definition: amxrt_args.c:178
PRIVATE int amxrt_connection_connect_all(amxo_parser_t *parser)
PRIVATE void amxrt_config_add_options(amxo_parser_t *parser)
Definition: amxrt_config.c:183
PRIVATE void amxrt_print_message(const char *fmt,...)
struct _runtime amxrt_t
PRIVATE int amxrt_connection_load_backends(amxc_var_t *config)
struct _runtime_options amxrt_arg_t
PRIVATE int amxrt_dm_create_dir(amxo_parser_t *parser, uid_t uid, gid_t gid)
PRIVATE void amxrt_connection_detect_sockets(amxc_var_t *config)
PRIVATE const char * get_color(uint32_t cc)
PRIVATE amxrt_t * amxrt_get(void)
Definition: amxrt.c:297
PRIVATE int amxrt_connection_listen_all(amxo_parser_t *parser)
PRIVATE void amxrt_print_error(const char *fmt,...)
PRIVATE int amxrt_connection_register_dm(amxo_parser_t *parser, amxd_dm_t *dm)
PRIVATE void amxrt_print_help(void)
PRIVATE amxp_connection_t * amxrt_el_get_connection(amxc_llist_t *cons, int fd)
PRIVATE void amxrt_print_configuration(void)
const char * arg_doc
Definition: amxrt_priv.h:114
const char * long_option
Definition: amxrt_priv.h:110
amxc_llist_it_t it
Definition: amxrt_priv.h:115
const char * doc
Definition: amxrt_priv.h:113
amxc_llist_t cmd_line_args
Definition: amxrt_priv.h:102
amxc_llist_t event_sources
Definition: amxrt_priv.h:104
amxd_dm_t dm
Definition: amxrt_priv.h:100
amxo_parser_t parser
Definition: amxrt_priv.h:101
amxc_var_t forced_options
Definition: amxrt_priv.h:103
const char * usage_doc
Definition: amxrt_priv.h:105
config
Definition: test.odl:54