From 77d6f00e89b10e3263d8a17576ec8e91c45b4606 Mon Sep 17 00:00:00 2001 From: Bret Ambrose Date: Thu, 19 Sep 2024 13:54:19 -0700 Subject: [PATCH 1/2] Misc request-response fixes (#375) --- CMakeLists.txt | 26 ++++++++++++++++---------- include/aws/mqtt/mqtt.h | 3 +++ source/mqtt.c | 11 ++++++++++- 3 files changed, 29 insertions(+), 11 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 4a3348ec..43f6ac01 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -39,39 +39,44 @@ include(AwsFindPackage) file(GLOB AWS_MQTT_HEADERS "include/aws/mqtt/*.h" - ) +) file(GLOB AWS_MQTT5_HEADERS "include/aws/mqtt/v5/*.h" - ) +) + +file(GLOB AWS_MQTT_RR_HEADERS + "include/aws/mqtt/request-response/*.h" +) file(GLOB AWS_MQTT_PRIV_HEADERS "include/aws/mqtt/private/*.h" + "include/aws/mqtt/private/request-response/*.h" "include/aws/mqtt/private/v5/*.h" - ) +) file(GLOB AWS_MQTT_PRIV_EXPOSED_HEADERS "include/aws/mqtt/private/mqtt_client_test_helper.h" - ) +) file(GLOB AWS_MQTT_SRC "source/*.c" "source/v5/*.c" "source/request-response/*.c" - ) +) file(GLOB MQTT_HEADERS ${AWS_MQTT_HEADERS} ${AWS_MQTT_PRIV_HEADERS} - ) +) file(GLOB AWS_MQTT5_HEADERS ${AWS_MQTT5_HEADERS} - ) +) file(GLOB MQTT_SRC ${AWS_MQTT_SRC} - ) +) add_library(${PROJECT_NAME} ${MQTT_HEADERS} ${MQTT_SRC}) aws_set_common_properties(${PROJECT_NAME}) @@ -94,13 +99,14 @@ aws_prepare_shared_lib_exports(${PROJECT_NAME}) install(FILES ${AWS_MQTT_HEADERS} DESTINATION "include/aws/mqtt" COMPONENT Development) install(FILES ${AWS_MQTT5_HEADERS} DESTINATION "include/aws/mqtt/v5" COMPONENT Development) +install(FILES ${AWS_MQTT_RR_HEADERS} DESTINATION "include/aws/mqtt/request-response" COMPONENT Development) install(FILES ${AWS_MQTT_TESTING_HEADERS} DESTINATION "include/aws/testing/mqtt" COMPONENT Development) install(FILES ${AWS_MQTT_PRIV_EXPOSED_HEADERS} DESTINATION "include/aws/mqtt/private" COMPONENT Development) if (BUILD_SHARED_LIBS) - set (TARGET_DIR "shared") + set (TARGET_DIR "shared") else() - set (TARGET_DIR "static") + set (TARGET_DIR "static") endif() install(EXPORT "${PROJECT_NAME}-targets" diff --git a/include/aws/mqtt/mqtt.h b/include/aws/mqtt/mqtt.h index 8d632fd4..d71d96a5 100644 --- a/include/aws/mqtt/mqtt.h +++ b/include/aws/mqtt/mqtt.h @@ -90,6 +90,9 @@ enum aws_mqtt_error { AWS_ERROR_MQTT_REQUEST_RESPONSE_INTERNAL_ERROR, AWS_ERROR_MQTT_REQUEST_RESPONSE_PUBLISH_FAILURE, AWS_ERROR_MQTT_REUQEST_RESPONSE_STREAM_ALREADY_ACTIVATED, + AWS_ERROR_MQTT_REQUEST_RESPONSE_MODELED_SERVICE_ERROR, + AWS_ERROR_MQTT_REQUEST_RESPONSE_PAYLOAD_PARSE_ERROR, + AWS_ERROR_MQTT_REQUEST_RESPONSE_INVALID_RESPONSE_PATH, AWS_ERROR_END_MQTT_RANGE = AWS_ERROR_ENUM_END_RANGE(AWS_C_MQTT_PACKAGE_ID), }; diff --git a/source/mqtt.c b/source/mqtt.c index 252cbd49..392dda20 100644 --- a/source/mqtt.c +++ b/source/mqtt.c @@ -259,7 +259,16 @@ bool aws_mqtt_is_valid_topic_filter(const struct aws_byte_cursor *topic_filter) "Request-response operation failed because the associated publish failed synchronously."), AWS_DEFINE_ERROR_INFO_MQTT( AWS_ERROR_MQTT_REUQEST_RESPONSE_STREAM_ALREADY_ACTIVATED, - "Streaming operation activation failed because the operaation had already been activated."), + "Streaming operation activation failed because the operation had already been activated."), + AWS_DEFINE_ERROR_INFO_MQTT( + AWS_ERROR_MQTT_REQUEST_RESPONSE_MODELED_SERVICE_ERROR, + "Request-response operation failed with a modeled service error."), + AWS_DEFINE_ERROR_INFO_MQTT( + AWS_ERROR_MQTT_REQUEST_RESPONSE_PAYLOAD_PARSE_ERROR, + "Request-response operation failed due to an inability to parse the payload."), + AWS_DEFINE_ERROR_INFO_MQTT( + AWS_ERROR_MQTT_REQUEST_RESPONSE_INVALID_RESPONSE_PATH, + "Request-response operation failed due to arrival on an unknown response path"), }; /* clang-format on */ #undef AWS_DEFINE_ERROR_INFO_MQTT From 627c3334e52021aa8d5772b6ca076884610f3219 Mon Sep 17 00:00:00 2001 From: Waqar Ahmed Khan Date: Wed, 23 Oct 2024 09:58:22 -0700 Subject: [PATCH 2/2] Update CMake to 3.9 (#376) Co-authored-by: Michael Graeb --- CMakeLists.txt | 6 +----- README.md | 6 +++--- 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 43f6ac01..14964ecf 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,10 +1,6 @@ -cmake_minimum_required(VERSION 3.1) +cmake_minimum_required(VERSION 3.9) project(aws-c-mqtt C) -if (POLICY CMP0069) - cmake_policy(SET CMP0069 NEW) # Enable LTO/IPO if available in the compiler, see AwsCFlags -endif() - option(ASSERT_LOCK_HELD "Enable ASSERT_SYNCED_DATA_LOCK_HELD for checking thread issue" OFF) if (ASSERT_LOCK_HELD) add_definitions(-DASSERT_LOCK_HELD) diff --git a/README.md b/README.md index 2f99277e..6a6a7bf5 100644 --- a/README.md +++ b/README.md @@ -4,13 +4,13 @@ C99 implementation of the MQTT 3.1.1 and MQTT 5 specifications. ## License -This library is licensed under the Apache 2.0 License. +This library is licensed under the Apache 2.0 License. ## Usage ### Building -CMake 3.1+ is required to build. +CMake 3.9+ is required to build. `` must be an absolute path in the following instructions. @@ -203,6 +203,6 @@ the wire. For QoS 1, as soon as PUBACK comes back. For QoS 2, PUBCOMP. `topic` a ```c int aws_mqtt_client_connection_ping(struct aws_mqtt_client_connection *connection); ``` -Sends a PINGREQ packet to the server. +Sends a PINGREQ packet to the server. [aws-c-io]: https://github.com/awslabs/aws-c-io