The Assimilation Project
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
configcontext.h
Go to the documentation of this file.
1 
26 #ifndef _CONFIGCONTEXT_H
27 #define _CONFIGCONTEXT_H
28 #include <projectcommon.h>
29 #include <assimobj.h>
30 #include <netaddr.h>
31 #include <signframe.h>
32 #include <address_family_numbers.h>
33 
36 
41 
43 
45  CFG_EEXIST, // Name does not exist
46  CFG_NULL, // JSON null object
47  CFG_BOOL, // JSON boolean object
48  CFG_INT64, // Signed 64-bit Integer
49  CFG_STRING, // String
50  CFG_FLOAT, // Floating point
51  CFG_ARRAY, // JSON Array
52  CFG_CFGCTX, // ConfigContext (recursive) object
53  CFG_NETADDR, // NetAddr object
54  CFG_FRAME, // Frame object
55 };
56 typedef struct _ConfigValue ConfigValue;
57 struct _ConfigValue {
60  union {
61  gint64 intvalue; // Or boolean
62  double floatvalue;
63  GSList* arrayvalue; // Each element pointing to a ConfigValue object
64  char* strvalue; // A string
65  ConfigContext* cfgctxvalue; // Another ConfigContext object
66  NetAddr* addrvalue; // A NetAddr value
67  Frame* framevalue; // A Frame value
68  }u;
69 };
70 
73  GHashTable* _values;
74  gint64 (*getint)(const ConfigContext*, const char *name);
75  void (*setint)(ConfigContext*, const char *name, gint value);
76  gboolean (*getbool)(const ConfigContext*, const char *name);
77  void (*setbool)(ConfigContext*, const char *name, gboolean);
78  double (*getdouble)(const ConfigContext*, const char *name);
79  void (*setdouble)(ConfigContext*, const char *name, double value);
81  GSList* (*getarray)(const ConfigContext*, const char *name);
82  void (*setarray)(ConfigContext*, const char *name, GSList*);
83  const char* (*getstring)(const ConfigContext*, const char *name);
84  void (*setstring)(ConfigContext*, const char *name, const char *value);
86  Frame* (*getframe)(const ConfigContext*, const char*);
87  void (*setframe)(ConfigContext*, const char*,Frame*);
88  NetAddr* (*getaddr)(const ConfigContext*, const char* name);
89  void (*setaddr)(ConfigContext*,const char *,NetAddr*);
90  ConfigContext* (*getconfig)(const ConfigContext*, const char* name);
91  void (*setconfig)(ConfigContext*,const char*,ConfigContext*);
92  enum ConfigValType
93  (*gettype)(const ConfigContext*, const char *);
94  ConfigValue* (*getvalue)(const ConfigContext*, const char *);
95  guint (*keycount)(const ConfigContext*);
96  GSList* (*keys)(const ConfigContext*);
97 };
98 WINEXPORT ConfigContext* configcontext_new(gsize objsize); // ConfigContext constructor
99 WINEXPORT ConfigContext* configcontext_new_JSON_string(const char * jsontext);// Constructor
100 
101 #define CONFIG_DEFAULT_DEADTIME 30
102 #define CONFIG_DEFAULT_HBTIME 3
103 #define CONFIG_DEFAULT_WARNTIME 10
104 #define CONFIG_DEFAULT_HBPORT 1984
105 #define CONFIG_DEFAULT_CMAPORT 1984
106 #define CONFIG_DEFAULT_ADDR {127,0,0,1}
107 #define CONFIG_DEFAULT_ADDRTYPE ADDR_FAMILY_IPV4
108 #define CONFIG_DEFAULT_SIGNFRAME_TYPE G_CHECKSUM_SHA256
109 
110 #define CONFIGNAME_DEADTIME "deadtime"
111 #define CONFIGNAME_WARNTIME "warntime"
112 #define CONFIGNAME_HBTIME "hbtime"
113 #define CONFIGNAME_HBPORT "hbport"
114 #define CONFIGNAME_CMAPORT "cmaport"
115 #define CONFIGNAME_CMAINIT "cmainit"
116 #define CONFIGNAME_CMAADDR "cmaaddr"
118 #define CONFIGNAME_CMADISCOVER "cmadisc"
119 #define CONFIGNAME_CMAFAIL "cmafail"
120 #define CONFIGNAME_OUTSIG "outsig"
121 #define CONFIGNAME_CRYPT "crypt"
122 #define CONFIGNAME_COMPRESS "compress"
123 
124 #define CONFIGINTDEFAULTS { \
126  {CONFIGNAME_DEADTIME, CONFIG_DEFAULT_DEADTIME}, \
127  {CONFIGNAME_WARNTIME, CONFIG_DEFAULT_WARNTIME}, \
128  {CONFIGNAME_HBTIME, CONFIG_DEFAULT_HBTIME}, \
129  {CONFIGNAME_HBPORT, CONFIG_DEFAULT_HBPORT}, \
130  {CONFIGNAME_CMAPORT, CONFIG_DEFAULT_CMAPORT}, \
131  }
132 #endif /* _CONFIGCONTEXT_H */