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(
161 const AWSIoTMetrics *userMetrics,
162 AWSIoTMetrics &outMetrics);
173 static Crt::String getEncodedFeatureListForMqtt5(
const Mqtt5::Mqtt5ClientOptions &options);
182 static Crt::String getEncodedFeatureListForMqtt311(
const MqttConnectionCore &connectionCore);
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();
std::basic_string< char, std::char_traits< char >, StlAllocator< char >> String
Definition: Types.h:45
OutboundTopicAliasBehaviorType
Definition: Mqtt5Client.h:47
aws_mqtt5_client_operation_queue_behavior_type ClientOperationQueueBehaviorType
Definition: Mqtt5Types.h:223
aws_mqtt5_client_session_behavior_type ClientSessionBehaviorType
Definition: Mqtt5Types.h:186
aws_exponential_backoff_jitter_mode ExponentialBackoffJitterMode
Definition: Mqtt5Types.h:242
InboundTopicAliasBehaviorType
Definition: Mqtt5Client.h:85
Definition: Allocator.h:10