void IoTHubTransportMqtt_Unsubscribe(TRANSPORT_HANDLE handle) { PMQTTTRANSPORT_HANDLE_DATA transportState = (PMQTTTRANSPORT_HANDLE_DATA)handle; /* Codes_SRS_IOTHUB_MQTT_TRANSPORT_07_019: [If parameter handle is NULL then IoTHubTransportMqtt_Unsubscribe shall do nothing.] */ if (transportState != NULL && transportState->subscribed) { /* Codes_SRS_IOTHUB_MQTT_TRANSPORT_07_020: [IoTHubTransportMqtt_Unsubscribe shall call mqtt_client_unsubscribe to unsubscribe the mqtt message topic.] */ const char* unsubscribe[] = { STRING_c_str(transportState->mqttMessageTopic) }; (void)mqtt_client_unsubscribe(transportState->mqttClient, transportState->packetId++, unsubscribe, 1); transportState->subscribed = false; } }
static int test_subscribe(struct harness_t *harness_p) { struct mqtt_application_message_t foobar; /* Subscribe. */ foobar.topic.buf_p = "foo/bar"; foobar.topic.size = 7; foobar.qos = mqtt_qos_1_t; BTASSERT(mqtt_client_subscribe(&client, &foobar) == 0); thrd_sleep_ms(500); /* Unsubscribe. */ foobar.topic.buf_p = "foo/bar"; foobar.topic.size = 7; BTASSERT(mqtt_client_unsubscribe(&client, &foobar) == 0); return (0); }