engage-engine 1.251.90910019 → 1.251.90910020

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/engage.cpp CHANGED
@@ -502,6 +502,10 @@ ENGAGE_CB_ID_PARAM(groupHealthReportFailed);
502
502
  ENGAGE_CB_ID_PLUS_ONE_STRING_PARAM(groupStatsReport);
503
503
  ENGAGE_CB_ID_PARAM(groupStatsReportFailed);
504
504
 
505
+ ENGAGE_CB_ID_PARAM(bridgeCreated)
506
+ ENGAGE_CB_ID_PARAM(bridgeCreateFailed)
507
+ ENGAGE_CB_ID_PARAM(bridgeDeleted)
508
+
505
509
  void on_groupRxVolumeChanged(const char *id, int16_t leftLevelPerc, int16_t rightLevelPerc, const char * eventExtraJson)
506
510
  {
507
511
  CrossThreadCallbackWorker *cbw = getCallback("groupRxVolumeChanged");
@@ -661,6 +665,10 @@ NAN_METHOD(initialize)
661
665
  ENGAGE_CB_TABLE_ENTRY(PFN_ENGAGE_GROUP_RX_VOLUME_CHANGED, groupRxVolumeChanged);
662
666
  ENGAGE_CB_TABLE_ENTRY(PFN_ENGAGE_GROUP_RX_DTMF, groupRxDtmf);
663
667
 
668
+ ENGAGE_CB_TABLE_ENTRY(PFN_ENGAGE_BRIDGE_CREATED, bridgeCreated);
669
+ ENGAGE_CB_TABLE_ENTRY(PFN_ENGAGE_BRIDGE_CREATE_FAILED, bridgeCreateFailed);
670
+ ENGAGE_CB_TABLE_ENTRY(PFN_ENGAGE_BRIDGE_DELETED, bridgeDeleted);
671
+
664
672
  engageRegisterEventCallbacks(&g_eventCallbacks);
665
673
 
666
674
  NANRETI(engageInitialize(STRVAL(0), STRVAL(1), STRVAL(2)));
@@ -1214,6 +1222,17 @@ NAN_METHOD(endGroupPcmPowerTracking)
1214
1222
  NANRETI(engageEndGroupPcmPowerTracking(STRVAL(0)));
1215
1223
  }
1216
1224
 
1225
+ //--------------------------------------------------------
1226
+ NAN_METHOD(createBridge)
1227
+ {
1228
+ NANRETI(engageCreateBridge(STRVAL(0)));
1229
+ }
1230
+
1231
+ //--------------------------------------------------------
1232
+ NAN_METHOD(deleteBridge)
1233
+ {
1234
+ NANRETI(engageDeleteBridge(STRVAL(0)));
1235
+ }
1217
1236
 
1218
1237
  //--------------------------------------------------------
1219
1238
  NAN_MODULE_INIT(Init)
@@ -1297,6 +1316,9 @@ NAN_MODULE_INIT(Init)
1297
1316
 
1298
1317
  ENGAGE_BINDING(beginGroupPcmPowerTracking);
1299
1318
  ENGAGE_BINDING(endGroupPcmPowerTracking);
1319
+
1320
+ ENGAGE_BINDING(createBridge);
1321
+ ENGAGE_BINDING(deleteBridge);
1300
1322
  }
1301
1323
 
1302
1324
  NODE_MODULE(engage, Init)
@@ -2800,7 +2800,7 @@ namespace AppConfigurationObjects
2800
2800
  std::vector<std::string> caCertificates;
2801
2801
 
2802
2802
  /**
2803
- * @brief [Optional, Default 5000] Number of milliseconds that a transaction may take before the link is considered broken.
2803
+ * @brief [Optional, Default 10000] Number of milliseconds that a transaction may take before the link is considered broken.
2804
2804
  */
2805
2805
  int transactionTimeoutMs;
2806
2806
 
@@ -2815,6 +2815,14 @@ namespace AppConfigurationObjects
2815
2815
  /** @brief [Optional] Tx options for the TCP link */
2816
2816
  TcpNetworkTxOptions tcpTxOptions;
2817
2817
 
2818
+ /**
2819
+ * @brief [Optional] A user-defined string sent as the Server Name Indication (SNI) field in
2820
+ * the TLS setup. Be aware that this data is sent in the clear in the client hello message.
2821
+ *
2822
+ */
2823
+ std::string sni;
2824
+
2825
+
2818
2826
  Rallypoint()
2819
2827
  {
2820
2828
  clear();
@@ -2831,6 +2839,7 @@ namespace AppConfigurationObjects
2831
2839
  disableMessageSigning = false;
2832
2840
  connectionTimeoutSecs = 0;
2833
2841
  tcpTxOptions.clear();
2842
+ sni.clear();
2834
2843
  }
2835
2844
 
2836
2845
  bool matches(const Rallypoint& other)
@@ -2893,6 +2902,18 @@ namespace AppConfigurationObjects
2893
2902
  {
2894
2903
  return false;
2895
2904
  }
2905
+ if(connectionTimeoutSecs != other.connectionTimeoutSecs)
2906
+ {
2907
+ return false;
2908
+ }
2909
+ if(tcpTxOptions.priority != other.tcpTxOptions.priority)
2910
+ {
2911
+ return false;
2912
+ }
2913
+ if(sni.compare(other.sni) != 0)
2914
+ {
2915
+ return false;
2916
+ }
2896
2917
 
2897
2918
  return true;
2898
2919
  }
@@ -2910,7 +2931,8 @@ namespace AppConfigurationObjects
2910
2931
  TOJSON_IMPL(transactionTimeoutMs),
2911
2932
  TOJSON_IMPL(disableMessageSigning),
2912
2933
  TOJSON_IMPL(connectionTimeoutSecs),
2913
- TOJSON_IMPL(tcpTxOptions)
2934
+ TOJSON_IMPL(tcpTxOptions),
2935
+ TOJSON_IMPL(sni)
2914
2936
  };
2915
2937
  }
2916
2938
 
@@ -2927,6 +2949,7 @@ namespace AppConfigurationObjects
2927
2949
  getOptional<bool>("disableMessageSigning", p.disableMessageSigning, j, false);
2928
2950
  getOptional<int>("connectionTimeoutSecs", p.connectionTimeoutSecs, j, 0);
2929
2951
  getOptional<TcpNetworkTxOptions>("tcpTxOptions", p.tcpTxOptions, j);
2952
+ getOptional<std::string>("sni", p.sni, j);
2930
2953
  }
2931
2954
 
2932
2955
  //-----------------------------------------------------------
@@ -2970,10 +2993,10 @@ namespace AppConfigurationObjects
2970
2993
  /** @brief Seconds between switching to a new target */
2971
2994
  int rolloverSecs;
2972
2995
 
2973
- /** @brief [Optional, Default: 0] Default connection timeout in seconds to any RP in the cluster */
2996
+ /** @brief [Optional, Default: 5] Default connection timeout in seconds to any RP in the cluster */
2974
2997
  int connectionTimeoutSecs;
2975
2998
 
2976
- /** @brief [Optional, Default: 0] Default transaction time in milliseconds to any RP in the cluster */
2999
+ /** @brief [Optional, Default: 10000] Default transaction time in milliseconds to any RP in the cluster */
2977
3000
  int transactionTimeoutMs;
2978
3001
 
2979
3002
  RallypointCluster()
@@ -2986,8 +3009,8 @@ namespace AppConfigurationObjects
2986
3009
  connectionStrategy = csRoundRobin;
2987
3010
  rallypoints.clear();
2988
3011
  rolloverSecs = 10;
2989
- connectionTimeoutSecs = 0;
2990
- transactionTimeoutMs = 0;
3012
+ connectionTimeoutSecs = 5;
3013
+ transactionTimeoutMs = 10000;
2991
3014
  }
2992
3015
  };
2993
3016
 
@@ -3007,8 +3030,8 @@ namespace AppConfigurationObjects
3007
3030
  getOptional<RallypointCluster::ConnectionStrategy_t>("connectionStrategy", p.connectionStrategy, RallypointCluster::ConnectionStrategy_t::csRoundRobin);
3008
3031
  getOptional<std::vector<Rallypoint>>("rallypoints", p.rallypoints, j);
3009
3032
  getOptional<int>("rolloverSecs", p.rolloverSecs, j, 10);
3010
- getOptional<int>("connectionTimeoutSecs", p.connectionTimeoutSecs, j, 0);
3011
- getOptional<int>("transactionTimeoutMs", p.connectionTimeoutSecs, j, 0);
3033
+ getOptional<int>("connectionTimeoutSecs", p.connectionTimeoutSecs, j, 5);
3034
+ getOptional<int>("transactionTimeoutMs", p.transactionTimeoutMs, j, 10000);
3012
3035
  }
3013
3036
 
3014
3037
 
@@ -4022,6 +4045,9 @@ namespace AppConfigurationObjects
4022
4045
  /** @brief [Optional, Default: 5] The minimum interval to send at to prevent network flooding */
4023
4046
  int minIntervalSecs;
4024
4047
 
4048
+ /** @brief [Optional, Default: false] Instructs the Engage Engine reduce the immediacy of presence announcements wherever possible */
4049
+ bool reduceImmediacy;
4050
+
4025
4051
  Presence()
4026
4052
  {
4027
4053
  clear();
@@ -4033,6 +4059,7 @@ namespace AppConfigurationObjects
4033
4059
  intervalSecs = 30;
4034
4060
  listenOnly = false;
4035
4061
  minIntervalSecs = 5;
4062
+ reduceImmediacy = false;
4036
4063
  }
4037
4064
  };
4038
4065
 
@@ -4042,7 +4069,8 @@ namespace AppConfigurationObjects
4042
4069
  TOJSON_IMPL(format),
4043
4070
  TOJSON_IMPL(intervalSecs),
4044
4071
  TOJSON_IMPL(listenOnly),
4045
- TOJSON_IMPL(minIntervalSecs)
4072
+ TOJSON_IMPL(minIntervalSecs),
4073
+ TOJSON_IMPL(reduceImmediacy)
4046
4074
  };
4047
4075
  }
4048
4076
  static void from_json(const nlohmann::json& j, Presence& p)
@@ -4052,6 +4080,7 @@ namespace AppConfigurationObjects
4052
4080
  getOptional<int>("intervalSecs", p.intervalSecs, j, 30);
4053
4081
  getOptional<bool>("listenOnly", p.listenOnly, j, false);
4054
4082
  getOptional<int>("minIntervalSecs", p.minIntervalSecs, j, 5);
4083
+ getOptional<bool>("reduceImmediacy", p.reduceImmediacy, j, false);
4055
4084
  }
4056
4085
 
4057
4086
 
@@ -4706,6 +4735,79 @@ namespace AppConfigurationObjects
4706
4735
  FROMJSON_IMPL_SIMPLE(alias);
4707
4736
  }
4708
4737
 
4738
+ //-----------------------------------------------------------
4739
+ JSON_SERIALIZED_CLASS(GroupBridgeTargetOutputDetail)
4740
+ /**
4741
+ * @brief Options for Source
4742
+ *
4743
+ * Helper C++ class to serialize and de-serialize GroupBridgeTargetOutputDetail JSON
4744
+ *
4745
+ * TODO: Complete this Class
4746
+ *
4747
+ * Example: @include[doc] examples/GroupBridgeTargetOutputDetail.json
4748
+ *
4749
+ * @see Group
4750
+ */
4751
+ class GroupBridgeTargetOutputDetail : public ConfigurationObjectBase
4752
+ {
4753
+ IMPLEMENT_JSON_SERIALIZATION()
4754
+ IMPLEMENT_JSON_DOCUMENTATION(GroupBridgeTargetOutputDetail)
4755
+
4756
+ public:
4757
+ /** @brief Enum describing bridging operation mode types where applicable. */
4758
+ typedef enum
4759
+ {
4760
+ /** @brief Raw mode (default) - packet payloads are not accessed or modified and forwarded as raw packets. The
4761
+ * group must have a type of @ref gtRaw.
4762
+ */
4763
+ bomRaw = 0,
4764
+
4765
+ /** @brief Audio payloads are transformed, headers are preserved, multiple parallel output streams are
4766
+ * possible/expected. The group must be gtAudio (type = 1).*/
4767
+ bomMultistream = 1,
4768
+
4769
+ /** @brief Audio payloads are mixed - output is anonymous (i.e. no metadata) if if the target group(s)
4770
+ * allow header extensions. The group must be gtAudio (type = 1)*/
4771
+ bomMixedStream = 2,
4772
+ } BridgingOpMode_t;
4773
+
4774
+ /** @brief [Optional] The output mode */
4775
+ BridgingOpMode_t mode;
4776
+
4777
+ /** @brief [Optional] Parameters to be applied when output is mixed (bomMixedStream) */
4778
+ AdvancedTxParams mixedStreamTxParams;
4779
+
4780
+ GroupBridgeTargetOutputDetail()
4781
+ {
4782
+ clear();
4783
+ }
4784
+
4785
+ void clear()
4786
+ {
4787
+ mode = BridgingOpMode_t::bomRaw;
4788
+ mixedStreamTxParams.clear();
4789
+ }
4790
+
4791
+ virtual void initForDocumenting()
4792
+ {
4793
+ clear();
4794
+ }
4795
+ };
4796
+
4797
+ static void to_json(nlohmann::json& j, const GroupBridgeTargetOutputDetail& p)
4798
+ {
4799
+ j = nlohmann::json{
4800
+ TOJSON_IMPL(mode),
4801
+ TOJSON_IMPL(mixedStreamTxParams)
4802
+ };
4803
+ }
4804
+ static void from_json(const nlohmann::json& j, GroupBridgeTargetOutputDetail& p)
4805
+ {
4806
+ p.clear();
4807
+ FROMJSON_IMPL_SIMPLE(mode);
4808
+ FROMJSON_IMPL_SIMPLE(mixedStreamTxParams);
4809
+ }
4810
+
4709
4811
  //-----------------------------------------------------------
4710
4812
  JSON_SERIALIZED_CLASS(Group)
4711
4813
  /**
@@ -4740,23 +4842,6 @@ namespace AppConfigurationObjects
4740
4842
  gtRaw = 3
4741
4843
  } Type_t;
4742
4844
 
4743
-
4744
- /** @brief Enum describing bridging operation mode types where applicable. */
4745
- typedef enum
4746
- {
4747
- /** @brief Raw mode (default) - packet payloads are not accessed or modified and forwarded as raw packets */
4748
- bomRaw = 0,
4749
-
4750
- /** @brief Audio payloads are transformed, headers are preserved, multiple parallel output streams are possible/expected */
4751
- bomPayloadTransformation = 1,
4752
-
4753
- /** @brief Audio payloads are mixed - output is anonymous (i.e. no metadata) if if the target group(s) allow header extensions */
4754
- bomAnonymousMixing = 2,
4755
-
4756
- /** @brief The bridge performs language translations between groups */
4757
- bomLanguageTranslation = 3
4758
- } BridgingOpMode_t;
4759
-
4760
4845
  /** @brief Enum describing the alias generation policy. */
4761
4846
  typedef enum
4762
4847
  {
@@ -4770,8 +4855,8 @@ namespace AppConfigurationObjects
4770
4855
  /** @brief Specifies the group type (see @ref Type_t). */
4771
4856
  Type_t type;
4772
4857
 
4773
- /** @brief Specifies the bridging operation mode if applicable (see @ref BridgingOpMode_t). */
4774
- BridgingOpMode_t bom;
4858
+ /** @brief Output details for when the group is a target in a bridge (see @ref GroupBridgeTargetOutputDetail). */
4859
+ GroupBridgeTargetOutputDetail bridgeTargetOutputDetail;
4775
4860
 
4776
4861
  /**
4777
4862
  * @brief Unique identity for the group.
@@ -4937,7 +5022,7 @@ namespace AppConfigurationObjects
4937
5022
  void clear()
4938
5023
  {
4939
5024
  type = gtUnknown;
4940
- bom = bomRaw;
5025
+ bridgeTargetOutputDetail.clear();
4941
5026
  id.clear();
4942
5027
  name.clear();
4943
5028
  spokenName.clear();
@@ -5014,7 +5099,7 @@ namespace AppConfigurationObjects
5014
5099
  {
5015
5100
  j = nlohmann::json{
5016
5101
  TOJSON_IMPL(type),
5017
- TOJSON_IMPL(bom),
5102
+ TOJSON_IMPL(bridgeTargetOutputDetail),
5018
5103
  TOJSON_IMPL(id),
5019
5104
  TOJSON_IMPL(name),
5020
5105
  TOJSON_IMPL(spokenName),
@@ -5106,7 +5191,7 @@ namespace AppConfigurationObjects
5106
5191
  {
5107
5192
  p.clear();
5108
5193
  j.at("type").get_to(p.type);
5109
- getOptional<Group::BridgingOpMode_t>("bom", p.bom, j, Group::BridgingOpMode_t::bomRaw);
5194
+ getOptional<GroupBridgeTargetOutputDetail>("bridgeTargetOutputDetail", p.bridgeTargetOutputDetail, j);
5110
5195
  j.at("id").get_to(p.id);
5111
5196
  getOptional<std::string>("name", p.name, j);
5112
5197
  getOptional<std::string>("spokenName", p.spokenName, j);
@@ -5724,7 +5809,9 @@ namespace AppConfigurationObjects
5724
5809
  /** @brief List of group IDs to be included in the session */
5725
5810
  std::vector<std::string> groups;
5726
5811
 
5727
- /** @brief [Optional, Default: true] Enable the bridge */
5812
+ /** @brief [Optional, Default: true] Enable the bridge
5813
+ * NOTE: this is only used bt EBS and is ignored when calling engageCreateBridge() is called
5814
+ */
5728
5815
  bool enabled;
5729
5816
 
5730
5817
  Bridge()
@@ -8643,6 +8730,54 @@ namespace AppConfigurationObjects
8643
8730
  }
8644
8731
 
8645
8732
 
8733
+
8734
+
8735
+ //-----------------------------------------------------------
8736
+ JSON_SERIALIZED_CLASS(NamedIdentity)
8737
+ /**
8738
+ * @brief Defines settings for a named identity
8739
+ *
8740
+ * Example: @include[doc] examples/NamedIdentity.json
8741
+ *
8742
+ */
8743
+ class NamedIdentity : public ConfigurationObjectBase
8744
+ {
8745
+ IMPLEMENT_JSON_SERIALIZATION()
8746
+ IMPLEMENT_JSON_DOCUMENTATION(NamedIdentity)
8747
+
8748
+ public:
8749
+ /** @brief The identity name */
8750
+ std::string name;
8751
+
8752
+ /** @brief The identity certificate */
8753
+ SecurityCertificate certificate;
8754
+
8755
+ NamedIdentity()
8756
+ {
8757
+ clear();
8758
+ }
8759
+
8760
+ void clear()
8761
+ {
8762
+ name.clear();
8763
+ certificate.clear();
8764
+ }
8765
+ };
8766
+
8767
+ static void to_json(nlohmann::json& j, const NamedIdentity& p)
8768
+ {
8769
+ j = nlohmann::json{
8770
+ TOJSON_IMPL(name),
8771
+ TOJSON_IMPL(certificate)
8772
+ };
8773
+ }
8774
+ static void from_json(const nlohmann::json& j, NamedIdentity& p)
8775
+ {
8776
+ p.clear();
8777
+ getOptional<std::string>("name", p.name, j);
8778
+ getOptional<SecurityCertificate>("certificate", p.certificate, j);
8779
+ }
8780
+
8646
8781
  //-----------------------------------------------------------
8647
8782
  JSON_SERIALIZED_CLASS(RallypointExtendedGroupRestriction)
8648
8783
  /**
@@ -8706,6 +8841,32 @@ namespace AppConfigurationObjects
8706
8841
  IMPLEMENT_JSON_DOCUMENTATION(RallypointServer)
8707
8842
 
8708
8843
  public:
8844
+ typedef enum
8845
+ {
8846
+ sptDefault = 0,
8847
+ sptCertificate = 1,
8848
+ sptCertPublicKey = 2,
8849
+ sptCertSubject = 3,
8850
+ sptCertIssuer = 4,
8851
+ sptCertFingerprint = 5,
8852
+ sptCertSerial = 6,
8853
+ sptSubjectC = 7,
8854
+ sptSubjectST = 8,
8855
+ sptSubjectL = 9,
8856
+ sptSubjectO = 10,
8857
+ sptSubjectOU = 11,
8858
+ sptSubjectCN = 12,
8859
+ sptIssuerC = 13,
8860
+ sptIssuerST = 14,
8861
+ sptIssuerL = 15,
8862
+ sptIssuerO = 16,
8863
+ sptIssuerOU = 17,
8864
+ sptIssuerCN = 18
8865
+ } StreamIdPrivacyType_t;
8866
+
8867
+ /** @brief [Optional, default sptDefault] Modes for stream ID transformation. */
8868
+ StreamIdPrivacyType_t streamIdPrivacyType;
8869
+
8709
8870
  /** @brief [Optional] Settings for the FIPS crypto. */
8710
8871
  FipsCryptoSettings fipsCrypto;
8711
8872
 
@@ -8880,6 +9041,9 @@ namespace AppConfigurationObjects
8880
9041
  /** @brief [Optional] Low-level tuning */
8881
9042
  TuningSettings tuning;
8882
9043
 
9044
+ /** @brief [Optional] List of additional named identities */
9045
+ std::vector<NamedIdentity> additionalIdentities;
9046
+
8883
9047
  RallypointServer()
8884
9048
  {
8885
9049
  clear();
@@ -8945,6 +9109,8 @@ namespace AppConfigurationObjects
8945
9109
  blockedDomains.clear();
8946
9110
  extraDomains.clear();
8947
9111
  tuning.clear();
9112
+ additionalIdentities.clear();
9113
+ streamIdPrivacyType = StreamIdPrivacyType_t::sptDefault;
8948
9114
  }
8949
9115
  };
8950
9116
 
@@ -9008,7 +9174,9 @@ namespace AppConfigurationObjects
9008
9174
  TOJSON_IMPL(allowedDomains),
9009
9175
  TOJSON_IMPL(blockedDomains),
9010
9176
  TOJSON_IMPL(extraDomains),
9011
- TOJSON_IMPL(tuning)
9177
+ TOJSON_IMPL(tuning),
9178
+ TOJSON_IMPL(additionalIdentities),
9179
+ TOJSON_IMPL(streamIdPrivacyType)
9012
9180
  };
9013
9181
  }
9014
9182
  static void from_json(const nlohmann::json& j, RallypointServer& p)
@@ -9072,6 +9240,8 @@ namespace AppConfigurationObjects
9072
9240
  getOptional<std::vector<std::string>>("blockedDomains", p.blockedDomains, j);
9073
9241
  getOptional<std::vector<std::string>>("extraDomains", p.extraDomains, j);
9074
9242
  getOptional<TuningSettings>("tuning", p.tuning, j);
9243
+ getOptional<std::vector<NamedIdentity>>("additionalIdentities", p.additionalIdentities, j);
9244
+ getOptional<RallypointServer::StreamIdPrivacyType_t>("streamIdPrivacyType", p.streamIdPrivacyType, j, RallypointServer::StreamIdPrivacyType_t::sptDefault);
9075
9245
  }
9076
9246
 
9077
9247
  //-----------------------------------------------------------
@@ -9609,6 +9779,9 @@ namespace AppConfigurationObjects
9609
9779
  /** @brief Array of subject elements */
9610
9780
  std::vector<CertificateSubjectElement> subjectElements;
9611
9781
 
9782
+ /** @brief Array of issuer elements */
9783
+ std::vector<CertificateSubjectElement> issuerElements;
9784
+
9612
9785
  /** @brief PEM version of the certificate */
9613
9786
  std::string certificatePem;
9614
9787
 
@@ -9631,6 +9804,7 @@ namespace AppConfigurationObjects
9631
9804
  serial.clear();
9632
9805
  fingerprint.clear();
9633
9806
  subjectElements.clear();
9807
+ issuerElements.clear();
9634
9808
  certificatePem.clear();
9635
9809
  publicKeyPem.clear();
9636
9810
  }
@@ -9648,6 +9822,7 @@ namespace AppConfigurationObjects
9648
9822
  TOJSON_IMPL(serial),
9649
9823
  TOJSON_IMPL(fingerprint),
9650
9824
  TOJSON_IMPL(subjectElements),
9825
+ TOJSON_IMPL(issuerElements),
9651
9826
  TOJSON_IMPL(certificatePem),
9652
9827
  TOJSON_IMPL(publicKeyPem)
9653
9828
  };
@@ -9666,6 +9841,7 @@ namespace AppConfigurationObjects
9666
9841
  getOptional<std::string>("certificatePem", p.certificatePem, j, EMPTY_STRING);
9667
9842
  getOptional<std::string>("publicKeyPem", p.publicKeyPem, j, EMPTY_STRING);
9668
9843
  getOptional<std::vector<CertificateSubjectElement>>("subjectElements", p.subjectElements, j);
9844
+ getOptional<std::vector<CertificateSubjectElement>>("issuerElements", p.issuerElements, j);
9669
9845
  }
9670
9846
 
9671
9847
 
@@ -9975,6 +10151,12 @@ namespace AppConfigurationObjects
9975
10151
 
9976
10152
  /** @brief TX has ended with a failure */
9977
10153
  txsTxEndedWithFailure = -10,
10154
+
10155
+ /** @brief Attempt to transmit on a bridged group that is not bomMultistream */
10156
+ txsBridgedButNotMultistream = -11,
10157
+
10158
+ /** @brief Transmission was automatically ended because the group became bridged on a non-multistream configuration */
10159
+ txsAutoEndedDueToNonMultistreamBridge = -12
9978
10160
  } TxStatus_t;
9979
10161
 
9980
10162
  /** @brief ID of the group */
@@ -11250,26 +11432,33 @@ namespace AppConfigurationObjects
11250
11432
  IMPLEMENT_JSON_DOCUMENTATION(BridgingServerConfiguration)
11251
11433
 
11252
11434
  public:
11253
- /** @brief Enum describing the modes the briging service runs in. */
11435
+ /** @brief Enum describing the default mode the bridging service runs in. Values of omRaw,
11436
+ * omMultistream, omAnonymousMixedStream all cause the service to force the
11437
+ * groups in a bridge to the appropriate type. A value of omADictatedByGroup prevents
11438
+ * the service from forcing the individual groups' "type" and "bom" values and
11439
+ * instead relies on the individual groups to be correctly defined in the configuration.
11440
+ */
11254
11441
  typedef enum
11255
11442
  {
11256
- /** @brief Raw mode (default) - packet payloads are not accessed or modified and forwarded as raw packets */
11443
+ /** @brief Raw mode (default) - packet payloads are not accessed or modified and forwarded as raw packets. */
11257
11444
  omRaw = 0,
11258
11445
 
11259
- /** @brief Audio payloads are transformed, headers are preserved, multiple parallel output streams are possible/expected */
11260
- omPayloadTransformation = 1,
11446
+ /** @brief Audio payloads are transformed, headers are preserved, multiple parallel output streams are
11447
+ * possible/expected. In this mode all groups must be gtAudio (type = 1).*/
11448
+ omMultistream = 1,
11261
11449
 
11262
- /** @brief Audio payloads are mixed - output is anonymous (i.e. no metadata) if if the target group(s) allow header extensions */
11263
- omAnonymousMixing = 2,
11450
+ /** @brief Audio payloads are mixed - output is anonymous (i.e. no metadata) even if the target group(s)
11451
+ * allow header extensions. In this mode all groups must be gtAudio (type = 1). */
11452
+ omMixedStream = 2,
11264
11453
 
11265
- /** @brief Audio payloads are translated between group-specific languages */
11266
- omLanguageTranslation = 3
11454
+ /** @brief Operation is dictated by the individual groups in the bridge */
11455
+ omADictatedByGroup = 3,
11267
11456
  } OpMode_t;
11268
11457
 
11269
11458
  /** @brief A unqiue identifier for the bridge server */
11270
11459
  std::string id;
11271
11460
 
11272
- /** @brief Specifies the operation mode (see @ref OpMode_t). */
11461
+ /** @brief Specifies the default operation mode (see @ref OpMode_t). */
11273
11462
  OpMode_t mode;
11274
11463
 
11275
11464
  /** @brief Number of seconds between checks to see if the service configuration has been updated. Default is 60.*/
@@ -27,7 +27,7 @@ static const size_t ENGAGE_MAX_CRYPTO_PASSWORD_BYTES = 256;
27
27
 
28
28
  static const int ENGAGE_INVALID_IP_ADDRESS_FAMILY = -1;
29
29
 
30
- static const size_t ENGAGE_MAX_RTP_OUTPUT_QUEUE_PACKETS = 100;
30
+ static const size_t ENGAGE_MAX_OUTPUT_QUEUED_UDP_PACKETS = 1024;
31
31
 
32
32
  static const size_t ENGAGE_MAX_IP_ADDR_SIZE = sizeof(struct sockaddr_in6);
33
33
  static const size_t ENGAGE_MAX_ALIAS_SIZE = 16;
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "engage-engine",
3
- "version": "1.251.90910019",
3
+ "version": "1.251.90910020",
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"