mirror of
https://github.com/Mercantec-GHC/h5-projekt-mst.git
synced 2026-08-27 05:37:39 +02:00
receive skateboard data on backend
This commit is contained in:
parent
77a21035c3
commit
e1f9561937
@ -2,6 +2,7 @@
|
|||||||
#include "mqtt.hpp"
|
#include "mqtt.hpp"
|
||||||
#include "server.hpp"
|
#include "server.hpp"
|
||||||
#include <chrono>
|
#include <chrono>
|
||||||
|
#include <cstdio>
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <print>
|
#include <print>
|
||||||
#include <span>
|
#include <span>
|
||||||
@ -17,15 +18,16 @@ int main(void)
|
|||||||
{
|
{
|
||||||
auto client = mst::mqtt::Client("localhost", 1883, "test", "1234");
|
auto client = mst::mqtt::Client("localhost", 1883, "test", "1234");
|
||||||
|
|
||||||
client.subscribe("/", [&](std::string_view text) {
|
client.subscribe("/skateboard/update", [&](std::string_view text) {
|
||||||
std::cout << std::format("Received '{}'\n", text);
|
//
|
||||||
|
std::println("Skateboard: {}", text);
|
||||||
});
|
});
|
||||||
|
|
||||||
auto mqtt_thread = std::thread([&]() {
|
auto mqtt_thread = std::thread([&]() {
|
||||||
try {
|
try {
|
||||||
client.run();
|
client.run();
|
||||||
} catch (mst::mqtt::Error& ex) {
|
} catch (mst::mqtt::Error& ex) {
|
||||||
std::cerr << std::format("MQTT Client failed: {}", ex.what());
|
std::println(stderr, "MQTT Client failed: {}", ex.what());
|
||||||
std::abort();
|
std::abort();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
@ -6,6 +6,7 @@
|
|||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <mosquitto.h>
|
#include <mosquitto.h>
|
||||||
#include <mutex>
|
#include <mutex>
|
||||||
|
#include <print>
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <string_view>
|
#include <string_view>
|
||||||
#include <thread>
|
#include <thread>
|
||||||
@ -27,8 +28,8 @@ static void lib_init()
|
|||||||
int minor;
|
int minor;
|
||||||
int revision;
|
int revision;
|
||||||
mosquitto_lib_version(&major, &minor, &revision);
|
mosquitto_lib_version(&major, &minor, &revision);
|
||||||
std::cout << std::format(
|
std::println(
|
||||||
"[MQTT] Initializing mosquitto {}.{}.{}\n", major, minor, revision);
|
"[MQTT] Initializing mosquitto {}.{}.{}", major, minor, revision);
|
||||||
|
|
||||||
if (mosquitto_lib_init() != MOSQ_ERR_SUCCESS)
|
if (mosquitto_lib_init() != MOSQ_ERR_SUCCESS)
|
||||||
throw Error("failed to initialize");
|
throw Error("failed to initialize");
|
||||||
@ -46,7 +47,7 @@ static void lib_deinit()
|
|||||||
if (!mosquitto_initialized || use_count < 0)
|
if (!mosquitto_initialized || use_count < 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
std::cout << std::format("[MQTT] Deinitializing mosquitto\n");
|
std::println("[MQTT] Deinitializing mosquitto");
|
||||||
|
|
||||||
mosquitto_lib_cleanup();
|
mosquitto_lib_cleanup();
|
||||||
mosquitto_initialized = false;
|
mosquitto_initialized = false;
|
||||||
@ -167,14 +168,15 @@ void Client::subscribe(
|
|||||||
{
|
{
|
||||||
auto inst = static_cast<struct mosquitto*>(m_inst);
|
auto inst = static_cast<struct mosquitto*>(m_inst);
|
||||||
|
|
||||||
m_subscriptions.emplace_back(topic, std::move(func));
|
|
||||||
|
|
||||||
if (auto status = mosquitto_subscribe(inst, NULL, topic.c_str(), 0);
|
if (auto status = mosquitto_subscribe(inst, NULL, topic.c_str(), 0);
|
||||||
status != MOSQ_ERR_SUCCESS) {
|
status != MOSQ_ERR_SUCCESS) {
|
||||||
|
|
||||||
throw Error(std::format(
|
throw Error(std::format(
|
||||||
"could not subscribe ({})", mosquitto_strerror(status)));
|
"could not subscribe ({})", mosquitto_strerror(status)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::println("[MQTT] Subscribed to '{}'", topic);
|
||||||
|
m_subscriptions.emplace_back(std::move(topic), std::move(func));
|
||||||
}
|
}
|
||||||
|
|
||||||
void Client::run()
|
void Client::run()
|
||||||
@ -201,22 +203,22 @@ void Client::cb_connect(int rc)
|
|||||||
"client could not connect ({})", mosquitto_reason_string(rc)));
|
"client could not connect ({})", mosquitto_reason_string(rc)));
|
||||||
}
|
}
|
||||||
|
|
||||||
std::cout << std::format("[MQTT] Client connected\n");
|
std::println("[MQTT] Client connected");
|
||||||
}
|
}
|
||||||
|
|
||||||
void Client::cb_disconnect()
|
void Client::cb_disconnect()
|
||||||
{
|
{
|
||||||
std::cout << std::format("[MQTT] Client disconnected\n");
|
std::println("[MQTT] Client disconnected");
|
||||||
}
|
}
|
||||||
|
|
||||||
void Client::cb_publish()
|
void Client::cb_publish()
|
||||||
{
|
{
|
||||||
std::cout << std::format("[MQTT] Message published\n");
|
std::println("[MQTT] Message published");
|
||||||
}
|
}
|
||||||
|
|
||||||
void Client::cb_message(std::string_view topic, const void* data, size_t size)
|
void Client::cb_message(std::string_view topic, const void* data, size_t size)
|
||||||
{
|
{
|
||||||
std::cout << std::format("[MQTT] Message received\n");
|
std::println("[MQTT] Message received");
|
||||||
|
|
||||||
auto text = std::string_view(static_cast<const char*>(data), size);
|
auto text = std::string_view(static_cast<const char*>(data), size);
|
||||||
|
|
||||||
@ -229,12 +231,12 @@ void Client::cb_message(std::string_view topic, const void* data, size_t size)
|
|||||||
|
|
||||||
void Client::cb_subscribe()
|
void Client::cb_subscribe()
|
||||||
{
|
{
|
||||||
std::cout << std::format("[MQTT] Client subscribed\n");
|
std::println("[MQTT] Client subscribed");
|
||||||
}
|
}
|
||||||
|
|
||||||
void Client::cb_unsubscribe()
|
void Client::cb_unsubscribe()
|
||||||
{
|
{
|
||||||
std::cout << std::format("[MQTT] Client unsubscribed\n");
|
std::println("[MQTT] Client unsubscribed");
|
||||||
}
|
}
|
||||||
|
|
||||||
void Client::publish_raw(
|
void Client::publish_raw(
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user