engage-engine 1.232.90720005 → 1.234.90740001
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/engage.cpp +24 -0
- package/include/ConfigurationObjects.h +892 -105
- package/include/EngageAudioDevice.h +2 -0
- package/include/EngageConstants.h +65 -0
- package/include/EngageInterface.h +104 -3
- package/lib/darwin.x64/libengage-shared.dylib +0 -0
- package/lib/linux.x64/libengage-shared.so +0 -0
- package/lib/win32.ia32/engage-shared.dll +0 -0
- package/lib/win32.ia32/engage-shared.lib +0 -0
- package/lib/win32.x64/engage-shared.dll +0 -0
- package/lib/win32.x64/engage-shared.lib +0 -0
- package/package.json +2 -2
|
@@ -248,31 +248,45 @@ namespace AppConfigurationObjects
|
|
|
248
248
|
\
|
|
249
249
|
std::string serialize(const int indent = -1) \
|
|
250
250
|
{ \
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
251
|
+
try \
|
|
252
|
+
{ \
|
|
253
|
+
nlohmann::json j; \
|
|
254
|
+
to_json(j, *this); \
|
|
255
|
+
return j.dump(indent); \
|
|
256
|
+
} \
|
|
257
|
+
catch(...) \
|
|
258
|
+
{ \
|
|
259
|
+
return std::string("{}"); \
|
|
260
|
+
} \
|
|
254
261
|
}
|
|
255
262
|
|
|
256
263
|
#define IMPLEMENT_WRAPPED_JSON_SERIALIZATION(_cn) \
|
|
257
264
|
public: \
|
|
258
265
|
std::string serializeWrapped(const int indent = -1) \
|
|
259
266
|
{ \
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
267
|
+
try \
|
|
268
|
+
{ \
|
|
269
|
+
nlohmann::json j; \
|
|
270
|
+
to_json(j, *this); \
|
|
271
|
+
\
|
|
272
|
+
std::string rc; \
|
|
273
|
+
char firstChar[2]; \
|
|
274
|
+
firstChar[0] = #_cn[0]; \
|
|
275
|
+
firstChar[1] = 0; \
|
|
276
|
+
firstChar[0] = tolower(firstChar[0]); \
|
|
277
|
+
rc.assign("{\""); \
|
|
278
|
+
rc.append(firstChar); \
|
|
279
|
+
rc.append((#_cn) + 1); \
|
|
280
|
+
rc.append("\":"); \
|
|
281
|
+
rc.append(j.dump(indent)); \
|
|
282
|
+
rc.append("}"); \
|
|
283
|
+
\
|
|
284
|
+
return rc; \
|
|
285
|
+
} \
|
|
286
|
+
catch(...) \
|
|
287
|
+
{ \
|
|
288
|
+
return std::string("{}"); \
|
|
289
|
+
} \
|
|
276
290
|
}
|
|
277
291
|
|
|
278
292
|
#define TOJSON_IMPL(__var) \
|
|
@@ -2174,6 +2188,196 @@ namespace AppConfigurationObjects
|
|
|
2174
2188
|
}
|
|
2175
2189
|
|
|
2176
2190
|
|
|
2191
|
+
//-----------------------------------------------------------
|
|
2192
|
+
JSON_SERIALIZED_CLASS(TransportImpairment)
|
|
2193
|
+
/**
|
|
2194
|
+
* @brief Description of a transport impairment
|
|
2195
|
+
*
|
|
2196
|
+
* Helper C++ class to serialize and de-serialize TransportImpairment JSON.
|
|
2197
|
+
*
|
|
2198
|
+
* Example: @include[doc] examples/TransportImpairment.json
|
|
2199
|
+
*
|
|
2200
|
+
*/
|
|
2201
|
+
class TransportImpairment : public ConfigurationObjectBase
|
|
2202
|
+
{
|
|
2203
|
+
IMPLEMENT_JSON_SERIALIZATION()
|
|
2204
|
+
IMPLEMENT_JSON_DOCUMENTATION(TransportImpairment)
|
|
2205
|
+
|
|
2206
|
+
public:
|
|
2207
|
+
int applicationPercentage;
|
|
2208
|
+
int jitterMs;
|
|
2209
|
+
int lossPercentage;
|
|
2210
|
+
|
|
2211
|
+
TransportImpairment()
|
|
2212
|
+
{
|
|
2213
|
+
clear();
|
|
2214
|
+
}
|
|
2215
|
+
|
|
2216
|
+
void clear()
|
|
2217
|
+
{
|
|
2218
|
+
applicationPercentage = 0;
|
|
2219
|
+
jitterMs = 0;
|
|
2220
|
+
lossPercentage = 0;
|
|
2221
|
+
}
|
|
2222
|
+
};
|
|
2223
|
+
|
|
2224
|
+
static void to_json(nlohmann::json& j, const TransportImpairment& p)
|
|
2225
|
+
{
|
|
2226
|
+
j = nlohmann::json{
|
|
2227
|
+
TOJSON_IMPL(applicationPercentage),
|
|
2228
|
+
TOJSON_IMPL(jitterMs),
|
|
2229
|
+
TOJSON_IMPL(lossPercentage)
|
|
2230
|
+
};
|
|
2231
|
+
}
|
|
2232
|
+
static void from_json(const nlohmann::json& j, TransportImpairment& p)
|
|
2233
|
+
{
|
|
2234
|
+
p.clear();
|
|
2235
|
+
getOptional<int>("applicationPercentage", p.applicationPercentage, j, 0);
|
|
2236
|
+
getOptional<int>("jitterMs", p.jitterMs, j, 0);
|
|
2237
|
+
getOptional<int>("lossPercentage", p.lossPercentage, j, 0);
|
|
2238
|
+
}
|
|
2239
|
+
|
|
2240
|
+
//-----------------------------------------------------------
|
|
2241
|
+
JSON_SERIALIZED_CLASS(NsmNetworking)
|
|
2242
|
+
/**
|
|
2243
|
+
* @brief NsmNetworking
|
|
2244
|
+
*
|
|
2245
|
+
* Helper C++ class to serialize and de-serialize NsmNetworking JSON
|
|
2246
|
+
*
|
|
2247
|
+
* Example: @include[doc] examples/NsmNetworking.json
|
|
2248
|
+
*
|
|
2249
|
+
*/
|
|
2250
|
+
class NsmNetworking : public ConfigurationObjectBase
|
|
2251
|
+
{
|
|
2252
|
+
IMPLEMENT_JSON_SERIALIZATION()
|
|
2253
|
+
IMPLEMENT_JSON_DOCUMENTATION(NsmNetworking)
|
|
2254
|
+
|
|
2255
|
+
public:
|
|
2256
|
+
std::string interfaceName;
|
|
2257
|
+
NetworkAddress address;
|
|
2258
|
+
int ttl;
|
|
2259
|
+
int tos;
|
|
2260
|
+
int txOversend;
|
|
2261
|
+
TransportImpairment rxImpairment;
|
|
2262
|
+
TransportImpairment txImpairment;
|
|
2263
|
+
std::string cryptoPassword;
|
|
2264
|
+
|
|
2265
|
+
NsmNetworking()
|
|
2266
|
+
{
|
|
2267
|
+
clear();
|
|
2268
|
+
}
|
|
2269
|
+
|
|
2270
|
+
void clear()
|
|
2271
|
+
{
|
|
2272
|
+
interfaceName.clear();
|
|
2273
|
+
address.clear();
|
|
2274
|
+
ttl = 1;
|
|
2275
|
+
tos = 56;
|
|
2276
|
+
txOversend = 0;
|
|
2277
|
+
rxImpairment.clear();
|
|
2278
|
+
txImpairment.clear();
|
|
2279
|
+
cryptoPassword.clear();
|
|
2280
|
+
}
|
|
2281
|
+
};
|
|
2282
|
+
|
|
2283
|
+
static void to_json(nlohmann::json& j, const NsmNetworking& p)
|
|
2284
|
+
{
|
|
2285
|
+
j = nlohmann::json{
|
|
2286
|
+
TOJSON_IMPL(interfaceName),
|
|
2287
|
+
TOJSON_IMPL(address),
|
|
2288
|
+
TOJSON_IMPL(ttl),
|
|
2289
|
+
TOJSON_IMPL(tos),
|
|
2290
|
+
TOJSON_IMPL(txOversend),
|
|
2291
|
+
TOJSON_IMPL(rxImpairment),
|
|
2292
|
+
TOJSON_IMPL(txImpairment),
|
|
2293
|
+
TOJSON_IMPL(cryptoPassword)
|
|
2294
|
+
};
|
|
2295
|
+
}
|
|
2296
|
+
static void from_json(const nlohmann::json& j, NsmNetworking& p)
|
|
2297
|
+
{
|
|
2298
|
+
p.clear();
|
|
2299
|
+
getOptional("interfaceName", p.interfaceName, j, EMPTY_STRING);
|
|
2300
|
+
getOptional<NetworkAddress>("address", p.address, j);
|
|
2301
|
+
getOptional<int>("ttl", p.ttl, j, 1);
|
|
2302
|
+
getOptional<int>("tos", p.tos, j, 56);
|
|
2303
|
+
getOptional<int>("txOversend", p.txOversend, j, 0);
|
|
2304
|
+
getOptional<TransportImpairment>("rxImpairment", p.rxImpairment, j);
|
|
2305
|
+
getOptional<TransportImpairment>("txImpairment", p.txImpairment, j);
|
|
2306
|
+
getOptional("cryptoPassword", p.cryptoPassword, j, EMPTY_STRING);
|
|
2307
|
+
}
|
|
2308
|
+
|
|
2309
|
+
|
|
2310
|
+
//-----------------------------------------------------------
|
|
2311
|
+
JSON_SERIALIZED_CLASS(NsmConfiguration)
|
|
2312
|
+
/**
|
|
2313
|
+
* @brief NsmConfiguration
|
|
2314
|
+
*
|
|
2315
|
+
* Helper C++ class to serialize and de-serialize NsmConfiguration JSON
|
|
2316
|
+
*
|
|
2317
|
+
* Example: @include[doc] examples/NsmConfiguration.json
|
|
2318
|
+
*
|
|
2319
|
+
*/
|
|
2320
|
+
class NsmConfiguration : public ConfigurationObjectBase
|
|
2321
|
+
{
|
|
2322
|
+
IMPLEMENT_JSON_SERIALIZATION()
|
|
2323
|
+
IMPLEMENT_JSON_DOCUMENTATION(NsmConfiguration)
|
|
2324
|
+
|
|
2325
|
+
public:
|
|
2326
|
+
|
|
2327
|
+
std::string id;
|
|
2328
|
+
bool favorUptime;
|
|
2329
|
+
NsmNetworking networking;
|
|
2330
|
+
std::vector<std::string> resources;
|
|
2331
|
+
int tokenStart;
|
|
2332
|
+
int tokenEnd;
|
|
2333
|
+
int intervalSecs;
|
|
2334
|
+
int transitionSecsFactor;
|
|
2335
|
+
|
|
2336
|
+
NsmConfiguration()
|
|
2337
|
+
{
|
|
2338
|
+
clear();
|
|
2339
|
+
}
|
|
2340
|
+
|
|
2341
|
+
void clear()
|
|
2342
|
+
{
|
|
2343
|
+
id.clear();
|
|
2344
|
+
favorUptime = false;
|
|
2345
|
+
networking.clear();
|
|
2346
|
+
resources.clear();
|
|
2347
|
+
tokenStart = 1000000;
|
|
2348
|
+
tokenEnd = 2000000;
|
|
2349
|
+
intervalSecs = 1;
|
|
2350
|
+
transitionSecsFactor = 3;
|
|
2351
|
+
}
|
|
2352
|
+
};
|
|
2353
|
+
|
|
2354
|
+
static void to_json(nlohmann::json& j, const NsmConfiguration& p)
|
|
2355
|
+
{
|
|
2356
|
+
j = nlohmann::json{
|
|
2357
|
+
TOJSON_IMPL(id),
|
|
2358
|
+
TOJSON_IMPL(favorUptime),
|
|
2359
|
+
TOJSON_IMPL(networking),
|
|
2360
|
+
TOJSON_IMPL(resources),
|
|
2361
|
+
TOJSON_IMPL(tokenStart),
|
|
2362
|
+
TOJSON_IMPL(tokenEnd),
|
|
2363
|
+
TOJSON_IMPL(intervalSecs),
|
|
2364
|
+
TOJSON_IMPL(transitionSecsFactor)
|
|
2365
|
+
};
|
|
2366
|
+
}
|
|
2367
|
+
static void from_json(const nlohmann::json& j, NsmConfiguration& p)
|
|
2368
|
+
{
|
|
2369
|
+
p.clear();
|
|
2370
|
+
getOptional("id", p.id, j);
|
|
2371
|
+
getOptional<bool>("favorUptime", p.favorUptime, j, false);
|
|
2372
|
+
getOptional<NsmNetworking>("networking", p.networking, j);
|
|
2373
|
+
getOptional<std::vector<std::string>>("resources", p.resources, j);
|
|
2374
|
+
getOptional<int>("tokenStart", p.tokenStart, j, 1000000);
|
|
2375
|
+
getOptional<int>("tokenEnd", p.tokenEnd, j, 2000000);
|
|
2376
|
+
getOptional<int>("intervalSecs", p.intervalSecs, j, 1);
|
|
2377
|
+
getOptional<int>("transitionSecsFactor", p.transitionSecsFactor, j, 3);
|
|
2378
|
+
}
|
|
2379
|
+
|
|
2380
|
+
|
|
2177
2381
|
//-----------------------------------------------------------
|
|
2178
2382
|
JSON_SERIALIZED_CLASS(Rallypoint)
|
|
2179
2383
|
/**
|
|
@@ -2550,55 +2754,6 @@ namespace AppConfigurationObjects
|
|
|
2550
2754
|
getOptional("extra", p.extra, j);
|
|
2551
2755
|
}
|
|
2552
2756
|
|
|
2553
|
-
//-----------------------------------------------------------
|
|
2554
|
-
JSON_SERIALIZED_CLASS(TransportImpairment)
|
|
2555
|
-
/**
|
|
2556
|
-
* @brief Description of a transport impairment
|
|
2557
|
-
*
|
|
2558
|
-
* Helper C++ class to serialize and de-serialize TransportImpairment JSON.
|
|
2559
|
-
*
|
|
2560
|
-
* Example: @include[doc] examples/TransportImpairment.json
|
|
2561
|
-
*
|
|
2562
|
-
*/
|
|
2563
|
-
class TransportImpairment : public ConfigurationObjectBase
|
|
2564
|
-
{
|
|
2565
|
-
IMPLEMENT_JSON_SERIALIZATION()
|
|
2566
|
-
IMPLEMENT_JSON_DOCUMENTATION(NetworkDeviceDescriptor)
|
|
2567
|
-
|
|
2568
|
-
public:
|
|
2569
|
-
int applicationPercentage;
|
|
2570
|
-
int jitterMs;
|
|
2571
|
-
int lossPercentage;
|
|
2572
|
-
|
|
2573
|
-
TransportImpairment()
|
|
2574
|
-
{
|
|
2575
|
-
clear();
|
|
2576
|
-
}
|
|
2577
|
-
|
|
2578
|
-
void clear()
|
|
2579
|
-
{
|
|
2580
|
-
applicationPercentage = 0;
|
|
2581
|
-
jitterMs = 0;
|
|
2582
|
-
lossPercentage = 0;
|
|
2583
|
-
}
|
|
2584
|
-
};
|
|
2585
|
-
|
|
2586
|
-
static void to_json(nlohmann::json& j, const TransportImpairment& p)
|
|
2587
|
-
{
|
|
2588
|
-
j = nlohmann::json{
|
|
2589
|
-
TOJSON_IMPL(applicationPercentage),
|
|
2590
|
-
TOJSON_IMPL(jitterMs),
|
|
2591
|
-
TOJSON_IMPL(lossPercentage)
|
|
2592
|
-
};
|
|
2593
|
-
}
|
|
2594
|
-
static void from_json(const nlohmann::json& j, TransportImpairment& p)
|
|
2595
|
-
{
|
|
2596
|
-
p.clear();
|
|
2597
|
-
getOptional<int>("applicationPercentage", p.applicationPercentage, j, 0);
|
|
2598
|
-
getOptional<int>("jitterMs", p.jitterMs, j, 0);
|
|
2599
|
-
getOptional<int>("lossPercentage", p.lossPercentage, j, 0);
|
|
2600
|
-
}
|
|
2601
|
-
|
|
2602
2757
|
//-----------------------------------------------------------
|
|
2603
2758
|
JSON_SERIALIZED_CLASS(TxAudio)
|
|
2604
2759
|
/**
|
|
@@ -4054,13 +4209,13 @@ namespace AppConfigurationObjects
|
|
|
4054
4209
|
std::string nodeId;
|
|
4055
4210
|
|
|
4056
4211
|
/* NOTE: Not serialized ! */
|
|
4057
|
-
uint8_t _internal_binary_nodeId[
|
|
4212
|
+
uint8_t _internal_binary_nodeId[ENGAGE_MAX_NODE_ID_SIZE];
|
|
4058
4213
|
|
|
4059
4214
|
/** @brief [Optional] An alias */
|
|
4060
4215
|
std::string alias;
|
|
4061
4216
|
|
|
4062
4217
|
/* NOTE: Not serialized ! */
|
|
4063
|
-
uint8_t _internal_binary_alias[
|
|
4218
|
+
uint8_t _internal_binary_alias[ENGAGE_MAX_ALIAS_SIZE];
|
|
4064
4219
|
|
|
4065
4220
|
Source()
|
|
4066
4221
|
{
|
|
@@ -7536,6 +7691,48 @@ namespace AppConfigurationObjects
|
|
|
7536
7691
|
getOptional<std::string>("runCmd", p.runCmd, j);
|
|
7537
7692
|
}
|
|
7538
7693
|
|
|
7694
|
+
|
|
7695
|
+
//-----------------------------------------------------------
|
|
7696
|
+
JSON_SERIALIZED_CLASS(RallypointWebsocketSettings)
|
|
7697
|
+
/**
|
|
7698
|
+
* @brief Defines settings for Rallypoint websockets functionality
|
|
7699
|
+
*
|
|
7700
|
+
* Example: @include[doc] examples/RallypointWebsocketSettings.json
|
|
7701
|
+
*
|
|
7702
|
+
*/
|
|
7703
|
+
class RallypointWebsocketSettings : public ConfigurationObjectBase
|
|
7704
|
+
{
|
|
7705
|
+
IMPLEMENT_JSON_SERIALIZATION()
|
|
7706
|
+
IMPLEMENT_JSON_DOCUMENTATION(RallypointWebsocketSettings)
|
|
7707
|
+
|
|
7708
|
+
public:
|
|
7709
|
+
/** @brief Listen port (TCP). Default is 8443 */
|
|
7710
|
+
int listenPort;
|
|
7711
|
+
|
|
7712
|
+
RallypointWebsocketSettings()
|
|
7713
|
+
{
|
|
7714
|
+
clear();
|
|
7715
|
+
}
|
|
7716
|
+
|
|
7717
|
+
void clear()
|
|
7718
|
+
{
|
|
7719
|
+
listenPort = 8443;
|
|
7720
|
+
}
|
|
7721
|
+
};
|
|
7722
|
+
|
|
7723
|
+
static void to_json(nlohmann::json& j, const RallypointWebsocketSettings& p)
|
|
7724
|
+
{
|
|
7725
|
+
j = nlohmann::json{
|
|
7726
|
+
TOJSON_IMPL(listenPort)
|
|
7727
|
+
};
|
|
7728
|
+
}
|
|
7729
|
+
static void from_json(const nlohmann::json& j, RallypointWebsocketSettings& p)
|
|
7730
|
+
{
|
|
7731
|
+
p.clear();
|
|
7732
|
+
getOptional<int>("listenPort", p.listenPort, j, 8443);
|
|
7733
|
+
}
|
|
7734
|
+
|
|
7735
|
+
|
|
7539
7736
|
//-----------------------------------------------------------
|
|
7540
7737
|
JSON_SERIALIZED_CLASS(RallypointServer)
|
|
7541
7738
|
/**
|
|
@@ -7553,7 +7750,7 @@ namespace AppConfigurationObjects
|
|
|
7553
7750
|
|
|
7554
7751
|
public:
|
|
7555
7752
|
/** @brief [Optional] Settings for the FIPS crypto. */
|
|
7556
|
-
FipsCryptoSettings
|
|
7753
|
+
FipsCryptoSettings fipsCrypto;
|
|
7557
7754
|
|
|
7558
7755
|
/** @brief [Optional] Settings for the Rallypoint's watchdog. */
|
|
7559
7756
|
WatchdogSettings watchdog;
|
|
@@ -7687,6 +7884,12 @@ namespace AppConfigurationObjects
|
|
|
7687
7884
|
/** @brief [Optional] Array of behaviors for roundtrip times to peers */
|
|
7688
7885
|
std::vector<RallypointRpRtTimingBehavior> peerRtBehaviors;
|
|
7689
7886
|
|
|
7887
|
+
/** @brief [Optional] Settings for websocket operation */
|
|
7888
|
+
RallypointWebsocketSettings websocket;
|
|
7889
|
+
|
|
7890
|
+
/** @brief [Optional] Settings for NSM. */
|
|
7891
|
+
NsmConfiguration nsm;
|
|
7892
|
+
|
|
7690
7893
|
RallypointServer()
|
|
7691
7894
|
{
|
|
7692
7895
|
clear();
|
|
@@ -7739,6 +7942,8 @@ namespace AppConfigurationObjects
|
|
|
7739
7942
|
maxOutboundPeerConnectionIntervalDeltaSecs = 15;
|
|
7740
7943
|
peerRtTestIntervalMs = 60000;
|
|
7741
7944
|
peerRtBehaviors.clear();
|
|
7945
|
+
websocket.clear();
|
|
7946
|
+
nsm.clear();
|
|
7742
7947
|
}
|
|
7743
7948
|
};
|
|
7744
7949
|
|
|
@@ -7789,7 +7994,9 @@ namespace AppConfigurationObjects
|
|
|
7789
7994
|
TOJSON_IMPL(routeMap),
|
|
7790
7995
|
TOJSON_IMPL(maxOutboundPeerConnectionIntervalDeltaSecs),
|
|
7791
7996
|
TOJSON_IMPL(peerRtTestIntervalMs),
|
|
7792
|
-
TOJSON_IMPL(peerRtBehaviors)
|
|
7997
|
+
TOJSON_IMPL(peerRtBehaviors),
|
|
7998
|
+
TOJSON_IMPL(websocket),
|
|
7999
|
+
TOJSON_IMPL(nsm)
|
|
7793
8000
|
};
|
|
7794
8001
|
}
|
|
7795
8002
|
static void from_json(const nlohmann::json& j, RallypointServer& p)
|
|
@@ -7840,6 +8047,8 @@ namespace AppConfigurationObjects
|
|
|
7840
8047
|
getOptional<uint32_t>("maxOutboundPeerConnectionIntervalDeltaSecs", p.maxOutboundPeerConnectionIntervalDeltaSecs, j, 15);
|
|
7841
8048
|
getOptional<int>("peerRtTestIntervalMs", p.peerRtTestIntervalMs, j, 60000);
|
|
7842
8049
|
getOptional<std::vector<RallypointRpRtTimingBehavior>>("peerRtBehaviors", p.peerRtBehaviors, j);
|
|
8050
|
+
getOptional<RallypointWebsocketSettings>("websocket", p.websocket, j);
|
|
8051
|
+
getOptional<NsmConfiguration>("nsm", p.nsm, j);
|
|
7843
8052
|
}
|
|
7844
8053
|
|
|
7845
8054
|
//-----------------------------------------------------------
|
|
@@ -7916,6 +8125,7 @@ namespace AppConfigurationObjects
|
|
|
7916
8125
|
getOptional<uint32_t>("configurationVersion", p.configurationVersion, j, 0);
|
|
7917
8126
|
}
|
|
7918
8127
|
|
|
8128
|
+
|
|
7919
8129
|
//-----------------------------------------------------------
|
|
7920
8130
|
class TimelineEvent
|
|
7921
8131
|
{
|
|
@@ -8358,52 +8568,140 @@ namespace AppConfigurationObjects
|
|
|
8358
8568
|
getOptional<std::string>("fingerprint", p.fingerprint, j, EMPTY_STRING);
|
|
8359
8569
|
}
|
|
8360
8570
|
|
|
8571
|
+
|
|
8361
8572
|
//-----------------------------------------------------------
|
|
8362
|
-
JSON_SERIALIZED_CLASS(
|
|
8573
|
+
JSON_SERIALIZED_CLASS(RiffDescriptor)
|
|
8363
8574
|
/**
|
|
8364
|
-
* @brief
|
|
8575
|
+
* @brief Helper class for serializing and deserializing the RiffDescriptor JSON
|
|
8365
8576
|
*
|
|
8366
|
-
* Helper C++ class to serialize and de-serialize
|
|
8577
|
+
* Helper C++ class to serialize and de-serialize RiffDescriptor JSON
|
|
8367
8578
|
*
|
|
8579
|
+
* Example: @include[doc] examples/RiffDescriptor.json
|
|
8580
|
+
*
|
|
8581
|
+
* @see TODO: engageGetRiffDescriptor
|
|
8368
8582
|
*/
|
|
8369
|
-
class
|
|
8583
|
+
class RiffDescriptor : public ConfigurationObjectBase
|
|
8370
8584
|
{
|
|
8371
8585
|
IMPLEMENT_JSON_SERIALIZATION()
|
|
8372
|
-
|
|
8373
|
-
IMPLEMENT_JSON_DOCUMENTATION(BridgeCreationDetail)
|
|
8586
|
+
IMPLEMENT_JSON_DOCUMENTATION(RiffDescriptor)
|
|
8374
8587
|
|
|
8375
8588
|
public:
|
|
8376
|
-
/** @brief
|
|
8377
|
-
|
|
8378
|
-
{
|
|
8379
|
-
/** @brief Undefined */
|
|
8380
|
-
csUndefined = 0,
|
|
8589
|
+
/** @brief Name of the RIFF file. */
|
|
8590
|
+
std::string file;
|
|
8381
8591
|
|
|
8382
|
-
|
|
8383
|
-
|
|
8592
|
+
/** @brief True if the ECDSA signature is verified. */
|
|
8593
|
+
bool verified;
|
|
8384
8594
|
|
|
8385
|
-
|
|
8386
|
-
|
|
8595
|
+
/** @brief Number of audio channels */
|
|
8596
|
+
int channels;
|
|
8387
8597
|
|
|
8388
|
-
|
|
8389
|
-
|
|
8598
|
+
/** @brief Number of audio samples */
|
|
8599
|
+
int sampleCount;
|
|
8390
8600
|
|
|
8391
|
-
|
|
8392
|
-
|
|
8601
|
+
/** @brief [Optional] Meta data associated with the file - typically a stringified JSON object. */
|
|
8602
|
+
std::string meta;
|
|
8393
8603
|
|
|
8394
|
-
|
|
8395
|
-
|
|
8604
|
+
/** @brief [Optional] X.509 certificate in PEM format used to sign the RIFF file. */
|
|
8605
|
+
std::string certPem;
|
|
8396
8606
|
|
|
8397
|
-
|
|
8398
|
-
|
|
8607
|
+
/** @brief [Optional] X.509 certificate parsed into a CertificateDescriptor object. */
|
|
8608
|
+
CertificateDescriptor certDescriptor;
|
|
8399
8609
|
|
|
8400
|
-
|
|
8401
|
-
|
|
8610
|
+
/** @brief [Optional] ECDSA signature */
|
|
8611
|
+
std::string signature;
|
|
8402
8612
|
|
|
8403
|
-
|
|
8404
|
-
|
|
8613
|
+
RiffDescriptor()
|
|
8614
|
+
{
|
|
8615
|
+
clear();
|
|
8616
|
+
}
|
|
8405
8617
|
|
|
8406
|
-
|
|
8618
|
+
void clear()
|
|
8619
|
+
{
|
|
8620
|
+
file.clear();
|
|
8621
|
+
verified = false;
|
|
8622
|
+
channels = 0;
|
|
8623
|
+
sampleCount = 0;
|
|
8624
|
+
meta.clear();
|
|
8625
|
+
certPem.clear();
|
|
8626
|
+
certDescriptor.clear();
|
|
8627
|
+
signature.clear();
|
|
8628
|
+
}
|
|
8629
|
+
};
|
|
8630
|
+
|
|
8631
|
+
static void to_json(nlohmann::json& j, const RiffDescriptor& p)
|
|
8632
|
+
{
|
|
8633
|
+
j = nlohmann::json{
|
|
8634
|
+
TOJSON_IMPL(file),
|
|
8635
|
+
TOJSON_IMPL(verified),
|
|
8636
|
+
TOJSON_IMPL(channels),
|
|
8637
|
+
TOJSON_IMPL(sampleCount),
|
|
8638
|
+
TOJSON_IMPL(meta),
|
|
8639
|
+
TOJSON_IMPL(certPem),
|
|
8640
|
+
TOJSON_IMPL(certDescriptor),
|
|
8641
|
+
TOJSON_IMPL(signature)
|
|
8642
|
+
};
|
|
8643
|
+
}
|
|
8644
|
+
|
|
8645
|
+
static void from_json(const nlohmann::json& j, RiffDescriptor& p)
|
|
8646
|
+
{
|
|
8647
|
+
p.clear();
|
|
8648
|
+
FROMJSON_IMPL(file, std::string, EMPTY_STRING);
|
|
8649
|
+
FROMJSON_IMPL(verified, bool, false);
|
|
8650
|
+
FROMJSON_IMPL(channels, int, 0);
|
|
8651
|
+
FROMJSON_IMPL(sampleCount, int, 0);
|
|
8652
|
+
FROMJSON_IMPL(meta, std::string, EMPTY_STRING);
|
|
8653
|
+
FROMJSON_IMPL(certPem, std::string, EMPTY_STRING);
|
|
8654
|
+
getOptional<CertificateDescriptor>("certDescriptor", p.certDescriptor, j);
|
|
8655
|
+
FROMJSON_IMPL(signature, std::string, EMPTY_STRING);
|
|
8656
|
+
}
|
|
8657
|
+
|
|
8658
|
+
|
|
8659
|
+
//-----------------------------------------------------------
|
|
8660
|
+
JSON_SERIALIZED_CLASS(BridgeCreationDetail)
|
|
8661
|
+
/**
|
|
8662
|
+
* @brief Detailed information for a bridge creation
|
|
8663
|
+
*
|
|
8664
|
+
* Helper C++ class to serialize and de-serialize BridgeCreationDetail JSON
|
|
8665
|
+
*
|
|
8666
|
+
*/
|
|
8667
|
+
class BridgeCreationDetail : public ConfigurationObjectBase
|
|
8668
|
+
{
|
|
8669
|
+
IMPLEMENT_JSON_SERIALIZATION()
|
|
8670
|
+
IMPLEMENT_WRAPPED_JSON_SERIALIZATION(BridgeCreationDetail)
|
|
8671
|
+
IMPLEMENT_JSON_DOCUMENTATION(BridgeCreationDetail)
|
|
8672
|
+
|
|
8673
|
+
public:
|
|
8674
|
+
/** @brief Creation status */
|
|
8675
|
+
typedef enum
|
|
8676
|
+
{
|
|
8677
|
+
/** @brief Undefined */
|
|
8678
|
+
csUndefined = 0,
|
|
8679
|
+
|
|
8680
|
+
/** @brief Creation OK */
|
|
8681
|
+
csOk = 1,
|
|
8682
|
+
|
|
8683
|
+
/** @brief Configuration JSON is empty */
|
|
8684
|
+
csNoJson = -1,
|
|
8685
|
+
|
|
8686
|
+
/** @brief Bridge already exists */
|
|
8687
|
+
csAlreadyExists = -3,
|
|
8688
|
+
|
|
8689
|
+
/** @brief Invalid configuration */
|
|
8690
|
+
csInvalidConfiguration = -4,
|
|
8691
|
+
|
|
8692
|
+
/** @brief Invalid JSON */
|
|
8693
|
+
csInvalidJson = -5,
|
|
8694
|
+
|
|
8695
|
+
/** @brief Insufficient groups in bridge */
|
|
8696
|
+
csInsufficientGroups = -6,
|
|
8697
|
+
|
|
8698
|
+
/** @brief Too many groups in bridge */
|
|
8699
|
+
csTooManyGroups = -7,
|
|
8700
|
+
|
|
8701
|
+
/** @brief Duplicate group in the same bridge */
|
|
8702
|
+
csDuplicateGroup = -8,
|
|
8703
|
+
|
|
8704
|
+
/** @brief Duplicate group in the same bridge */
|
|
8407
8705
|
csLocalLoopDetected = -9,
|
|
8408
8706
|
} CreationStatus_t;
|
|
8409
8707
|
|
|
@@ -9154,7 +9452,483 @@ namespace AppConfigurationObjects
|
|
|
9154
9452
|
getOptional<uint64_t>("msToNextConnectionAttempt", p.msToNextConnectionAttempt, j, 0);
|
|
9155
9453
|
}
|
|
9156
9454
|
|
|
9455
|
+
//-----------------------------------------------------------
|
|
9456
|
+
JSON_SERIALIZED_CLASS(TranslationSession)
|
|
9457
|
+
/**
|
|
9458
|
+
* @brief Translation session settings
|
|
9459
|
+
*
|
|
9460
|
+
* Helper C++ class to serialize and de-serialize TranslationSession JSON
|
|
9461
|
+
*
|
|
9462
|
+
* Example: @include[doc] examples/TranslationSession.json
|
|
9463
|
+
*
|
|
9464
|
+
* @see TODO: ConfigurationObjects::TranslationSession
|
|
9465
|
+
*/
|
|
9466
|
+
class TranslationSession : public ConfigurationObjectBase
|
|
9467
|
+
{
|
|
9468
|
+
IMPLEMENT_JSON_SERIALIZATION()
|
|
9469
|
+
IMPLEMENT_JSON_DOCUMENTATION(TranslationSession)
|
|
9470
|
+
|
|
9471
|
+
public:
|
|
9472
|
+
/** @brief ID */
|
|
9473
|
+
std::string id;
|
|
9474
|
+
|
|
9475
|
+
/** @brief Name */
|
|
9476
|
+
std::string name;
|
|
9477
|
+
|
|
9478
|
+
/** @brief List of group IDs to be included in the session */
|
|
9479
|
+
std::vector<std::string> groups;
|
|
9480
|
+
|
|
9481
|
+
/** @brief [Optional, Default: true] Enable the session */
|
|
9482
|
+
bool enabled;
|
|
9483
|
+
|
|
9484
|
+
TranslationSession()
|
|
9485
|
+
{
|
|
9486
|
+
clear();
|
|
9487
|
+
}
|
|
9488
|
+
|
|
9489
|
+
void clear()
|
|
9490
|
+
{
|
|
9491
|
+
id.clear();
|
|
9492
|
+
name.clear();
|
|
9493
|
+
groups.clear();
|
|
9494
|
+
enabled = true;
|
|
9495
|
+
}
|
|
9496
|
+
};
|
|
9497
|
+
|
|
9498
|
+
static void to_json(nlohmann::json& j, const TranslationSession& p)
|
|
9499
|
+
{
|
|
9500
|
+
j = nlohmann::json{
|
|
9501
|
+
TOJSON_IMPL(id),
|
|
9502
|
+
TOJSON_IMPL(name),
|
|
9503
|
+
TOJSON_IMPL(groups),
|
|
9504
|
+
TOJSON_IMPL(enabled)
|
|
9505
|
+
};
|
|
9506
|
+
}
|
|
9507
|
+
static void from_json(const nlohmann::json& j, TranslationSession& p)
|
|
9508
|
+
{
|
|
9509
|
+
p.clear();
|
|
9510
|
+
FROMJSON_IMPL(id, std::string, EMPTY_STRING);
|
|
9511
|
+
FROMJSON_IMPL(name, std::string, EMPTY_STRING);
|
|
9512
|
+
getOptional<std::vector<std::string>>("groups", p.groups, j);
|
|
9513
|
+
FROMJSON_IMPL(enabled, bool, true);
|
|
9514
|
+
}
|
|
9515
|
+
|
|
9516
|
+
//-----------------------------------------------------------
|
|
9517
|
+
JSON_SERIALIZED_CLASS(TranslationConfiguration)
|
|
9518
|
+
/**
|
|
9519
|
+
* @brief Translation configuration
|
|
9520
|
+
*
|
|
9521
|
+
* Helper C++ class to serialize and de-serialize TranslationConfiguration JSON
|
|
9522
|
+
*
|
|
9523
|
+
* Example: @include[doc] examples/TranslationConfiguration.json
|
|
9524
|
+
*
|
|
9525
|
+
* @see TODO: ConfigurationObjects::TranslationConfiguration
|
|
9526
|
+
*/
|
|
9527
|
+
class TranslationConfiguration : public ConfigurationObjectBase
|
|
9528
|
+
{
|
|
9529
|
+
IMPLEMENT_JSON_SERIALIZATION()
|
|
9530
|
+
IMPLEMENT_JSON_DOCUMENTATION(TranslationConfiguration)
|
|
9531
|
+
|
|
9532
|
+
public:
|
|
9533
|
+
/** @brief Array of sessions in the configuration */
|
|
9534
|
+
std::vector<TranslationSession> sessions;
|
|
9535
|
+
|
|
9536
|
+
/** @brief Array of groups in the configuration */
|
|
9537
|
+
std::vector<Group> groups;
|
|
9538
|
+
|
|
9539
|
+
TranslationConfiguration()
|
|
9540
|
+
{
|
|
9541
|
+
clear();
|
|
9542
|
+
}
|
|
9543
|
+
|
|
9544
|
+
void clear()
|
|
9545
|
+
{
|
|
9546
|
+
sessions.clear();
|
|
9547
|
+
groups.clear();
|
|
9548
|
+
}
|
|
9549
|
+
};
|
|
9550
|
+
|
|
9551
|
+
static void to_json(nlohmann::json& j, const TranslationConfiguration& p)
|
|
9552
|
+
{
|
|
9553
|
+
j = nlohmann::json{
|
|
9554
|
+
TOJSON_IMPL(sessions),
|
|
9555
|
+
TOJSON_IMPL(groups)
|
|
9556
|
+
};
|
|
9557
|
+
}
|
|
9558
|
+
static void from_json(const nlohmann::json& j, TranslationConfiguration& p)
|
|
9559
|
+
{
|
|
9560
|
+
p.clear();
|
|
9561
|
+
getOptional<std::vector<TranslationSession>>("sessions", p.sessions, j);
|
|
9562
|
+
getOptional<std::vector<Group>>("groups", p.groups, j);
|
|
9563
|
+
}
|
|
9564
|
+
|
|
9565
|
+
//-----------------------------------------------------------
|
|
9566
|
+
JSON_SERIALIZED_CLASS(LingoServerStatusReportConfiguration)
|
|
9567
|
+
/**
|
|
9568
|
+
* @brief TODO: Configuration for the translation server status report file
|
|
9569
|
+
*
|
|
9570
|
+
* Helper C++ class to serialize and de-serialize LingoServerStatusReportConfiguration JSON
|
|
9571
|
+
*
|
|
9572
|
+
* Example: @include[doc] examples/LingoServerStatusReportConfiguration.json
|
|
9573
|
+
*
|
|
9574
|
+
* @see RallypointServer
|
|
9575
|
+
*/
|
|
9576
|
+
class LingoServerStatusReportConfiguration : public ConfigurationObjectBase
|
|
9577
|
+
{
|
|
9578
|
+
IMPLEMENT_JSON_SERIALIZATION()
|
|
9579
|
+
IMPLEMENT_JSON_DOCUMENTATION(LingoServerStatusReportConfiguration)
|
|
9580
|
+
|
|
9581
|
+
public:
|
|
9582
|
+
/** File name to use for the status report. */
|
|
9583
|
+
std::string fileName;
|
|
9584
|
+
|
|
9585
|
+
/** [Optional, Default: 30] The interval at which to write out the status report to file. */
|
|
9586
|
+
int intervalSecs;
|
|
9587
|
+
|
|
9588
|
+
/** [Optional, Default: false] Indicates if status reporting is enabled. */
|
|
9589
|
+
bool enabled;
|
|
9590
|
+
|
|
9591
|
+
/** [Optional, Default: null] Command to be executed every time the status report is produced. */
|
|
9592
|
+
std::string runCmd;
|
|
9593
|
+
|
|
9594
|
+
/** [Optional, Default: false] Indicates whether to include details of each group. */
|
|
9595
|
+
bool includeGroupDetail;
|
|
9596
|
+
|
|
9597
|
+
/** [Optional, Default: false] Indicates whether to include details of each session. */
|
|
9598
|
+
bool includeSessionDetail;
|
|
9599
|
+
|
|
9600
|
+
/** [Optional, Default: false] Indicates whether to include details of each group in each session. */
|
|
9601
|
+
bool includeSessionGroupDetail;
|
|
9602
|
+
|
|
9603
|
+
LingoServerStatusReportConfiguration()
|
|
9604
|
+
{
|
|
9605
|
+
clear();
|
|
9606
|
+
}
|
|
9607
|
+
|
|
9608
|
+
void clear()
|
|
9609
|
+
{
|
|
9610
|
+
fileName.clear();
|
|
9611
|
+
intervalSecs = 60;
|
|
9612
|
+
enabled = false;
|
|
9613
|
+
includeGroupDetail = false;
|
|
9614
|
+
includeSessionDetail = false;
|
|
9615
|
+
includeSessionGroupDetail = false;
|
|
9616
|
+
runCmd.clear();
|
|
9617
|
+
}
|
|
9618
|
+
};
|
|
9619
|
+
|
|
9620
|
+
static void to_json(nlohmann::json& j, const LingoServerStatusReportConfiguration& p)
|
|
9621
|
+
{
|
|
9622
|
+
j = nlohmann::json{
|
|
9623
|
+
TOJSON_IMPL(fileName),
|
|
9624
|
+
TOJSON_IMPL(intervalSecs),
|
|
9625
|
+
TOJSON_IMPL(enabled),
|
|
9626
|
+
TOJSON_IMPL(includeGroupDetail),
|
|
9627
|
+
TOJSON_IMPL(includeSessionDetail),
|
|
9628
|
+
TOJSON_IMPL(includeSessionGroupDetail),
|
|
9629
|
+
TOJSON_IMPL(runCmd)
|
|
9630
|
+
};
|
|
9631
|
+
}
|
|
9632
|
+
static void from_json(const nlohmann::json& j, LingoServerStatusReportConfiguration& p)
|
|
9633
|
+
{
|
|
9634
|
+
p.clear();
|
|
9635
|
+
getOptional<std::string>("fileName", p.fileName, j);
|
|
9636
|
+
getOptional<int>("intervalSecs", p.intervalSecs, j, 60);
|
|
9637
|
+
getOptional<bool>("enabled", p.enabled, j, false);
|
|
9638
|
+
getOptional<std::string>("runCmd", p.runCmd, j);
|
|
9639
|
+
getOptional<bool>("includeGroupDetail", p.includeGroupDetail, j, false);
|
|
9640
|
+
getOptional<bool>("includeSessionDetail", p.includeSessionDetail, j, false);
|
|
9641
|
+
getOptional<bool>("includeSessionGroupDetail", p.includeSessionGroupDetail, j, false);
|
|
9642
|
+
}
|
|
9157
9643
|
|
|
9644
|
+
//-----------------------------------------------------------
|
|
9645
|
+
JSON_SERIALIZED_CLASS(LingoServerInternals)
|
|
9646
|
+
/**
|
|
9647
|
+
* @brief Internal translator server settings
|
|
9648
|
+
*
|
|
9649
|
+
* These settings are used to configure internal parameters.
|
|
9650
|
+
*
|
|
9651
|
+
* Helper C++ class to serialize and de-serialize LingoServerInternals JSON
|
|
9652
|
+
*
|
|
9653
|
+
* Example: @include[doc] examples/LingoServerInternals.json
|
|
9654
|
+
*
|
|
9655
|
+
* @see engageInitialize, ConfigurationObjects::LingoServerConfiguration
|
|
9656
|
+
*/
|
|
9657
|
+
class LingoServerInternals : public ConfigurationObjectBase
|
|
9658
|
+
{
|
|
9659
|
+
IMPLEMENT_JSON_SERIALIZATION()
|
|
9660
|
+
IMPLEMENT_JSON_DOCUMENTATION(LingoServerInternals)
|
|
9661
|
+
|
|
9662
|
+
public:
|
|
9663
|
+
/** @brief [Optional] Settings for the watchdog. */
|
|
9664
|
+
WatchdogSettings watchdog;
|
|
9665
|
+
|
|
9666
|
+
/** @brief [Optional, Default: 1000] Interval at which to run the housekeeper thread. */
|
|
9667
|
+
int housekeeperIntervalMs;
|
|
9668
|
+
|
|
9669
|
+
LingoServerInternals()
|
|
9670
|
+
{
|
|
9671
|
+
clear();
|
|
9672
|
+
}
|
|
9673
|
+
|
|
9674
|
+
void clear()
|
|
9675
|
+
{
|
|
9676
|
+
watchdog.clear();
|
|
9677
|
+
housekeeperIntervalMs = 1000;
|
|
9678
|
+
}
|
|
9679
|
+
};
|
|
9680
|
+
|
|
9681
|
+
static void to_json(nlohmann::json& j, const LingoServerInternals& p)
|
|
9682
|
+
{
|
|
9683
|
+
j = nlohmann::json{
|
|
9684
|
+
TOJSON_IMPL(watchdog),
|
|
9685
|
+
TOJSON_IMPL(housekeeperIntervalMs)
|
|
9686
|
+
};
|
|
9687
|
+
}
|
|
9688
|
+
static void from_json(const nlohmann::json& j, LingoServerInternals& p)
|
|
9689
|
+
{
|
|
9690
|
+
p.clear();
|
|
9691
|
+
getOptional<WatchdogSettings>("watchdog", p.watchdog, j);
|
|
9692
|
+
getOptional<int>("housekeeperIntervalMs", p.housekeeperIntervalMs, j, 1000);
|
|
9693
|
+
}
|
|
9694
|
+
|
|
9695
|
+
//-----------------------------------------------------------
|
|
9696
|
+
JSON_SERIALIZED_CLASS(LingoServerConfiguration)
|
|
9697
|
+
/**
|
|
9698
|
+
* @brief Configuration for the linguistics server
|
|
9699
|
+
*
|
|
9700
|
+
* Helper C++ class to serialize and de-serialize LingoServerConfiguration JSON
|
|
9701
|
+
*
|
|
9702
|
+
* Example: @include[doc] examples/LingoServerConfiguration.json
|
|
9703
|
+
*
|
|
9704
|
+
*/
|
|
9705
|
+
class LingoServerConfiguration : public ConfigurationObjectBase
|
|
9706
|
+
{
|
|
9707
|
+
IMPLEMENT_JSON_SERIALIZATION()
|
|
9708
|
+
IMPLEMENT_JSON_DOCUMENTATION(LingoServerConfiguration)
|
|
9709
|
+
|
|
9710
|
+
public:
|
|
9711
|
+
/** @brief A unqiue identifier for the linguistics server */
|
|
9712
|
+
std::string id;
|
|
9713
|
+
|
|
9714
|
+
/** @brief Number of seconds between checks to see if the service configuration has been updated. Default is 60.*/
|
|
9715
|
+
int serviceConfigurationFileCheckSecs;
|
|
9716
|
+
|
|
9717
|
+
/** @brief Name of a file containing the linguistics configuration. */
|
|
9718
|
+
std::string lingoConfigurationFileName;
|
|
9719
|
+
|
|
9720
|
+
/** @brief Command-line to execute that returns a linguistics configuration */
|
|
9721
|
+
std::string lingoConfigurationFileCommand;
|
|
9722
|
+
|
|
9723
|
+
/** @brief Number of seconds between checks to see if the linguistics configuration has been updated. Default is 60.*/
|
|
9724
|
+
int lingoConfigurationFileCheckSecs;
|
|
9725
|
+
|
|
9726
|
+
/** @brief Details for producing a status report. @see LingoServerStatusReportConfiguration */
|
|
9727
|
+
LingoServerStatusReportConfiguration statusReport;
|
|
9728
|
+
|
|
9729
|
+
/** @brief Details concerning the server's interaction with an external health-checker such as a load-balancer. @see ExternalHealthCheckResponder */
|
|
9730
|
+
ExternalHealthCheckResponder externalHealthCheckResponder;
|
|
9731
|
+
|
|
9732
|
+
/** @brief Internal settings */
|
|
9733
|
+
LingoServerInternals internals;
|
|
9734
|
+
|
|
9735
|
+
/** @brief Path to the certificate store */
|
|
9736
|
+
std::string certStoreFileName;
|
|
9737
|
+
|
|
9738
|
+
/** @brief Hex password for the certificate store (if any) */
|
|
9739
|
+
std::string certStorePasswordHex;
|
|
9740
|
+
|
|
9741
|
+
/** @brief The policy to be used for the underlying Engage Engine */
|
|
9742
|
+
EnginePolicy enginePolicy;
|
|
9743
|
+
|
|
9744
|
+
/** @brief Name to use for signalling a configuration check */
|
|
9745
|
+
std::string configurationCheckSignalName;
|
|
9746
|
+
|
|
9747
|
+
/** @brief [Optional] Settings for the FIPS crypto. */
|
|
9748
|
+
FipsCryptoSettings fipsCrypto;
|
|
9749
|
+
|
|
9750
|
+
/** @brief Address and port of the proxy */
|
|
9751
|
+
NetworkAddress proxy;
|
|
9752
|
+
|
|
9753
|
+
/** @brief [Optional] Settings for NSM. */
|
|
9754
|
+
NsmConfiguration nsm;
|
|
9755
|
+
|
|
9756
|
+
LingoServerConfiguration()
|
|
9757
|
+
{
|
|
9758
|
+
clear();
|
|
9759
|
+
}
|
|
9760
|
+
|
|
9761
|
+
void clear()
|
|
9762
|
+
{
|
|
9763
|
+
id.clear();
|
|
9764
|
+
serviceConfigurationFileCheckSecs = 60;
|
|
9765
|
+
lingoConfigurationFileName.clear();
|
|
9766
|
+
lingoConfigurationFileCommand.clear();
|
|
9767
|
+
lingoConfigurationFileCheckSecs = 60;
|
|
9768
|
+
statusReport.clear();
|
|
9769
|
+
externalHealthCheckResponder.clear();
|
|
9770
|
+
internals.clear();
|
|
9771
|
+
certStoreFileName.clear();
|
|
9772
|
+
certStorePasswordHex.clear();
|
|
9773
|
+
enginePolicy.clear();
|
|
9774
|
+
configurationCheckSignalName = "rts.22f4ec3.${id}";
|
|
9775
|
+
fipsCrypto.clear();
|
|
9776
|
+
proxy.clear();
|
|
9777
|
+
nsm.clear();
|
|
9778
|
+
}
|
|
9779
|
+
};
|
|
9780
|
+
|
|
9781
|
+
static void to_json(nlohmann::json& j, const LingoServerConfiguration& p)
|
|
9782
|
+
{
|
|
9783
|
+
j = nlohmann::json{
|
|
9784
|
+
TOJSON_IMPL(id),
|
|
9785
|
+
TOJSON_IMPL(serviceConfigurationFileCheckSecs),
|
|
9786
|
+
TOJSON_IMPL(lingoConfigurationFileName),
|
|
9787
|
+
TOJSON_IMPL(lingoConfigurationFileCommand),
|
|
9788
|
+
TOJSON_IMPL(lingoConfigurationFileCheckSecs),
|
|
9789
|
+
TOJSON_IMPL(statusReport),
|
|
9790
|
+
TOJSON_IMPL(externalHealthCheckResponder),
|
|
9791
|
+
TOJSON_IMPL(internals),
|
|
9792
|
+
TOJSON_IMPL(certStoreFileName),
|
|
9793
|
+
TOJSON_IMPL(certStorePasswordHex),
|
|
9794
|
+
TOJSON_IMPL(enginePolicy),
|
|
9795
|
+
TOJSON_IMPL(configurationCheckSignalName),
|
|
9796
|
+
TOJSON_IMPL(fipsCrypto),
|
|
9797
|
+
TOJSON_IMPL(proxy),
|
|
9798
|
+
TOJSON_IMPL(nsm)
|
|
9799
|
+
};
|
|
9800
|
+
}
|
|
9801
|
+
static void from_json(const nlohmann::json& j, LingoServerConfiguration& p)
|
|
9802
|
+
{
|
|
9803
|
+
p.clear();
|
|
9804
|
+
getOptional<std::string>("id", p.id, j);
|
|
9805
|
+
getOptional<int>("serviceConfigurationFileCheckSecs", p.serviceConfigurationFileCheckSecs, j, 60);
|
|
9806
|
+
getOptional<std::string>("lingoConfigurationFileName", p.lingoConfigurationFileName, j);
|
|
9807
|
+
getOptional<std::string>("lingoConfigurationFileCommand", p.lingoConfigurationFileCommand, j);
|
|
9808
|
+
getOptional<int>("lingoConfigurationFileCheckSecs", p.lingoConfigurationFileCheckSecs, j, 60);
|
|
9809
|
+
getOptional<LingoServerStatusReportConfiguration>("statusReport", p.statusReport, j);
|
|
9810
|
+
getOptional<ExternalHealthCheckResponder>("externalHealthCheckResponder", p.externalHealthCheckResponder, j);
|
|
9811
|
+
getOptional<LingoServerInternals>("internals", p.internals, j);
|
|
9812
|
+
getOptional<std::string>("certStoreFileName", p.certStoreFileName, j);
|
|
9813
|
+
getOptional<std::string>("certStorePasswordHex", p.certStorePasswordHex, j);
|
|
9814
|
+
j.at("enginePolicy").get_to(p.enginePolicy);
|
|
9815
|
+
getOptional<std::string>("configurationCheckSignalName", p.configurationCheckSignalName, j, "rts.22f4ec3.${id}");
|
|
9816
|
+
getOptional<FipsCryptoSettings>("fipsCrypo", p.fipsCrypto, j);
|
|
9817
|
+
getOptional<NetworkAddress>("proxy", p.proxy, j);
|
|
9818
|
+
getOptional<NsmConfiguration>("nsm", p.nsm, j);
|
|
9819
|
+
}
|
|
9820
|
+
|
|
9821
|
+
|
|
9822
|
+
//-----------------------------------------------------------
|
|
9823
|
+
JSON_SERIALIZED_CLASS(VoiceToVoiceSession)
|
|
9824
|
+
/**
|
|
9825
|
+
* @brief Voice to voice session settings
|
|
9826
|
+
*
|
|
9827
|
+
* Helper C++ class to serialize and de-serialize VoiceToVoiceSession JSON
|
|
9828
|
+
*
|
|
9829
|
+
* Example: @include[doc] examples/VoiceToVoiceSession.json
|
|
9830
|
+
*
|
|
9831
|
+
* @see TODO: ConfigurationObjects::VoiceToVoiceSession
|
|
9832
|
+
*/
|
|
9833
|
+
class VoiceToVoiceSession : public ConfigurationObjectBase
|
|
9834
|
+
{
|
|
9835
|
+
IMPLEMENT_JSON_SERIALIZATION()
|
|
9836
|
+
IMPLEMENT_JSON_DOCUMENTATION(VoiceToVoiceSession)
|
|
9837
|
+
|
|
9838
|
+
public:
|
|
9839
|
+
/** @brief ID */
|
|
9840
|
+
std::string id;
|
|
9841
|
+
|
|
9842
|
+
/** @brief Name */
|
|
9843
|
+
std::string name;
|
|
9844
|
+
|
|
9845
|
+
/** @brief List of group IDs to be included in the session */
|
|
9846
|
+
std::vector<std::string> groups;
|
|
9847
|
+
|
|
9848
|
+
/** @brief [Optional, Default: true] Enable the session */
|
|
9849
|
+
bool enabled;
|
|
9850
|
+
|
|
9851
|
+
VoiceToVoiceSession()
|
|
9852
|
+
{
|
|
9853
|
+
clear();
|
|
9854
|
+
}
|
|
9855
|
+
|
|
9856
|
+
void clear()
|
|
9857
|
+
{
|
|
9858
|
+
id.clear();
|
|
9859
|
+
name.clear();
|
|
9860
|
+
groups.clear();
|
|
9861
|
+
enabled = true;
|
|
9862
|
+
}
|
|
9863
|
+
};
|
|
9864
|
+
|
|
9865
|
+
static void to_json(nlohmann::json& j, const VoiceToVoiceSession& p)
|
|
9866
|
+
{
|
|
9867
|
+
j = nlohmann::json{
|
|
9868
|
+
TOJSON_IMPL(id),
|
|
9869
|
+
TOJSON_IMPL(name),
|
|
9870
|
+
TOJSON_IMPL(groups),
|
|
9871
|
+
TOJSON_IMPL(enabled)
|
|
9872
|
+
};
|
|
9873
|
+
}
|
|
9874
|
+
static void from_json(const nlohmann::json& j, VoiceToVoiceSession& p)
|
|
9875
|
+
{
|
|
9876
|
+
p.clear();
|
|
9877
|
+
FROMJSON_IMPL(id, std::string, EMPTY_STRING);
|
|
9878
|
+
FROMJSON_IMPL(name, std::string, EMPTY_STRING);
|
|
9879
|
+
getOptional<std::vector<std::string>>("groups", p.groups, j);
|
|
9880
|
+
FROMJSON_IMPL(enabled, bool, true);
|
|
9881
|
+
}
|
|
9882
|
+
|
|
9883
|
+
//-----------------------------------------------------------
|
|
9884
|
+
JSON_SERIALIZED_CLASS(LingoConfiguration)
|
|
9885
|
+
/**
|
|
9886
|
+
* @brief Lingo configuration
|
|
9887
|
+
*
|
|
9888
|
+
* Helper C++ class to serialize and de-serialize LingoConfiguration JSON
|
|
9889
|
+
*
|
|
9890
|
+
* Example: @include[doc] examples/LingoConfiguration.json
|
|
9891
|
+
*
|
|
9892
|
+
* @see TODO: ConfigurationObjects::LingoConfiguration
|
|
9893
|
+
*/
|
|
9894
|
+
class LingoConfiguration : public ConfigurationObjectBase
|
|
9895
|
+
{
|
|
9896
|
+
IMPLEMENT_JSON_SERIALIZATION()
|
|
9897
|
+
IMPLEMENT_JSON_DOCUMENTATION(LingoConfiguration)
|
|
9898
|
+
|
|
9899
|
+
public:
|
|
9900
|
+
/** @brief Array of voiceToVoice sessions in the configuration */
|
|
9901
|
+
std::vector<VoiceToVoiceSession> voiceToVoiceSessions;
|
|
9902
|
+
|
|
9903
|
+
/** @brief Array of groups in the configuration */
|
|
9904
|
+
std::vector<Group> groups;
|
|
9905
|
+
|
|
9906
|
+
LingoConfiguration()
|
|
9907
|
+
{
|
|
9908
|
+
clear();
|
|
9909
|
+
}
|
|
9910
|
+
|
|
9911
|
+
void clear()
|
|
9912
|
+
{
|
|
9913
|
+
voiceToVoiceSessions.clear();
|
|
9914
|
+
groups.clear();
|
|
9915
|
+
}
|
|
9916
|
+
};
|
|
9917
|
+
|
|
9918
|
+
static void to_json(nlohmann::json& j, const LingoConfiguration& p)
|
|
9919
|
+
{
|
|
9920
|
+
j = nlohmann::json{
|
|
9921
|
+
TOJSON_IMPL(voiceToVoiceSessions),
|
|
9922
|
+
TOJSON_IMPL(groups)
|
|
9923
|
+
};
|
|
9924
|
+
}
|
|
9925
|
+
static void from_json(const nlohmann::json& j, LingoConfiguration& p)
|
|
9926
|
+
{
|
|
9927
|
+
p.clear();
|
|
9928
|
+
getOptional<std::vector<VoiceToVoiceSession>>("voiceToVoiceSessions", p.voiceToVoiceSessions, j);
|
|
9929
|
+
getOptional<std::vector<Group>>("groups", p.groups, j);
|
|
9930
|
+
}
|
|
9931
|
+
|
|
9158
9932
|
//-----------------------------------------------------------
|
|
9159
9933
|
JSON_SERIALIZED_CLASS(BridgingConfiguration)
|
|
9160
9934
|
/**
|
|
@@ -9302,7 +10076,7 @@ namespace AppConfigurationObjects
|
|
|
9302
10076
|
IMPLEMENT_JSON_DOCUMENTATION(BridgingServerInternals)
|
|
9303
10077
|
|
|
9304
10078
|
public:
|
|
9305
|
-
/** @brief [Optional] Settings for the
|
|
10079
|
+
/** @brief [Optional] Settings for the watchdog. */
|
|
9306
10080
|
WatchdogSettings watchdog;
|
|
9307
10081
|
|
|
9308
10082
|
/** @brief [Optional, Default: 1000] Interval at which to run the housekeeper thread. */
|
|
@@ -9406,7 +10180,10 @@ namespace AppConfigurationObjects
|
|
|
9406
10180
|
std::string configurationCheckSignalName;
|
|
9407
10181
|
|
|
9408
10182
|
/** @brief [Optional] Settings for the FIPS crypto. */
|
|
9409
|
-
FipsCryptoSettings
|
|
10183
|
+
FipsCryptoSettings fipsCrypto;
|
|
10184
|
+
|
|
10185
|
+
/** @brief [Optional] Settings for NSM. */
|
|
10186
|
+
NsmConfiguration nsm;
|
|
9410
10187
|
|
|
9411
10188
|
BridgingServerConfiguration()
|
|
9412
10189
|
{
|
|
@@ -9429,6 +10206,7 @@ namespace AppConfigurationObjects
|
|
|
9429
10206
|
enginePolicy.clear();
|
|
9430
10207
|
configurationCheckSignalName = "rts.6cc0651.${id}";
|
|
9431
10208
|
fipsCrypto.clear();
|
|
10209
|
+
nsm.clear();
|
|
9432
10210
|
}
|
|
9433
10211
|
};
|
|
9434
10212
|
|
|
@@ -9448,7 +10226,8 @@ namespace AppConfigurationObjects
|
|
|
9448
10226
|
TOJSON_IMPL(certStorePasswordHex),
|
|
9449
10227
|
TOJSON_IMPL(enginePolicy),
|
|
9450
10228
|
TOJSON_IMPL(configurationCheckSignalName),
|
|
9451
|
-
TOJSON_IMPL(fipsCrypto)
|
|
10229
|
+
TOJSON_IMPL(fipsCrypto),
|
|
10230
|
+
TOJSON_IMPL(nsm)
|
|
9452
10231
|
};
|
|
9453
10232
|
}
|
|
9454
10233
|
static void from_json(const nlohmann::json& j, BridgingServerConfiguration& p)
|
|
@@ -9468,6 +10247,7 @@ namespace AppConfigurationObjects
|
|
|
9468
10247
|
j.at("enginePolicy").get_to(p.enginePolicy);
|
|
9469
10248
|
getOptional<std::string>("configurationCheckSignalName", p.configurationCheckSignalName, j, "rts.6cc0651.${id}");
|
|
9470
10249
|
getOptional<FipsCryptoSettings>("fipsCrypto", p.fipsCrypto, j);
|
|
10250
|
+
getOptional<NsmConfiguration>("nsm", p.nsm, j);
|
|
9471
10251
|
}
|
|
9472
10252
|
|
|
9473
10253
|
|
|
@@ -9688,6 +10468,9 @@ namespace AppConfigurationObjects
|
|
|
9688
10468
|
/** @brief [Optional] Settings for the FIPS crypto. */
|
|
9689
10469
|
FipsCryptoSettings fipsCrypto;
|
|
9690
10470
|
|
|
10471
|
+
/** @brief [Optional] Settings for NSM. */
|
|
10472
|
+
NsmConfiguration nsm;
|
|
10473
|
+
|
|
9691
10474
|
EarServerConfiguration()
|
|
9692
10475
|
{
|
|
9693
10476
|
clear();
|
|
@@ -9708,6 +10491,7 @@ namespace AppConfigurationObjects
|
|
|
9708
10491
|
enginePolicy.clear();
|
|
9709
10492
|
configurationCheckSignalName = "rts.9a164fa.${id}";
|
|
9710
10493
|
fipsCrypto.clear();
|
|
10494
|
+
nsm.clear();
|
|
9711
10495
|
}
|
|
9712
10496
|
};
|
|
9713
10497
|
|
|
@@ -9726,7 +10510,8 @@ namespace AppConfigurationObjects
|
|
|
9726
10510
|
TOJSON_IMPL(certStorePasswordHex),
|
|
9727
10511
|
TOJSON_IMPL(enginePolicy),
|
|
9728
10512
|
TOJSON_IMPL(configurationCheckSignalName),
|
|
9729
|
-
TOJSON_IMPL(fipsCrypto)
|
|
10513
|
+
TOJSON_IMPL(fipsCrypto),
|
|
10514
|
+
TOJSON_IMPL(nsm)
|
|
9730
10515
|
};
|
|
9731
10516
|
}
|
|
9732
10517
|
static void from_json(const nlohmann::json& j, EarServerConfiguration& p)
|
|
@@ -9743,7 +10528,9 @@ namespace AppConfigurationObjects
|
|
|
9743
10528
|
getOptional<std::string>("certStoreFileName", p.certStoreFileName, j);
|
|
9744
10529
|
getOptional<std::string>("certStorePasswordHex", p.certStorePasswordHex, j);
|
|
9745
10530
|
j.at("enginePolicy").get_to(p.enginePolicy);
|
|
9746
|
-
getOptional<std::string>("configurationCheckSignalName", p.configurationCheckSignalName, j, "rts.
|
|
10531
|
+
getOptional<std::string>("configurationCheckSignalName", p.configurationCheckSignalName, j, "rts.9a164fa.${id}");
|
|
10532
|
+
getOptional<FipsCryptoSettings>("fipsCrypto", p.fipsCrypto, j);
|
|
10533
|
+
getOptional<NsmConfiguration>("nsm", p.nsm, j);
|
|
9747
10534
|
}
|
|
9748
10535
|
|
|
9749
10536
|
//-----------------------------------------------------------
|