engage-engine 1.242.90820008 → 1.244.90840009

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.
@@ -1088,7 +1088,10 @@ namespace AppConfigurationObjects
1088
1088
  bptEngageBinaryHumanBiometrics = 4,
1089
1089
 
1090
1090
  /** @brief The payload is MIME-encoded as per RFC 2045 */
1091
- bptAppMimeMessage = 5
1091
+ bptAppMimeMessage = 5,
1092
+
1093
+ /** @brief The payload is internal to Engage */
1094
+ bptEngageInternal = 42
1092
1095
  } PayloadType_t;
1093
1096
 
1094
1097
  /** @brief [Optional, Default : 0] Size of the payload */
@@ -3230,6 +3233,9 @@ namespace AppConfigurationObjects
3230
3233
  /** @brief [Optional, Default: 5] Number of headers to send at the conclusion of a talk burst. */
3231
3234
  int trailingHeaderBurst;
3232
3235
 
3236
+ /** @brief [Optional, Default: 5] Number of start TX notifications to send when TX is about to begin. */
3237
+ int startTxNotifications;
3238
+
3233
3239
  /** @brief [Optional, Default: -1] The custom RTP payload type to use for transmission. A value of -1 causes the default
3234
3240
  * Engage-defined RTP payload type to be used for the selected CODEC.
3235
3241
  */
@@ -3268,6 +3274,7 @@ namespace AppConfigurationObjects
3268
3274
  extensionSendInterval = 10;
3269
3275
  initialHeaderBurst = 5;
3270
3276
  trailingHeaderBurst = 5;
3277
+ startTxNotifications = 5;
3271
3278
  customRtpPayloadType = -1;
3272
3279
  internalKey = 0;
3273
3280
  resetRtpOnTx = true;
@@ -3291,6 +3298,7 @@ namespace AppConfigurationObjects
3291
3298
  TOJSON_IMPL(extensionSendInterval),
3292
3299
  TOJSON_IMPL(initialHeaderBurst),
3293
3300
  TOJSON_IMPL(trailingHeaderBurst),
3301
+ TOJSON_IMPL(startTxNotifications),
3294
3302
  TOJSON_IMPL(customRtpPayloadType),
3295
3303
  TOJSON_IMPL(resetRtpOnTx),
3296
3304
  TOJSON_IMPL(enableSmoothing),
@@ -3314,6 +3322,7 @@ namespace AppConfigurationObjects
3314
3322
  getOptional("extensionSendInterval", p.extensionSendInterval, j, 10);
3315
3323
  getOptional("initialHeaderBurst", p.initialHeaderBurst, j, 5);
3316
3324
  getOptional("trailingHeaderBurst", p.trailingHeaderBurst, j, 5);
3325
+ getOptional("startTxNotifications", p.startTxNotifications, j, 5);
3317
3326
  getOptional("customRtpPayloadType", p.customRtpPayloadType, j, -1);
3318
3327
  getOptional("resetRtpOnTx", p.resetRtpOnTx, j, true);
3319
3328
  getOptional("enableSmoothing", p.enableSmoothing, j, true);
@@ -4331,6 +4340,9 @@ namespace AppConfigurationObjects
4331
4340
  /** @brief [NOT USED AT THIS TIME] */
4332
4341
  StringRestrictionList issuerRestrictions;
4333
4342
 
4343
+ /** @brief [Optional] Array of serial numbers certificates that have been revoked*/
4344
+ std::vector<std::string> crlSerials;
4345
+
4334
4346
  Tls()
4335
4347
  {
4336
4348
  clear();
@@ -4343,6 +4355,7 @@ namespace AppConfigurationObjects
4343
4355
  caCertificates.clear();
4344
4356
  subjectRestrictions.clear();
4345
4357
  issuerRestrictions.clear();
4358
+ crlSerials.clear();
4346
4359
  }
4347
4360
  };
4348
4361
 
@@ -4353,7 +4366,8 @@ namespace AppConfigurationObjects
4353
4366
  TOJSON_IMPL(allowSelfSignedCertificates),
4354
4367
  TOJSON_IMPL(caCertificates),
4355
4368
  TOJSON_IMPL(subjectRestrictions),
4356
- TOJSON_IMPL(issuerRestrictions)
4369
+ TOJSON_IMPL(issuerRestrictions),
4370
+ TOJSON_IMPL(crlSerials)
4357
4371
  };
4358
4372
  }
4359
4373
  static void from_json(const nlohmann::json& j, Tls& p)
@@ -4364,6 +4378,7 @@ namespace AppConfigurationObjects
4364
4378
  getOptional<std::vector<std::string>>("caCertificates", p.caCertificates, j);
4365
4379
  getOptional<StringRestrictionList>("subjectRestrictions", p.subjectRestrictions, j);
4366
4380
  getOptional<StringRestrictionList>("issuerRestrictions", p.issuerRestrictions, j);
4381
+ getOptional<std::vector<std::string>>("crlSerials", p.crlSerials, j);
4367
4382
  }
4368
4383
 
4369
4384
  //-----------------------------------------------------------
@@ -4696,7 +4711,7 @@ namespace AppConfigurationObjects
4696
4711
  /** @brief Details for capture of transmitted packets */
4697
4712
  PacketCapturer txCapture;
4698
4713
 
4699
- /** @brief [Optional, Default: 66] The RTP payload type to be used for blobs sent over RTP (see BlobInfo) */
4714
+ /** @brief [Optional, Default: ENGAGE_DEFAULT_BLOB_RTP_PAYLOAD_TYPE] The RTP payload type to be used for blobs sent over RTP (see BlobInfo) */
4700
4715
  uint16_t blobRtpPayloadType;
4701
4716
 
4702
4717
  /** @brief [Optional, Default: iagpAnonymousAlias] */
@@ -4705,6 +4720,9 @@ namespace AppConfigurationObjects
4705
4720
  /** @brief [Optional] Inbound gating of audio - only audio allowed through by the gate will be processed */
4706
4721
  AudioGate gateIn;
4707
4722
 
4723
+ /** @brief [Optional, Default: false] Indicates that the group should ignore traffic that is audio-related */
4724
+ bool ignoreAudioTraffic;
4725
+
4708
4726
  Group()
4709
4727
  {
4710
4728
  clear();
@@ -4778,9 +4796,11 @@ namespace AppConfigurationObjects
4778
4796
  rxCapture.clear();
4779
4797
  txCapture.clear();
4780
4798
 
4781
- blobRtpPayloadType = 66;
4799
+ blobRtpPayloadType = ENGAGE_DEFAULT_BLOB_RTP_PAYLOAD_TYPE;
4782
4800
  inboundAliasGenerationPolicy = iagpAnonymousAlias;
4783
4801
  gateIn.clear();
4802
+
4803
+ ignoreAudioTraffic = false;
4784
4804
  }
4785
4805
  };
4786
4806
 
@@ -4845,7 +4865,9 @@ namespace AppConfigurationObjects
4845
4865
 
4846
4866
  TOJSON_IMPL(inboundAliasGenerationPolicy),
4847
4867
 
4848
- TOJSON_IMPL(gateIn)
4868
+ TOJSON_IMPL(gateIn),
4869
+
4870
+ TOJSON_IMPL(ignoreAudioTraffic)
4849
4871
  };
4850
4872
 
4851
4873
  TOJSON_BASE_IMPL();
@@ -4923,12 +4945,14 @@ namespace AppConfigurationObjects
4923
4945
  getOptional<PacketCapturer>("rxCapture", p.rxCapture, j);
4924
4946
  getOptional<PacketCapturer>("txCapture", p.txCapture, j);
4925
4947
 
4926
- getOptional<uint16_t>("blobRtpPayloadType", p.blobRtpPayloadType, j, 66);
4948
+ getOptional<uint16_t>("blobRtpPayloadType", p.blobRtpPayloadType, j, ENGAGE_DEFAULT_BLOB_RTP_PAYLOAD_TYPE);
4927
4949
 
4928
4950
  getOptional<Group::InboundAliasGenerationPolicy_t>("inboundAliasGenerationPolicy", p.inboundAliasGenerationPolicy, j, Group::InboundAliasGenerationPolicy_t::iagpAnonymousAlias);
4929
4951
 
4930
4952
  getOptional<AudioGate>("gateIn", p.gateIn, j);
4931
4953
 
4954
+ getOptional<bool>("ignoreAudioTraffic", p.ignoreAudioTraffic, j, false);
4955
+
4932
4956
  FROMJSON_BASE_IMPL();
4933
4957
  }
4934
4958
 
@@ -7870,6 +7894,9 @@ namespace AppConfigurationObjects
7870
7894
  /** @brief [Optional] The name of the NIC on which to send and receive multicast traffic. */
7871
7895
  std::string multicastInterfaceName;
7872
7896
 
7897
+ /** @brief Vector of additional TX addresses . */
7898
+ std::vector<NetworkAddress> additionalTx;
7899
+
7873
7900
  RallypointReflector()
7874
7901
  {
7875
7902
  clear();
@@ -7881,6 +7908,7 @@ namespace AppConfigurationObjects
7881
7908
  rx.clear();
7882
7909
  tx.clear();
7883
7910
  multicastInterfaceName.clear();
7911
+ additionalTx.clear();
7884
7912
  }
7885
7913
  };
7886
7914
 
@@ -7890,7 +7918,8 @@ namespace AppConfigurationObjects
7890
7918
  TOJSON_IMPL(id),
7891
7919
  TOJSON_IMPL(rx),
7892
7920
  TOJSON_IMPL(tx),
7893
- TOJSON_IMPL(multicastInterfaceName)
7921
+ TOJSON_IMPL(multicastInterfaceName),
7922
+ TOJSON_IMPL(additionalTx)
7894
7923
  };
7895
7924
  }
7896
7925
  static void from_json(const nlohmann::json& j, RallypointReflector& p)
@@ -7900,6 +7929,7 @@ namespace AppConfigurationObjects
7900
7929
  j.at("rx").get_to(p.rx);
7901
7930
  j.at("tx").get_to(p.tx);
7902
7931
  getOptional<std::string>("multicastInterfaceName", p.multicastInterfaceName, j);
7932
+ getOptional<std::vector<NetworkAddress>>("additionalTx", p.additionalTx, j);
7903
7933
  }
7904
7934
 
7905
7935
 
@@ -8338,7 +8368,7 @@ namespace AppConfigurationObjects
8338
8368
  int listenPort;
8339
8369
 
8340
8370
  /** @brief [Optional, Default IpFamilyType_t::ifIp4] Address familiy to be used for listening */
8341
- IpFamilyType_t ipFamily;
8371
+ IpFamilyType_t ipFamily;
8342
8372
 
8343
8373
  /** @brief Name of the NIC to bind to for listening for incoming TCP connections. */
8344
8374
  std::string interfaceName;
@@ -8478,6 +8508,12 @@ namespace AppConfigurationObjects
8478
8508
  /** @brief [Optional] Settings for advertising. */
8479
8509
  RallypointAdvertisingSettings advertising;
8480
8510
 
8511
+ /** @brief Details for capture of received packets */
8512
+ PacketCapturer rxCapture;
8513
+
8514
+ /** @brief Details for capture of transmitted packets */
8515
+ PacketCapturer txCapture;
8516
+
8481
8517
  RallypointServer()
8482
8518
  {
8483
8519
  clear();
@@ -8536,6 +8572,8 @@ namespace AppConfigurationObjects
8536
8572
  extendedGroupRestrictions.clear();
8537
8573
  groupRestrictionAccessPolicyType = GroupRestrictionAccessPolicyType_t::graptPermissive;
8538
8574
  ipFamily = IpFamilyType_t::ifIpUnspec;
8575
+ rxCapture.clear();
8576
+ txCapture.clear();
8539
8577
  }
8540
8578
  };
8541
8579
 
@@ -8592,7 +8630,9 @@ namespace AppConfigurationObjects
8592
8630
  TOJSON_IMPL(advertising),
8593
8631
  TOJSON_IMPL(extendedGroupRestrictions),
8594
8632
  TOJSON_IMPL(groupRestrictionAccessPolicyType),
8595
- TOJSON_IMPL(ipFamily)
8633
+ TOJSON_IMPL(ipFamily),
8634
+ TOJSON_IMPL(rxCapture),
8635
+ TOJSON_IMPL(txCapture)
8596
8636
  };
8597
8637
  }
8598
8638
  static void from_json(const nlohmann::json& j, RallypointServer& p)
@@ -8649,6 +8689,8 @@ namespace AppConfigurationObjects
8649
8689
  getOptional<std::vector<RallypointExtendedGroupRestriction>>("extendedGroupRestrictions", p.extendedGroupRestrictions, j);
8650
8690
  getOptional<GroupRestrictionAccessPolicyType_t>("groupRestrictionAccessPolicyType", p.groupRestrictionAccessPolicyType, j, GroupRestrictionAccessPolicyType_t::graptPermissive);
8651
8691
  getOptional<IpFamilyType_t>("ipFamily", p.ipFamily, j, IpFamilyType_t::ifIpUnspec);
8692
+ getOptional<PacketCapturer>("rxCapture", p.rxCapture, j);
8693
+ getOptional<PacketCapturer>("txCapture", p.txCapture, j);
8652
8694
  }
8653
8695
 
8654
8696
  //-----------------------------------------------------------
@@ -9539,7 +9581,10 @@ namespace AppConfigurationObjects
9539
9581
  txsInvalidId = -9,
9540
9582
 
9541
9583
  /** @brief TX has ended with a failure */
9542
- txsTxEndedWithFailure = -10
9584
+ txsTxEndedWithFailure = -10,
9585
+
9586
+ /** @brief One or more other entities are or will soon be actively transmitting */
9587
+ txsOthersActive = -11
9543
9588
  } TxStatus_t;
9544
9589
 
9545
9590
  /** @brief ID of the group */
@@ -11198,6 +11243,310 @@ namespace AppConfigurationObjects
11198
11243
  getOptional<NsmConfiguration>("nsm", p.nsm, j);
11199
11244
  }
11200
11245
 
11246
+ //-----------------------------------------------------------
11247
+ JSON_SERIALIZED_CLASS(EngageSemGroupsConfiguration)
11248
+ /**
11249
+ * @brief Engage Semaphore configuration
11250
+ *
11251
+ * Helper C++ class to serialize and de-serialize EngageSemGroupsConfiguration JSON
11252
+ *
11253
+ * Example: @include[doc] examples/EngageSemGroupsConfiguration.json
11254
+ *
11255
+ * @see TODO: ConfigurationObjects::EngageSemGroupsConfiguration
11256
+ */
11257
+ class EngageSemGroupsConfiguration : public ConfigurationObjectBase
11258
+ {
11259
+ IMPLEMENT_JSON_SERIALIZATION()
11260
+ IMPLEMENT_JSON_DOCUMENTATION(EngageSemGroupsConfiguration)
11261
+
11262
+ public:
11263
+ /** @brief Array of groups in the configuration */
11264
+ std::vector<Group> groups;
11265
+
11266
+ EngageSemGroupsConfiguration()
11267
+ {
11268
+ clear();
11269
+ }
11270
+
11271
+ void clear()
11272
+ {
11273
+ groups.clear();
11274
+ }
11275
+ };
11276
+
11277
+ static void to_json(nlohmann::json& j, const EngageSemGroupsConfiguration& p)
11278
+ {
11279
+ j = nlohmann::json{
11280
+ TOJSON_IMPL(groups)
11281
+ };
11282
+ }
11283
+ static void from_json(const nlohmann::json& j, EngageSemGroupsConfiguration& p)
11284
+ {
11285
+ p.clear();
11286
+ getOptional<std::vector<Group>>("groups", p.groups, j);
11287
+ }
11288
+
11289
+ //-----------------------------------------------------------
11290
+ JSON_SERIALIZED_CLASS(EngageSemServerStatusReportConfiguration)
11291
+ /**
11292
+ * @brief TODO: Configuration for the EFC server status report file
11293
+ *
11294
+ * Helper C++ class to serialize and de-serialize EngageSemServerStatusReportConfiguration JSON
11295
+ *
11296
+ * Example: @include[doc] examples/EngageSemServerStatusReportConfiguration.json
11297
+ *
11298
+ * @see RallypointServer
11299
+ */
11300
+ class EngageSemServerStatusReportConfiguration : public ConfigurationObjectBase
11301
+ {
11302
+ IMPLEMENT_JSON_SERIALIZATION()
11303
+ IMPLEMENT_JSON_DOCUMENTATION(EngageSemServerStatusReportConfiguration)
11304
+
11305
+ public:
11306
+ /** File name to use for the status report. */
11307
+ std::string fileName;
11308
+
11309
+ /** [Optional, Default: 30] The interval at which to write out the status report to file. */
11310
+ int intervalSecs;
11311
+
11312
+ /** [Optional, Default: false] Indicates if status reporting is enabled. */
11313
+ bool enabled;
11314
+
11315
+ /** [Optional, Default: null] Command to be executed every time the status report is produced. */
11316
+ std::string runCmd;
11317
+
11318
+ /** [Optional, Default: false] Indicates whether to include details of each group. */
11319
+ bool includeGroupDetail;
11320
+
11321
+ EngageSemServerStatusReportConfiguration()
11322
+ {
11323
+ clear();
11324
+ }
11325
+
11326
+ void clear()
11327
+ {
11328
+ fileName.clear();
11329
+ intervalSecs = 60;
11330
+ enabled = false;
11331
+ includeGroupDetail = false;
11332
+ runCmd.clear();
11333
+ }
11334
+ };
11335
+
11336
+ static void to_json(nlohmann::json& j, const EngageSemServerStatusReportConfiguration& p)
11337
+ {
11338
+ j = nlohmann::json{
11339
+ TOJSON_IMPL(fileName),
11340
+ TOJSON_IMPL(intervalSecs),
11341
+ TOJSON_IMPL(enabled),
11342
+ TOJSON_IMPL(includeGroupDetail),
11343
+ TOJSON_IMPL(runCmd)
11344
+ };
11345
+ }
11346
+ static void from_json(const nlohmann::json& j, EngageSemServerStatusReportConfiguration& p)
11347
+ {
11348
+ p.clear();
11349
+ getOptional<std::string>("fileName", p.fileName, j);
11350
+ getOptional<int>("intervalSecs", p.intervalSecs, j, 60);
11351
+ getOptional<bool>("enabled", p.enabled, j, false);
11352
+ getOptional<std::string>("runCmd", p.runCmd, j);
11353
+ getOptional<bool>("includeGroupDetail", p.includeGroupDetail, j, false);
11354
+ }
11355
+
11356
+ //-----------------------------------------------------------
11357
+ JSON_SERIALIZED_CLASS(EngageSemServerInternals)
11358
+ /**
11359
+ * @brief Internal EFC server settings
11360
+ *
11361
+ * These settings are used to configure internal parameters.
11362
+ *
11363
+ * Helper C++ class to serialize and de-serialize EngageSemServerInternals JSON
11364
+ *
11365
+ * Example: @include[doc] examples/EngageSemServerInternals.json
11366
+ *
11367
+ * @see engageInitialize, ConfigurationObjects::EngageSemServerConfiguration
11368
+ */
11369
+ class EngageSemServerInternals : public ConfigurationObjectBase
11370
+ {
11371
+ IMPLEMENT_JSON_SERIALIZATION()
11372
+ IMPLEMENT_JSON_DOCUMENTATION(EngageSemServerInternals)
11373
+
11374
+ public:
11375
+ /** @brief [Optional] Settings for the EFC's watchdog. */
11376
+ WatchdogSettings watchdog;
11377
+
11378
+ /** @brief [Optional, Default: 1000] Interval at which to run the housekeeper thread. */
11379
+ int housekeeperIntervalMs;
11380
+
11381
+ EngageSemServerInternals()
11382
+ {
11383
+ clear();
11384
+ }
11385
+
11386
+ void clear()
11387
+ {
11388
+ watchdog.clear();
11389
+ housekeeperIntervalMs = 1000;
11390
+ }
11391
+ };
11392
+
11393
+ static void to_json(nlohmann::json& j, const EngageSemServerInternals& p)
11394
+ {
11395
+ j = nlohmann::json{
11396
+ TOJSON_IMPL(watchdog),
11397
+ TOJSON_IMPL(housekeeperIntervalMs)
11398
+ };
11399
+ }
11400
+ static void from_json(const nlohmann::json& j, EngageSemServerInternals& p)
11401
+ {
11402
+ p.clear();
11403
+ getOptional<WatchdogSettings>("watchdog", p.watchdog, j);
11404
+ getOptional<int>("housekeeperIntervalMs", p.housekeeperIntervalMs, j, 1000);
11405
+ }
11406
+
11407
+ //-----------------------------------------------------------
11408
+ JSON_SERIALIZED_CLASS(EngageSemServerConfiguration)
11409
+ /**
11410
+ * @brief Configuration for the EFC server
11411
+ *
11412
+ * Helper C++ class to serialize and de-serialize EngageSemServerConfiguration JSON
11413
+ *
11414
+ * Example: @include[doc] examples/EngageSemServerConfiguration.json
11415
+ *
11416
+ */
11417
+ class EngageSemServerConfiguration : public ConfigurationObjectBase
11418
+ {
11419
+ IMPLEMENT_JSON_SERIALIZATION()
11420
+ IMPLEMENT_JSON_DOCUMENTATION(EngageSemServerConfiguration)
11421
+
11422
+ public:
11423
+
11424
+ /** @brief A unqiue identifier for the EFC server */
11425
+ std::string id;
11426
+
11427
+ /** @brief Number of seconds between checks to see if the service configuration has been updated. Default is 60.*/
11428
+ int serviceConfigurationFileCheckSecs;
11429
+
11430
+ /** @brief Name of a file containing the EFC configuration. */
11431
+ std::string groupsConfigurationFileName;
11432
+
11433
+ /** @brief Command-line to execute that returns a configuration */
11434
+ std::string groupsConfigurationFileCommand;
11435
+
11436
+ /** @brief Number of seconds between checks to see if the configuration has been updated. Default is 60.*/
11437
+ int groupsConfigurationFileCheckSecs;
11438
+
11439
+ /** @brief Details for producing a status report. @see EngageSemServerStatusReportConfiguration */
11440
+ EngageSemServerStatusReportConfiguration statusReport;
11441
+
11442
+ /** @brief Details concerning the server's interaction with an external health-checker such as a load-balancer. @see ExternalHealthCheckResponder */
11443
+ ExternalHealthCheckResponder externalHealthCheckResponder;
11444
+
11445
+ /** @brief Internal settings */
11446
+ EngageSemServerInternals internals;
11447
+
11448
+ /** @brief Path to the certificate store */
11449
+ std::string certStoreFileName;
11450
+
11451
+ /** @brief Hex password for the certificate store (if any) */
11452
+ std::string certStorePasswordHex;
11453
+
11454
+ /** @brief The policy to be used for the underlying Engage Engine */
11455
+ EnginePolicy enginePolicy;
11456
+
11457
+ /** @brief Name to use for signalling a configuration check */
11458
+ std::string configurationCheckSignalName;
11459
+
11460
+ /** @brief [Optional] Settings for the FIPS crypto. */
11461
+ FipsCryptoSettings fipsCrypto;
11462
+
11463
+ /** @brief [Optional] Settings for NSM. */
11464
+ NsmConfiguration nsm;
11465
+
11466
+ int maxQueueLen;
11467
+ int minQueuingMs;
11468
+ int maxQueuingMs;
11469
+ int minPriority;
11470
+ int maxPriority;
11471
+
11472
+ EngageSemServerConfiguration()
11473
+ {
11474
+ clear();
11475
+ }
11476
+
11477
+ void clear()
11478
+ {
11479
+ id.clear();
11480
+ serviceConfigurationFileCheckSecs = 60;
11481
+ groupsConfigurationFileName.clear();
11482
+ groupsConfigurationFileCommand.clear();
11483
+ groupsConfigurationFileCheckSecs = 60;
11484
+ statusReport.clear();
11485
+ externalHealthCheckResponder.clear();
11486
+ internals.clear();
11487
+ certStoreFileName.clear();
11488
+ certStorePasswordHex.clear();
11489
+ enginePolicy.clear();
11490
+ configurationCheckSignalName = "rts.9a164fa.${id}";
11491
+ fipsCrypto.clear();
11492
+ nsm.clear();
11493
+
11494
+ maxQueueLen = 64;
11495
+ minQueuingMs = 0;
11496
+ maxQueuingMs = 15000;
11497
+ minPriority = 0;
11498
+ maxPriority = 255;
11499
+ }
11500
+ };
11501
+
11502
+ static void to_json(nlohmann::json& j, const EngageSemServerConfiguration& p)
11503
+ {
11504
+ j = nlohmann::json{
11505
+ TOJSON_IMPL(id),
11506
+ TOJSON_IMPL(serviceConfigurationFileCheckSecs),
11507
+ TOJSON_IMPL(groupsConfigurationFileName),
11508
+ TOJSON_IMPL(groupsConfigurationFileCommand),
11509
+ TOJSON_IMPL(groupsConfigurationFileCheckSecs),
11510
+ TOJSON_IMPL(statusReport),
11511
+ TOJSON_IMPL(externalHealthCheckResponder),
11512
+ TOJSON_IMPL(internals),
11513
+ TOJSON_IMPL(certStoreFileName),
11514
+ TOJSON_IMPL(certStorePasswordHex),
11515
+ TOJSON_IMPL(enginePolicy),
11516
+ TOJSON_IMPL(configurationCheckSignalName),
11517
+ TOJSON_IMPL(fipsCrypto),
11518
+ TOJSON_IMPL(nsm),
11519
+ TOJSON_IMPL(maxQueueLen),
11520
+ TOJSON_IMPL(minQueuingMs),
11521
+ TOJSON_IMPL(maxQueuingMs),
11522
+ TOJSON_IMPL(minPriority),
11523
+ TOJSON_IMPL(maxPriority)
11524
+ };
11525
+ }
11526
+ static void from_json(const nlohmann::json& j, EngageSemServerConfiguration& p)
11527
+ {
11528
+ p.clear();
11529
+ getOptional<std::string>("id", p.id, j);
11530
+ getOptional<int>("serviceConfigurationFileCheckSecs", p.serviceConfigurationFileCheckSecs, j, 60);
11531
+ getOptional<std::string>("groupsConfigurationFileName", p.groupsConfigurationFileName, j);
11532
+ getOptional<std::string>("groupsConfigurationFileCommand", p.groupsConfigurationFileCommand, j);
11533
+ getOptional<int>("groupsConfigurationFileCheckSecs", p.groupsConfigurationFileCheckSecs, j, 60);
11534
+ getOptional<EngageSemServerStatusReportConfiguration>("statusReport", p.statusReport, j);
11535
+ getOptional<ExternalHealthCheckResponder>("externalHealthCheckResponder", p.externalHealthCheckResponder, j);
11536
+ getOptional<EngageSemServerInternals>("internals", p.internals, j);
11537
+ getOptional<std::string>("certStoreFileName", p.certStoreFileName, j);
11538
+ getOptional<std::string>("certStorePasswordHex", p.certStorePasswordHex, j);
11539
+ j.at("enginePolicy").get_to(p.enginePolicy);
11540
+ getOptional<std::string>("configurationCheckSignalName", p.configurationCheckSignalName, j, "rts.9a164fa.${id}");
11541
+ getOptional<FipsCryptoSettings>("fipsCrypto", p.fipsCrypto, j);
11542
+ getOptional<NsmConfiguration>("nsm", p.nsm, j);
11543
+ getOptional<int>("maxQueueLen", p.maxQueueLen, j, 64);
11544
+ getOptional<int>("minQueuingMs", p.minQueuingMs, j, 0);
11545
+ getOptional<int>("maxQueuingMs", p.maxQueuingMs, j, 15000);
11546
+ getOptional<int>("minPriority", p.minPriority, j, 0);
11547
+ getOptional<int>("maxPriority", p.maxPriority, j, 255);
11548
+ }
11549
+
11201
11550
  //-----------------------------------------------------------
11202
11551
  static inline void dumpExampleConfigurations(const char *path)
11203
11552
  {
@@ -11309,6 +11658,11 @@ namespace AppConfigurationObjects
11309
11658
  EarServerConfiguration::document();
11310
11659
  RangerPackets::document();
11311
11660
  TransportImpairment::document();
11661
+
11662
+ EngageSemGroupsConfiguration::document();
11663
+ EngageSemServerStatusReportConfiguration::document();
11664
+ EngageSemServerInternals::document();
11665
+ EngageSemServerConfiguration::document();
11312
11666
  }
11313
11667
  }
11314
11668
 
@@ -209,6 +209,18 @@ static const uint8_t ENGAGE_TXFLAG_TID_INVALIDATED = 0x0010;
209
209
 
210
210
  /** @brief Indicates that the receiver should auto-mute using the alias specializer if receiver has that specializer present */
211
211
  static const uint8_t ENGAGE_TXFLAG_MUTE_RX_FOR_SPECIALIZER = 0x0020; // READ-ONLY!!
212
+
213
+ /** @brief Indicates that a transmission is about to start */
214
+ static const uint8_t ENGAGE_TXFLAG_TX_START = 0x0040; // READ-ONLY!!
215
+ /** @} */
216
+
217
+ /** @addtogroup internals Engage internal constants
218
+ *
219
+ * @{
220
+ */
221
+
222
+ /** @brief The default RTP payload type Engage uses for RTP blob messaging */
223
+ static const uint8_t ENGAGE_DEFAULT_BLOB_RTP_PAYLOAD_TYPE = 66;
212
224
  /** @} */
213
225
 
214
226
  #endif // EngageConstants_h
@@ -0,0 +1,64 @@
1
+ //
2
+ // Copyright (c) 2024 Rally Tactical Systems, Inc.
3
+ // All rights reserved.
4
+ //
5
+ /** @file EngageSemNames.h
6
+ * @brief Object and field names used for interaction with Engage Semaphore Service
7
+ *
8
+ */
9
+
10
+ #ifndef EngageSemNames_h
11
+ #define EngageSemNames_h
12
+
13
+ /** @brief The root name of the JSON object. */
14
+ #define ENSEM_JSON_OBJECT_NAME "ensem"
15
+
16
+ /** @brief Message type. */
17
+ #define ENSEM_JSON_FIELD_MESSAGE_TYPE "ty"
18
+
19
+ /** @brief The semaphore identifier. Case insensitive. */
20
+ #define ENSEM_JSON_FIELD_SEM_ID "i"
21
+
22
+ /** @brief Maximum number of owners the semaphore may have. */
23
+ #define ENSEM_JSON_FIELD_MAX_OWNERS "x"
24
+
25
+ /** @brief Number of tokens waiting on the semaphore. */
26
+ #define ENSEM_JSON_FIELD_WAITING_COUNT "w"
27
+
28
+ /** @brief Array of semaphore owners. */
29
+ #define ENSEM_JSON_FIELD_OWNERS "o"
30
+
31
+ /** @brief The toekn identifier. Case insensitive. */
32
+ #define ENSEM_JSON_FIELD_TOKEN_ID "t"
33
+
34
+ /** @brief Local timestamp (milliseconds) until ownership expires. */
35
+ #define ENSEM_JSON_FIELD_OWNER_UNTIL "u"
36
+
37
+ /** @brief Local 64-bit timestamp - typically number of milliseconds since Jan 1, 1970 */
38
+ #define ENSEM_JSON_FIELD_LOCAL_TIMESTAMP "ts"
39
+
40
+ /** @brief Local 64-bit timestamp when the token request will expire. */
41
+ #define ENSEM_JSON_FIELD_LOCAL_EXPIRATION_TIMESTAMP "es"
42
+
43
+ /** @brief Milliseconds of semaphore ownership. */
44
+ #define ENSEM_JSON_FIELD_DURATION_MS "r"
45
+
46
+ /** @brief Request priority 0 - 255 */
47
+ #define ENSEM_JSON_FIELD_PRIORITY "p"
48
+
49
+ /** @brief The intended use of the semaphore. */
50
+ #define ENSEM_JSON_FIELD_SEM_USE "us"
51
+
52
+ /** @brief The RTP SSRC associated with the stream the semaphore represents. */
53
+ #define ENSEM_JSON_FIELD_SSRC "s"
54
+
55
+ /** @brief The alias of the transmitter of the stream the semaphore represents. */
56
+ #define ENSEM_JSON_FIELD_ALIAS "a"
57
+
58
+ /** @brief The display name for the transmitter of the stream the semaphore represents. */
59
+ #define ENSEM_JSON_FIELD_DISPLAY_NAME "d"
60
+
61
+ /** @brief The node ID for the transmitter of the stream the semaphore represents. */
62
+ #define ENSEM_JSON_FIELD_NODE_ID "n"
63
+
64
+ #endif // EngageSemNames_h
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "engage-engine",
3
- "version": "1.242.90820008",
3
+ "version": "1.244.90840009",
4
4
  "description": "Use Engage to communicate with everyone, everywhere, from any device",
5
5
  "scripts": {
6
6
  "test": "echo \"Error: no test specified\" && exit 1"
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file