Skip to content

Commit c47e142

Browse files
committed
Merge branch 'metrics_mqtt3' of github.com:awslabs/aws-c-mqtt into metrics_mqtt5
2 parents 9aa40cb + d3f2579 commit c47e142

5 files changed

Lines changed: 29 additions & 32 deletions

File tree

include/aws/mqtt/private/client_impl_shared.h

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -147,14 +147,13 @@ struct aws_mqtt_iot_sdk_metrics_storage {
147147
};
148148

149149
/* IoT SDK Metrics */
150-
AWS_MQTT_API int aws_mqtt_iot_sdk_metrics_storage_init(
151-
struct aws_mqtt_iot_sdk_metrics_storage *metrics_storage,
150+
AWS_MQTT_API struct aws_mqtt_iot_sdk_metrics_storage *aws_mqtt_iot_sdk_metrics_storage_new(
152151
struct aws_allocator *allocator,
153152
const struct aws_mqtt_iot_sdk_metrics *metrics_options);
154153

155154
AWS_MQTT_API size_t aws_mqtt_iot_sdk_metrics_compute_storage_size(const struct aws_mqtt_iot_sdk_metrics *metrics);
156155

157-
AWS_MQTT_API void aws_mqtt_iot_sdk_metrics_storage_clean_up(struct aws_mqtt_iot_sdk_metrics_storage *metrics_storage);
156+
AWS_MQTT_API void aws_mqtt_iot_sdk_metrics_storage_destroy(struct aws_mqtt_iot_sdk_metrics_storage *metrics_storage);
158157

159158
AWS_MQTT_API enum aws_mqtt311_impl_type aws_mqtt_client_connection_get_impl_type(
160159
const struct aws_mqtt_client_connection *connection);

source/client.c

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
#include <aws/mqtt/client.h>
66

77
#include <aws/mqtt/private/client_impl.h>
8+
#include <aws/mqtt/private/client_impl_shared.h>
89
#include <aws/mqtt/private/mqtt_client_test_helper.h>
910
#include <aws/mqtt/private/packets.h>
1011
#include <aws/mqtt/private/shared.h>
@@ -871,7 +872,7 @@ static void s_mqtt_client_connection_destroy_final(struct aws_mqtt_client_connec
871872

872873
/* Clean up metrics */
873874
if (connection->metrics) {
874-
aws_mqtt_iot_sdk_metrics_storage_clean_up(connection->metrics);
875+
aws_mqtt_iot_sdk_metrics_storage_destroy(connection->metrics);
875876
connection->metrics = NULL;
876877
}
877878

@@ -3395,20 +3396,13 @@ static int s_aws_mqtt_client_connection_311_set_metrics(void *impl, const struct
33953396

33963397
/* Clean up existing metrics if any */
33973398
if (connection->metrics) {
3398-
aws_mqtt_iot_sdk_metrics_storage_clean_up(connection->metrics);
3399+
aws_mqtt_iot_sdk_metrics_storage_destroy(connection->metrics);
33993400
connection->metrics = NULL;
34003401
}
34013402

34023403
if (metrics) {
3403-
/* Allocate metrics storage */
3404-
connection->metrics = aws_mem_calloc(connection->allocator, 1, sizeof(struct aws_mqtt_iot_sdk_metrics_storage));
3405-
34063404
/* Initialize metrics storage */
3407-
if (aws_mqtt_iot_sdk_metrics_storage_init(connection->metrics, connection->allocator, metrics)) {
3408-
aws_mem_release(connection->allocator, connection->metrics);
3409-
connection->metrics = NULL;
3410-
return AWS_OP_ERR;
3411-
}
3405+
connection->metrics = aws_mqtt_iot_sdk_metrics_storage_new(connection->allocator, metrics);
34123406
}
34133407

34143408
return AWS_OP_SUCCESS;

source/client_impl_shared.c

Lines changed: 19 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -250,22 +250,21 @@ size_t aws_mqtt_iot_sdk_metrics_compute_storage_size(const struct aws_mqtt_iot_s
250250
return storage_size;
251251
}
252252

253-
int aws_mqtt_iot_sdk_metrics_storage_init(
254-
struct aws_mqtt_iot_sdk_metrics_storage *metrics_storage,
253+
struct aws_mqtt_iot_sdk_metrics_storage *aws_mqtt_iot_sdk_metrics_storage_new(
255254
struct aws_allocator *allocator,
256255
const struct aws_mqtt_iot_sdk_metrics *metrics_options) {
257256

258-
if (metrics_storage == NULL || allocator == NULL) {
259-
return aws_raise_error(AWS_ERROR_INVALID_ARGUMENT);
257+
if (allocator == NULL || metrics_options == NULL) {
258+
aws_raise_error(AWS_ERROR_INVALID_ARGUMENT);
259+
return NULL;
260260
}
261261

262-
if (metrics_options == NULL) {
263-
return AWS_OP_SUCCESS;
264-
}
262+
struct aws_mqtt_iot_sdk_metrics_storage *metrics_storage =
263+
aws_mem_calloc(allocator, 1, sizeof(struct aws_mqtt_iot_sdk_metrics_storage));
265264

266265
size_t storage_capacity = aws_mqtt_iot_sdk_metrics_compute_storage_size(metrics_options);
267266
if (aws_byte_buf_init(&metrics_storage->storage, allocator, storage_capacity)) {
268-
return AWS_OP_ERR;
267+
goto cleanup_storage;
269268
}
270269

271270
metrics_storage->allocator = allocator;
@@ -304,25 +303,30 @@ int aws_mqtt_iot_sdk_metrics_storage_init(
304303
if (metrics_options->library_name.len > 0) {
305304
metrics_storage->library_name = metrics_options->library_name;
306305
if (aws_byte_buf_append_and_update(&metrics_storage->storage, &metrics_storage->library_name)) {
307-
goto metrics_storage_error;
306+
goto cleanup_storage;
308307
}
309308
storage_view->library_name = metrics_storage->library_name;
310309
}
311310

312-
return AWS_OP_SUCCESS;
311+
return metrics_storage;
313312

314-
metrics_storage_error:
313+
cleanup_storage:
315314
// TODO Future Work: add metadata entries once we implemented the metadata feature
316315
// if (aws_array_list_is_valid(&metrics_storage->metadata_entries)) {
317316
// aws_array_list_clean_up(&metrics_storage->metadata_entries);
318317
// }
319-
320-
aws_byte_buf_clean_up(&metrics_storage->storage);
321318

322-
return AWS_OP_ERR;
319+
if (aws_byte_buf_is_valid(&metrics_storage->storage)) {
320+
aws_byte_buf_clean_up(&metrics_storage->storage);
321+
}
322+
if (metrics_options != NULL) {
323+
aws_mem_release(allocator, metrics_storage);
324+
}
325+
326+
return NULL;
323327
}
324328

325-
void aws_mqtt_iot_sdk_metrics_storage_clean_up(struct aws_mqtt_iot_sdk_metrics_storage *metrics_storage) {
329+
void aws_mqtt_iot_sdk_metrics_storage_destroy(struct aws_mqtt_iot_sdk_metrics_storage *metrics_storage) {
326330
if (metrics_storage == NULL) {
327331
return;
328332
}

source/mqtt_iot_sdk_metrics.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
#include <stdio.h>
1313

1414
// MQTT payload size https://docs.aws.amazon.com/general/latest/gr/iot-core.html#thing-limits
15-
const int AWS_IOT_MAX_USERNAME_SIZE = 128 * 1024;
15+
const size_t AWS_IOT_MAX_USERNAME_SIZE = 128 * 1024;
1616
const size_t DEFAULT_QUERY_PARAM_COUNT = 10;
1717

1818
// Build username query string from params_list, the caller is responsible to init and clean up output_username
@@ -160,8 +160,8 @@ int aws_mqtt_append_sdk_metrics_to_username(
160160
}
161161

162162
// build final output username
163-
if(s_build_username_query(
164-
original_username, base_username_length, &params_list, output_username, out_full_username_size)){
163+
if (s_build_username_query(
164+
original_username, base_username_length, &params_list, output_username, out_full_username_size)) {
165165
goto cleanup;
166166
}
167167

tests/shared_utils_tests.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -291,7 +291,7 @@ static int s_test_mqtt_append_sdk_metrics_long_strings(struct aws_allocator *all
291291
(void)ctx;
292292

293293
char long_username[1024];
294-
char long_sdk_name[2*1024*128];
294+
char long_sdk_name[2 * 1024 * 128];
295295

296296
memset(long_username, 'A', sizeof(long_username) - 1);
297297
long_username[sizeof(long_username) - 1] = '\0';

0 commit comments

Comments
 (0)