Skip to content

Commit 6268765

Browse files
committed
Merge branch 'metrics_mqtt3' of github.com:awslabs/aws-c-mqtt into metrics_mqtt5
2 parents 3340130 + 917f5c8 commit 6268765

12 files changed

Lines changed: 478 additions & 159 deletions

include/aws/mqtt/client.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -706,7 +706,7 @@ int aws_mqtt_client_connection_get_stats(
706706
AWS_MQTT_API
707707
int aws_mqtt_client_connection_set_metrics(
708708
struct aws_mqtt_client_connection *connection,
709-
const struct aws_mqtt_iot_sdk_metrics *metrics);
709+
const struct aws_mqtt_iot_metrics *metrics);
710710

711711
AWS_EXTERN_C_END
712712
AWS_POP_SANE_WARNING_LEVEL

include/aws/mqtt/mqtt.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ struct aws_mqtt_metadata_entry {
122122
/**
123123
* IoT SDK metrics configuration structure
124124
*/
125-
struct aws_mqtt_iot_sdk_metrics {
125+
struct aws_mqtt_iot_metrics {
126126
/**
127127
* Library name string (SDK attribute)
128128
*/

include/aws/mqtt/private/client_impl.h

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
#include <aws/common/hash_table.h>
1818
#include <aws/common/mutex.h>
19+
#include <aws/common/rw_lock.h>
1920
#include <aws/common/task_scheduler.h>
2021

2122
#include <aws/io/channel.h>
@@ -28,15 +29,19 @@ struct aws_mqtt_client_connection_311_impl;
2829

2930
#define MQTT_CLIENT_CALL_CALLBACK(client_ptr, callback) \
3031
do { \
32+
aws_rw_lock_rlock(&(client_ptr)->callback_lock); \
3133
if ((client_ptr)->callback) { \
3234
(client_ptr)->callback((&client_ptr->base), (client_ptr)->callback##_ud); \
3335
} \
36+
aws_rw_lock_runlock(&(client_ptr)->callback_lock); \
3437
} while (false)
3538
#define MQTT_CLIENT_CALL_CALLBACK_ARGS(client_ptr, callback, ...) \
3639
do { \
40+
aws_rw_lock_rlock(&(client_ptr)->callback_lock); \
3741
if ((client_ptr)->callback) { \
3842
(client_ptr)->callback((&client_ptr->base), __VA_ARGS__, (client_ptr)->callback##_ud); \
3943
} \
44+
aws_rw_lock_runlock(&(client_ptr)->callback_lock); \
4045
} while (false)
4146

4247
#if ASSERT_LOCK_HELD
@@ -278,6 +283,9 @@ struct aws_mqtt_client_connection_311_impl {
278283
aws_mqtt_on_operation_statistics_fn *on_any_operation_statistics;
279284
void *on_any_operation_statistics_ud;
280285

286+
/* Read-write lock to protect callbacks from being modified during callback execution */
287+
struct aws_rw_lock callback_lock;
288+
281289
/* listener callbacks */
282290
struct aws_mqtt311_callback_set_manager callback_manager;
283291

@@ -369,7 +377,7 @@ struct aws_mqtt_client_connection_311_impl {
369377
/**
370378
* IoT SDK metrics configuration
371379
*/
372-
struct aws_mqtt_iot_sdk_metrics_storage *metrics_storage;
380+
struct aws_mqtt_iot_metrics_storage *metrics_storage;
373381
};
374382

375383
struct aws_channel_handler_vtable *aws_mqtt_get_client_channel_vtable(void);

include/aws/mqtt/private/client_impl_shared.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ struct aws_mqtt_client_connection_vtable {
122122

123123
int (*get_stats_fn)(void *impl, struct aws_mqtt_connection_operation_statistics *stats);
124124

125-
int (*set_metrics_fn)(void *impl, const struct aws_mqtt_iot_sdk_metrics *metrics);
125+
int (*set_metrics_fn)(void *impl, const struct aws_mqtt_iot_metrics *metrics);
126126

127127
enum aws_mqtt311_impl_type (*get_impl_type)(const void *impl);
128128

include/aws/mqtt/private/mqtt_iot_sdk_metrics.h renamed to include/aws/mqtt/private/mqtt_iot_metrics.h

Lines changed: 12 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -3,29 +3,27 @@
33
* SPDX-License-Identifier: Apache-2.0.
44
*/
55

6-
#ifndef AWS_MQTT_IOT_SDK_METRICS_H
7-
#define AWS_MQTT_IOT_SDK_METRICS_H
6+
#ifndef AWS_MQTT_IOT_METRICS_H
7+
#define AWS_MQTT_IOT_METRICS_H
88

99
#include <aws/mqtt/mqtt.h>
1010

11-
/* Storage for `aws_mqtt_iot_sdk_metrics`. */
12-
struct aws_mqtt_iot_sdk_metrics_storage {
11+
/* Storage for `aws_mqtt_iot_metrics`. */
12+
struct aws_mqtt_iot_metrics_storage {
1313
struct aws_allocator *allocator;
1414

15-
struct aws_mqtt_iot_sdk_metrics storage_view;
16-
17-
struct aws_array_list metadata_entries;
15+
struct aws_mqtt_iot_metrics storage_view;
1816

1917
struct aws_byte_cursor library_name;
2018

2119
struct aws_byte_buf storage;
2220
};
2321

24-
AWS_MQTT_API struct aws_mqtt_iot_sdk_metrics_storage *aws_mqtt_iot_sdk_metrics_storage_new(
22+
AWS_MQTT_API struct aws_mqtt_iot_metrics_storage *aws_mqtt_iot_metrics_storage_new(
2523
struct aws_allocator *allocator,
26-
const struct aws_mqtt_iot_sdk_metrics *metrics_options);
24+
const struct aws_mqtt_iot_metrics *metrics_options);
2725

28-
AWS_MQTT_API void aws_mqtt_iot_sdk_metrics_storage_destroy(struct aws_mqtt_iot_sdk_metrics_storage *metrics_storage);
26+
AWS_MQTT_API void aws_mqtt_iot_metrics_storage_destroy(struct aws_mqtt_iot_metrics_storage *metrics_storage);
2927

3028
/**
3129
* Builds a new username by appending SDK metrics to the original username.
@@ -43,17 +41,17 @@ AWS_MQTT_API
4341
int aws_mqtt_append_sdk_metrics_to_username(
4442
struct aws_allocator *allocator,
4543
const struct aws_byte_cursor *original_username,
46-
const struct aws_mqtt_iot_sdk_metrics *metrics,
44+
const struct aws_mqtt_iot_metrics *metrics,
4745
struct aws_byte_buf *output_username,
4846
size_t *out_full_username_size);
4947

5048
/**
51-
* Validates all string fields in aws_mqtt_iot_sdk_metrics
49+
* Validates all string fields in aws_mqtt_iot_metrics
5250
*
5351
* @param metrics The metrics structure to validate
5452
* @return AWS_OP_SUCCESS if metrics is not null and all metrics value are valid, AWS_OP_ERR otherwise
5553
*/
5654
AWS_MQTT_API
57-
int aws_mqtt_validate_iot_sdk_metrics(const struct aws_mqtt_iot_sdk_metrics *metrics);
55+
int aws_mqtt_validate_iot_metrics(const struct aws_mqtt_iot_metrics *metrics);
5856

59-
#endif /* AWS_MQTT_IOT_SDK_METRICS_H */
57+
#endif /* AWS_MQTT_IOT_METRICS_H */

0 commit comments

Comments
 (0)