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.
- package/include/ConfigurationObjects.h +364 -10
- package/include/EngageConstants.h +12 -0
- package/include/EngageSemNames.h +64 -0
- package/package.json +1 -1
- package/lib/darwin.x64/libengage-shared.dylib +0 -0
- package/lib/darwin.x64/rts-fips.dylib +0 -0
- package/lib/linux.x64/libengage-shared.so +0 -0
- package/lib/linux.x64/rts-fips.so +0 -0
- package/lib/win32.ia32/engage-shared.dll +0 -0
- package/lib/win32.ia32/engage-shared.lib +0 -0
- package/lib/win32.ia32/rts-fips.dll +0 -0
- package/lib/win32.x64/engage-shared.dll +0 -0
- package/lib/win32.x64/engage-shared.lib +0 -0
- package/lib/win32.x64/rts-fips.dll +0 -0
|
@@ -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:
|
|
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 =
|
|
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,
|
|
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
|
|
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
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|