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.
@@ -248,31 +248,45 @@ namespace AppConfigurationObjects
248
248
  \
249
249
  std::string serialize(const int indent = -1) \
250
250
  { \
251
- nlohmann::json j; \
252
- to_json(j, *this); \
253
- return j.dump(indent); \
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
- nlohmann::json j; \
261
- to_json(j, *this); \
262
- \
263
- std::string rc; \
264
- char firstChar[2]; \
265
- firstChar[0] = #_cn[0]; \
266
- firstChar[1] = 0; \
267
- firstChar[0] = tolower(firstChar[0]); \
268
- rc.assign("{\""); \
269
- rc.append(firstChar); \
270
- rc.append((#_cn) + 1); \
271
- rc.append("\":"); \
272
- rc.append(j.dump(indent)); \
273
- rc.append("}"); \
274
- \
275
- return rc; \
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[MAX_NODE_ID_SIZE];
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[MAX_ALIAS_SIZE];
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 fipsCrypto;
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(BridgeCreationDetail)
8573
+ JSON_SERIALIZED_CLASS(RiffDescriptor)
8363
8574
  /**
8364
- * @brief Detailed information for a bridge creation
8575
+ * @brief Helper class for serializing and deserializing the RiffDescriptor JSON
8365
8576
  *
8366
- * Helper C++ class to serialize and de-serialize BridgeCreationDetail JSON
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 BridgeCreationDetail : public ConfigurationObjectBase
8583
+ class RiffDescriptor : public ConfigurationObjectBase
8370
8584
  {
8371
8585
  IMPLEMENT_JSON_SERIALIZATION()
8372
- IMPLEMENT_WRAPPED_JSON_SERIALIZATION(BridgeCreationDetail)
8373
- IMPLEMENT_JSON_DOCUMENTATION(BridgeCreationDetail)
8586
+ IMPLEMENT_JSON_DOCUMENTATION(RiffDescriptor)
8374
8587
 
8375
8588
  public:
8376
- /** @brief Creation status */
8377
- typedef enum
8378
- {
8379
- /** @brief Undefined */
8380
- csUndefined = 0,
8589
+ /** @brief Name of the RIFF file. */
8590
+ std::string file;
8381
8591
 
8382
- /** @brief Creation OK */
8383
- csOk = 1,
8592
+ /** @brief True if the ECDSA signature is verified. */
8593
+ bool verified;
8384
8594
 
8385
- /** @brief Configuration JSON is empty */
8386
- csNoJson = -1,
8595
+ /** @brief Number of audio channels */
8596
+ int channels;
8387
8597
 
8388
- /** @brief Bridge already exists */
8389
- csAlreadyExists = -3,
8598
+ /** @brief Number of audio samples */
8599
+ int sampleCount;
8390
8600
 
8391
- /** @brief Invalid configuration */
8392
- csInvalidConfiguration = -4,
8601
+ /** @brief [Optional] Meta data associated with the file - typically a stringified JSON object. */
8602
+ std::string meta;
8393
8603
 
8394
- /** @brief Invalid JSON */
8395
- csInvalidJson = -5,
8604
+ /** @brief [Optional] X.509 certificate in PEM format used to sign the RIFF file. */
8605
+ std::string certPem;
8396
8606
 
8397
- /** @brief Insufficient groups in bridge */
8398
- csInsufficientGroups = -6,
8607
+ /** @brief [Optional] X.509 certificate parsed into a CertificateDescriptor object. */
8608
+ CertificateDescriptor certDescriptor;
8399
8609
 
8400
- /** @brief Too many groups in bridge */
8401
- csTooManyGroups = -7,
8610
+ /** @brief [Optional] ECDSA signature */
8611
+ std::string signature;
8402
8612
 
8403
- /** @brief Duplicate group in the same bridge */
8404
- csDuplicateGroup = -8,
8613
+ RiffDescriptor()
8614
+ {
8615
+ clear();
8616
+ }
8405
8617
 
8406
- /** @brief Duplicate group in the same bridge */
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 EAR's watchdog. */
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 fipsCrypto;
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.6cc0651.${id}");
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
  //-----------------------------------------------------------