3
3
* SPDX-License-Identifier: Apache-2.0.
4
4
*/
5
5
6
- #include < aws/core/utils/HashingUtils .h>
6
+ #include < aws/core/utils/memory/stl/AWSArray .h>
7
7
#include < aws/core/monitoring/HttpClientMetrics.h>
8
8
9
9
namespace Aws
@@ -18,64 +18,45 @@ namespace Aws
18
18
static const char HTTP_CLIENT_METRICS_DNS_LATENCY[] = " DnsLatency" ;
19
19
static const char HTTP_CLIENT_METRICS_TCP_LATENCY[] = " TcpLatency" ;
20
20
static const char HTTP_CLIENT_METRICS_SSL_LATENCY[] = " SslLatency" ;
21
- static const char HTTP_CLIENT_METRICS_THROUGHPUT[] = " Throughput" ;
22
21
static const char HTTP_CLIENT_METRICS_DOWNLOAD_SPEED[] = " DownloadSpeed" ;
22
+ static const char HTTP_CLIENT_METRICS_THROUGHPUT[] = " Throughput" ;
23
23
static const char HTTP_CLIENT_METRICS_UPLOAD_SPEED[] = " UploadSpeed" ;
24
24
static const char HTTP_CLIENT_METRICS_UNKNOWN[] = " Unknown" ;
25
25
26
- using namespace Aws ::Utils;
27
- HttpClientMetricsType GetHttpClientMetricTypeByName (const Aws::String& name)
26
+ static const Aws::Array<std::pair<HttpClientMetricsType, const char *>, 12 > httpClientMetricsNames =
28
27
{
29
- // TODO: Make static map, Aws::Map cannot be made static with a customer memory manager as of the moment.
30
- Aws::Map<int , HttpClientMetricsType> metricsNameHashToType =
31
- {
32
- std::pair<int , HttpClientMetricsType>(HashingUtils::HashString (HTTP_CLIENT_METRICS_DESTINATION_IP), HttpClientMetricsType::DestinationIp),
33
- std::pair<int , HttpClientMetricsType>(HashingUtils::HashString (HTTP_CLIENT_METRICS_ACQUIRE_CONNECTION_LATENCY), HttpClientMetricsType::AcquireConnectionLatency),
34
- std::pair<int , HttpClientMetricsType>(HashingUtils::HashString (HTTP_CLIENT_METRICS_CONNECTION_REUSED), HttpClientMetricsType::ConnectionReused),
35
- std::pair<int , HttpClientMetricsType>(HashingUtils::HashString (HTTP_CLIENT_METRICS_CONNECTION_LATENCY), HttpClientMetricsType::ConnectLatency),
36
- std::pair<int , HttpClientMetricsType>(HashingUtils::HashString (HTTP_CLIENT_METRICS_REQUEST_LATENCY), HttpClientMetricsType::RequestLatency),
37
- std::pair<int , HttpClientMetricsType>(HashingUtils::HashString (HTTP_CLIENT_METRICS_DNS_LATENCY), HttpClientMetricsType::DnsLatency),
38
- std::pair<int , HttpClientMetricsType>(HashingUtils::HashString (HTTP_CLIENT_METRICS_TCP_LATENCY), HttpClientMetricsType::TcpLatency),
39
- std::pair<int , HttpClientMetricsType>(HashingUtils::HashString (HTTP_CLIENT_METRICS_SSL_LATENCY), HttpClientMetricsType::SslLatency),
40
- std::pair<int , HttpClientMetricsType>(HashingUtils::HashString (HTTP_CLIENT_METRICS_THROUGHPUT), HttpClientMetricsType::Throughput),
41
- std::pair<int , HttpClientMetricsType>(HashingUtils::HashString (HTTP_CLIENT_METRICS_DOWNLOAD_SPEED), HttpClientMetricsType::DownloadSpeed),
42
- std::pair<int , HttpClientMetricsType>(HashingUtils::HashString (HTTP_CLIENT_METRICS_UPLOAD_SPEED), HttpClientMetricsType::UploadSpeed),
43
- };
28
+ std::pair<HttpClientMetricsType, const char *>(HttpClientMetricsType::DestinationIp, HTTP_CLIENT_METRICS_DESTINATION_IP),
29
+ std::pair<HttpClientMetricsType, const char *>(HttpClientMetricsType::AcquireConnectionLatency, HTTP_CLIENT_METRICS_ACQUIRE_CONNECTION_LATENCY),
30
+ std::pair<HttpClientMetricsType, const char *>(HttpClientMetricsType::ConnectionReused, HTTP_CLIENT_METRICS_CONNECTION_REUSED),
31
+ std::pair<HttpClientMetricsType, const char *>(HttpClientMetricsType::ConnectLatency, HTTP_CLIENT_METRICS_CONNECTION_LATENCY),
32
+ std::pair<HttpClientMetricsType, const char *>(HttpClientMetricsType::RequestLatency, HTTP_CLIENT_METRICS_REQUEST_LATENCY),
33
+ std::pair<HttpClientMetricsType, const char *>(HttpClientMetricsType::DnsLatency, HTTP_CLIENT_METRICS_DNS_LATENCY),
34
+ std::pair<HttpClientMetricsType, const char *>(HttpClientMetricsType::TcpLatency, HTTP_CLIENT_METRICS_TCP_LATENCY),
35
+ std::pair<HttpClientMetricsType, const char *>(HttpClientMetricsType::SslLatency, HTTP_CLIENT_METRICS_SSL_LATENCY),
36
+ std::pair<HttpClientMetricsType, const char *>(HttpClientMetricsType::DownloadSpeed, HTTP_CLIENT_METRICS_DOWNLOAD_SPEED),
37
+ std::pair<HttpClientMetricsType, const char *>(HttpClientMetricsType::Throughput, HTTP_CLIENT_METRICS_THROUGHPUT),
38
+ std::pair<HttpClientMetricsType, const char *>(HttpClientMetricsType::UploadSpeed, HTTP_CLIENT_METRICS_UPLOAD_SPEED),
39
+ std::pair<HttpClientMetricsType, const char *>(HttpClientMetricsType::Unknown, HTTP_CLIENT_METRICS_UNKNOWN),
40
+ };
44
41
45
- int nameHash = HashingUtils::HashString (name.c_str ());
46
- auto it = metricsNameHashToType.find (nameHash);
47
- if (it == metricsNameHashToType.end ())
48
- {
49
- return HttpClientMetricsType::Unknown;
50
- }
51
- return it->second ;
42
+ HttpClientMetricsType GetHttpClientMetricTypeByName (const Aws::String& name)
43
+ {
44
+ auto it = std::find_if (httpClientMetricsNames.begin (), httpClientMetricsNames.end (), [&](const std::pair<HttpClientMetricsType, const char *>& pair) { return name == pair.second ; });
45
+ if (it == httpClientMetricsNames.end ())
46
+ {
47
+ return HttpClientMetricsType::Unknown;
48
+ }
49
+ return it->first ;
52
50
}
53
51
54
52
Aws::String GetHttpClientMetricNameByType (HttpClientMetricsType type)
55
53
{
56
- // TODO: Make static map, Aws::Map cannot be made static with a customer memory manager as of the moment.
57
- Aws::Map<int , Aws::String> metricsTypeToName =
58
- {
59
- std::pair<int , Aws::String>(static_cast <int >(HttpClientMetricsType::DestinationIp), HTTP_CLIENT_METRICS_DESTINATION_IP),
60
- std::pair<int , Aws::String>(static_cast <int >(HttpClientMetricsType::AcquireConnectionLatency), HTTP_CLIENT_METRICS_ACQUIRE_CONNECTION_LATENCY),
61
- std::pair<int , Aws::String>(static_cast <int >(HttpClientMetricsType::ConnectionReused), HTTP_CLIENT_METRICS_CONNECTION_REUSED),
62
- std::pair<int , Aws::String>(static_cast <int >(HttpClientMetricsType::ConnectLatency), HTTP_CLIENT_METRICS_CONNECTION_LATENCY),
63
- std::pair<int , Aws::String>(static_cast <int >(HttpClientMetricsType::RequestLatency), HTTP_CLIENT_METRICS_REQUEST_LATENCY),
64
- std::pair<int , Aws::String>(static_cast <int >(HttpClientMetricsType::DnsLatency), HTTP_CLIENT_METRICS_DNS_LATENCY),
65
- std::pair<int , Aws::String>(static_cast <int >(HttpClientMetricsType::TcpLatency), HTTP_CLIENT_METRICS_TCP_LATENCY),
66
- std::pair<int , Aws::String>(static_cast <int >(HttpClientMetricsType::SslLatency), HTTP_CLIENT_METRICS_SSL_LATENCY),
67
- std::pair<int , Aws::String>(static_cast <int >(HttpClientMetricsType::Throughput), HTTP_CLIENT_METRICS_THROUGHPUT),
68
- std::pair<int , Aws::String>(static_cast <int >(HttpClientMetricsType::DownloadSpeed), HTTP_CLIENT_METRICS_DOWNLOAD_SPEED),
69
- std::pair<int , Aws::String>(static_cast <int >(HttpClientMetricsType::UploadSpeed), HTTP_CLIENT_METRICS_UPLOAD_SPEED),
70
- std::pair<int , Aws::String>(static_cast <int >(HttpClientMetricsType::Unknown), HTTP_CLIENT_METRICS_UNKNOWN),
71
- };
72
-
73
- auto it = metricsTypeToName.find (static_cast <int >(type));
74
- if (it == metricsTypeToName.end ())
75
- {
54
+ assert (static_cast <unsigned >(type) < httpClientMetricsNames.size ());
55
+ if (static_cast <unsigned >(type) >= httpClientMetricsNames.size ())
76
56
return HTTP_CLIENT_METRICS_UNKNOWN;
77
- }
78
- return Aws::String (it->second .c_str ());
57
+
58
+ assert (httpClientMetricsNames[static_cast <int >(type)].first == type);
59
+ return Aws::String (httpClientMetricsNames[static_cast <int >(type)].second );
79
60
}
80
61
81
62
}
0 commit comments