4866fa0e7a56b3e514647a84822b9409deb80c99
[ric-app/bouncer.git] / Bouncer / src / xapp-utils / xapp_config.hpp
1 /*
2 # ==================================================================================
3 # Copyright (c) 2020 HCL Technologies Limited.
4 #
5 # Licensed under the Apache License, Version 2.0 (the "License");
6 # you may not use this file except in compliance with the License.
7 # You may obtain a copy of the License at
8 #
9 # http://www.apache.org/licenses/LICENSE-2.0
10 #
11 # Unless required by applicable law or agreed to in writing, software
12 # distributed under the License is distributed on an "AS IS" BASIS,
13 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 # See the License for the specific language governing permissions and
15 # limitations under the License.
16 # ==================================================================================
17 */
18
19
20 #ifndef SRC_XAPP_CONFIG_XAPP_CONFIG_HPP_
21 #define SRC_XAPP_CONFIG_XAPP_CONFIG_HPP_
22
23 #include <getopt.h>
24 #include <map>
25 #include <iostream>
26 #include <cstdlib>
27 #include <mdclog/mdclog.h>
28
29 #define DEFAULT_XAPP_NAME "bouncer-xapp"
30 #define DEFAULT_PORT "4560"
31 #define DEFAULT_MSG_MAX_BUFFER "2072"
32 #define DEFAULT_THREADS "1"
33
34 #define DEFAULT_LOG_LEVEL       MDCLOG_WARN
35
36 #define ASN_BUFF_MAX_SIZE               4096
37 #define MAX_SUBSCRIPTION_ATTEMPTS       10
38 #define BOUNCER_POLICY_ID 2
39
40 using namespace std;
41
42 struct XappSettings{
43
44 public:
45         typedef enum{
46                   XAPP_ID,
47                   XAPP_NAME,
48                   BOUNCER_PORT,
49                   MSG_MAX_BUFFER,
50                   THREADS,
51                   LOG_LEVEL
52         }SettingName;
53
54         void loadDefaultSettings();
55         void loadCmdlineSettings(int, char **);
56         void loadEnvVarSettings();
57         void usage(char*);
58         string& operator[](const SettingName& theName);
59 private:
60         typedef map<SettingName, std::string> SettingCollection;
61         SettingCollection theSettings;
62
63 };
64
65
66
67 #endif /* SRC_XAPP_CONFIG_XAPP_CONFIG_HPP_ */