17#include <aws/io/tls_channel_handler.h>
29 class MqttConnectionCore;
36 namespace MetricsFeatureId
38 constexpr char RetryJitterMode =
'A';
39 constexpr char SessionBehavior =
'B';
40 constexpr char OfflineQueueBehavior =
'C';
41 constexpr char OutboundTopicAliasBehavior =
'D';
42 constexpr char InboundTopicAliasBehavior =
'E';
43 constexpr char ProtocolVersion =
'F';
44 constexpr char SocketImplementation =
'G';
45 constexpr char HttpProxyType =
'H';
46 constexpr char CertificateSource =
'I';
47 constexpr char TlsCipherPreference =
'J';
48 constexpr char MinimumTlsVersion =
'K';
54 constexpr int IoTSDKMetricsFeatureVersion = 1;
57 namespace MetricsProtocolVersionValue
59 constexpr char Mqtt311 =
'3';
60 constexpr char Mqtt5 =
'5';
64 namespace MetricsSocketImplementationValue
66 constexpr char Posix =
'A';
67 constexpr char Winsock =
'B';
68 constexpr char AppleNetworkFramework =
'C';
72 namespace MetricsHttpProxyTypeValue
74 constexpr char Http =
'A';
75 constexpr char Https =
'B';
79 namespace MetricsCertificateSourceValue
81 constexpr char CertificateFiles =
'A';
82 constexpr char Pkcs11 =
'B';
83 constexpr char WindowsCertStore =
'C';
85 constexpr char Pkcs12File =
'E';
90 namespace MetricsTlsCipherPreferenceValue
92 constexpr char KmsPqTlsv10_2019_06 =
'A';
93 constexpr char KmsPqSikeTlsv10_2019_11 =
'B';
94 constexpr char KmsPqTlsv10_2020_02 =
'C';
95 constexpr char KmsPqSikeTlsv10_2020_02 =
'D';
96 constexpr char KmsPqTlsv10_2020_07 =
'E';
97 constexpr char PqTlsv10_2021_05 =
'F';
98 constexpr char PqTlsv12_2024_10 =
'G';
99 constexpr char PqDefault =
'H';
100 constexpr char Tlsv12_2025_07 =
'I';
101 constexpr char Tlsv10_2023_06 =
'J';
102 constexpr char NonPqDefault =
'K';
106 namespace MetricsMinimumTlsVersionValue
108 constexpr char SSLv3 =
'A';
109 constexpr char TLSv1 =
'B';
110 constexpr char TLSv1_1 =
'C';
111 constexpr char TLSv1_2 =
'D';
112 constexpr char TLSv1_3 =
'E';
118 class IoTSDKMetricsEncoder
122 static constexpr const char *DEFAULT_METRICS_LIBRARY_NAME =
"IoTDeviceSDK/CPP";
131 static AWSIoTMetrics createMetricsForMqtt5(
const Mqtt5::Mqtt5ClientOptions &options);
139 static AWSIoTMetrics createMetricsForMqtt311(
const MqttConnectionCore &connectionCore);
144 static void appendFeature(Crt::String &featureList,
char featureId,
char value);
159 static void createMetricsFromFeatureList(
160 const Crt::String &crtFeatureList,
161 const AWSIoTMetrics *userMetrics,
162 AWSIoTMetrics &outMetrics);
173 static Crt::String getEncodedFeatureListForMqtt5(
const Mqtt5::Mqtt5ClientOptions &options);
182 static Crt::String getEncodedFeatureListForMqtt311(
const MqttConnectionCore &connectionCore);
193 static Crt::String mergeFeatureLists(
const Crt::String &crtFeatures,
const Crt::String &userFeatures);
199 static char metricsValueForRetryJitterMode(Mqtt5::ExponentialBackoffJitterMode mode);
202 static char metricsValueForSessionBehavior(Mqtt5::ClientSessionBehaviorType behavior);
205 static char metricsValueForOfflineQueueBehavior(Mqtt5::ClientOperationQueueBehaviorType behavior);
208 static char metricsValueForOutboundTopicAliasBehavior(Mqtt5::OutboundTopicAliasBehaviorType behavior);
211 static char metricsValueForInboundTopicAliasBehavior(Mqtt5::InboundTopicAliasBehaviorType behavior);
215 static char metricsValueForCertificateSource(Io::CertificateSource source);
219 static char metricsValueForTlsCipherPreference(aws_tls_cipher_pref pref);
223 static char metricsValueForMinimumTlsVersion(aws_tls_versions version);
227 static char detectSocketImplementation();
Definition Allocator.h:11