From 3b9d22955933c2549ce33b8ea600a78101a0f071 Mon Sep 17 00:00:00 2001 From: medina5 Date: Wed, 3 Dec 2025 21:44:16 +0100 Subject: [PATCH] mqtt amqp --- .devcontainer/Dockerfile | 2 +- .devcontainer/devcontainer.json | 8 +++-- main-amqp.cpp | 52 +++++++++++++++++++++++++++++++++ main-mqtt.cpp | 43 +++++++++++++++++++++++++++ 4 files changed, 102 insertions(+), 3 deletions(-) create mode 100644 main-amqp.cpp create mode 100644 main-mqtt.cpp diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index aa212c4..fbfcc72 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -6,7 +6,7 @@ RUN RUN set -eux; \ git \ build-essential \ cmake \ - gdb; + gdb; RUN set -eux; \ apt-get update; \ diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index a3c0629..d10ae99 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -3,6 +3,11 @@ "build": { "dockerfile": "Dockerfile" }, + "runArgs": [ + "--label", "prometheus=true", + "--network=proxy_net", + "--name=pompes" + ], "customizations": { "vscode": { "settings": { @@ -13,8 +18,7 @@ }, "extensions": [ "ms-vscode.cpptools", - "ms-vscode.makefile-tools", - "danielpinto8zz6.c-cpp-compile-run" + "ms-vscode.makefile-tools" ] } } diff --git a/main-amqp.cpp b/main-amqp.cpp new file mode 100644 index 0000000..0398ce4 --- /dev/null +++ b/main-amqp.cpp @@ -0,0 +1,52 @@ +#include +#include +#include +#include +#include + +int main() { + amqp_connection_state_t conn = amqp_new_connection(); + amqp_socket_t *socket = amqp_tcp_socket_new(conn); + + if (!socket) { + fprintf(stderr, "Erreur création socket\n"); + return 1; + } + + if (amqp_socket_open(socket, "localhost", 5672)) { + fprintf(stderr, "Impossible d'ouvrir la connexion\n"); + return 1; + } + + amqp_rpc_reply_t reply; + + reply = amqp_login(conn, "/", 0, 131072, 60, + AMQP_SASL_METHOD_PLAIN, "guest", "guest"); + if (reply.reply_type != AMQP_RESPONSE_NORMAL) { + fprintf(stderr, "Erreur login\n"); + return 1; + } + + amqp_channel_open(conn, 1); + amqp_get_rpc_reply(conn); + + const char *message = "Hello AMQP!"; + amqp_bytes_t message_bytes = amqp_cstring_bytes(message); + + amqp_basic_publish(conn, + 1, + amqp_cstring_bytes(""), + amqp_cstring_bytes("test.queue"), + 0, + 0, + NULL, + message_bytes); + + printf("Message envoyé !\n"); + + amqp_channel_close(conn, 1, AMQP_REPLY_SUCCESS); + amqp_connection_close(conn, AMQP_REPLY_SUCCESS); + amqp_destroy_connection(conn); + + return 0; +} diff --git a/main-mqtt.cpp b/main-mqtt.cpp new file mode 100644 index 0000000..c2ed3e4 --- /dev/null +++ b/main-mqtt.cpp @@ -0,0 +1,43 @@ +#include +#include +#include +#include "MQTTClient.h" + +#define ADDRESS "tcp://localhost:1883" +#define CLIENTID "CClientExample" +#define TOPIC "test/topic" +#define PAYLOAD "Hello MQTT" +#define QOS 1 +#define TIMEOUT 10000L + +int main() { + MQTTClient client; + MQTTClient_create(&client, ADDRESS, CLIENTID, MQTTCLIENT_PERSISTENCE_NONE, NULL); + + MQTTClient_connectOptions conn_opts = MQTTClient_connectOptions_initializer; + conn_opts.keepAliveInterval = 20; + conn_opts.cleansession = 1; + + int rc; + if ((rc = MQTTClient_connect(client, &conn_opts)) != MQTTCLIENT_SUCCESS) { + printf("Échec de connexion, code %d\n", rc); + return EXIT_FAILURE; + } + + MQTTClient_message pubmsg = MQTTClient_message_initializer; + pubmsg.payload = (void*)PAYLOAD; + pubmsg.payloadlen = strlen(PAYLOAD); + pubmsg.qos = QOS; + pubmsg.retained = 0; + + MQTTClient_deliveryToken token; + MQTTClient_publishMessage(client, TOPIC, &pubmsg, &token); + + MQTTClient_waitForCompletion(client, token, TIMEOUT); + printf("Message publié !\n"); + + MQTTClient_disconnect(client, 10000); + MQTTClient_destroy(&client); + + return EXIT_SUCCESS; +}