From 681eeb8288ffa50ca3d2bcd5b8ecbcc5c251f89b Mon Sep 17 00:00:00 2001 From: Wiebe Cazemier Date: Sat, 12 Feb 2022 16:50:35 +0100 Subject: [PATCH] Rename ThreadAuth to ThreadGlobals --- CMakeLists.txt | 4 ++-- FlashMQTests/FlashMQTests.pro | 4 ++-- FlashMQTests/tst_maintests.cpp | 6 +++--- mainapp.cpp | 4 ++-- mqttpacket.cpp | 8 ++++---- session.cpp | 8 ++++---- threadauth.cpp | 35 ----------------------------------- threadauth.h | 25 ------------------------- threadglobals.cpp | 45 +++++++++++++++++++++++++++++++++++++++++++++ threadglobals.h | 24 ++++++++++++++++++++++++ threadloop.cpp | 6 +++--- threadloop.h | 2 +- 12 files changed, 90 insertions(+), 81 deletions(-) delete mode 100644 threadauth.cpp delete mode 100644 threadauth.h create mode 100644 threadglobals.cpp create mode 100644 threadglobals.h diff --git a/CMakeLists.txt b/CMakeLists.txt index b2553f0..284250b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -56,7 +56,7 @@ add_executable(FlashMQ persistencefile.h sessionsandsubscriptionsdb.h qospacketqueue.h - threadauth.h + threadglobals.h threadloop.h mainapp.cpp @@ -93,7 +93,7 @@ add_executable(FlashMQ persistencefile.cpp sessionsandsubscriptionsdb.cpp qospacketqueue.cpp - threadauth.cpp + threadglobals.cpp threadloop.cpp ) diff --git a/FlashMQTests/FlashMQTests.pro b/FlashMQTests/FlashMQTests.pro index c15cea7..8fca6f2 100644 --- a/FlashMQTests/FlashMQTests.pro +++ b/FlashMQTests/FlashMQTests.pro @@ -47,7 +47,7 @@ SOURCES += tst_maintests.cpp \ ../persistencefile.cpp \ ../sessionsandsubscriptionsdb.cpp \ ../qospacketqueue.cpp \ - ../threadauth.cpp \ + ../threadglobals.cpp \ ../threadloop.cpp \ mainappthread.cpp \ twoclienttestcontext.cpp @@ -88,7 +88,7 @@ HEADERS += \ ../persistencefile.h \ ../sessionsandsubscriptionsdb.h \ ../qospacketqueue.h \ - ../threadauth.h \ + ../threadglobals.h \ ../threadloop.h \ mainappthread.h \ twoclienttestcontext.h diff --git a/FlashMQTests/tst_maintests.cpp b/FlashMQTests/tst_maintests.cpp index 4d7cfd1..f17085b 100644 --- a/FlashMQTests/tst_maintests.cpp +++ b/FlashMQTests/tst_maintests.cpp @@ -33,7 +33,7 @@ License along with FlashMQ. If not, see . #include "sessionsandsubscriptionsdb.h" #include "session.h" #include "threaddata.h" -#include "threadauth.h" +#include "threadglobals.h" // Dumb Qt version gives warnings when comparing uint with number literal. template @@ -996,7 +996,7 @@ void MainTests::testSavingSessions() // Kind of a hack... Authentication auth(*settings.get()); - ThreadAuth::assign(&auth); + ThreadGlobals::assign(&auth); std::shared_ptr c1(new Client(0, t, nullptr, false, nullptr, settings, false)); c1->setClientProperties(ProtocolVersion::Mqtt311, "c1", "user1", true, 60, false); @@ -1115,7 +1115,7 @@ void testCopyPacketHelper(const std::string &topic, char from_qos, char to_qos, // Kind of a hack... Authentication auth(*settings.get()); - ThreadAuth::assign(&auth); + ThreadGlobals::assign(&auth); std::shared_ptr dummyClient(new Client(0, t, nullptr, false, nullptr, settings, false)); dummyClient->setClientProperties(ProtocolVersion::Mqtt311, "qostestclient", "user1", true, 60, false); diff --git a/mainapp.cpp b/mainapp.cpp index 53cccc9..40625be 100644 --- a/mainapp.cpp +++ b/mainapp.cpp @@ -28,7 +28,7 @@ License along with FlashMQ. If not, see . #include #include "logger.h" -#include "threadauth.h" +#include "threadglobals.h" #include "threadloop.h" MainApp *MainApp::instance = nullptr; @@ -645,7 +645,7 @@ void MainApp::loadConfig() confFileParser->loadFile(false); settings = confFileParser->moveSettings(); settingsLocalCopy = *settings.get(); - ThreadAuth::assignSettings(&settingsLocalCopy); + ThreadGlobals::assignSettings(&settingsLocalCopy); if (settings->listeners.empty()) { diff --git a/mqttpacket.cpp b/mqttpacket.cpp index db95a68..14be782 100644 --- a/mqttpacket.cpp +++ b/mqttpacket.cpp @@ -22,7 +22,7 @@ License along with FlashMQ. If not, see . #include #include "utils.h" -#include "threadauth.h" +#include "threadglobals.h" RemainingLength::RemainingLength() { @@ -460,7 +460,7 @@ void MqttPacket::handleConnect() bool accessGranted = false; std::string denyLogMsg; - Authentication &authentication = *ThreadAuth::getAuth(); + Authentication &authentication = *ThreadGlobals::getAuth(); if (!user_name_flag && settings.allowAnonymous) { @@ -531,7 +531,7 @@ void MqttPacket::handleSubscribe() throw ProtocolError("Packet ID 0 when subscribing is invalid."); // [MQTT-2.3.1-1] } - Authentication &authentication = *ThreadAuth::getAuth(); + Authentication &authentication = *ThreadGlobals::getAuth(); std::list subs_reponse_codes; while (remainingAfterPos() > 0) @@ -691,7 +691,7 @@ void MqttPacket::handlePublish() payloadLen = remainingAfterPos(); payloadStart = pos; - Authentication &authentication = *ThreadAuth::getAuth(); + Authentication &authentication = *ThreadGlobals::getAuth(); if (authentication.aclCheck(sender->getClientId(), sender->getUsername(), topic, subtopics, AclAccess::write, qos, retain) == AuthResult::success) { if (retain) diff --git a/session.cpp b/session.cpp index b441940..91887e1 100644 --- a/session.cpp +++ b/session.cpp @@ -19,13 +19,13 @@ License along with FlashMQ. If not, see . #include "session.h" #include "client.h" -#include "threadauth.h" +#include "threadglobals.h" std::chrono::time_point appStartTime = std::chrono::steady_clock::now(); Session::Session() : - maxQosMsgPending(ThreadAuth::getSettings()->maxQosMsgPendingPerClient), - maxQosBytesPending(ThreadAuth::getSettings()->maxQosBytesPendingPerClient) + maxQosMsgPending(ThreadGlobals::getSettings()->maxQosMsgPendingPerClient), + maxQosBytesPending(ThreadGlobals::getSettings()->maxQosBytesPendingPerClient) { } @@ -152,7 +152,7 @@ void Session::writePacket(MqttPacket &packet, char max_qos, std::shared_ptr(packet.getQos(), max_qos); - Authentication *_auth = ThreadAuth::getAuth(); + Authentication *_auth = ThreadGlobals::getAuth(); assert(_auth); Authentication &auth = *_auth; if (auth.aclCheck(client_id, username, packet.getTopic(), packet.getSubtopics(), AclAccess::read, effectiveQos, packet.getRetain()) == AuthResult::success) diff --git a/threadauth.cpp b/threadauth.cpp deleted file mode 100644 index 44bda2b..0000000 --- a/threadauth.cpp +++ /dev/null @@ -1,35 +0,0 @@ -#include "threadauth.h" - -thread_local Authentication *ThreadAuth::auth = nullptr; -thread_local ThreadData *ThreadAuth::threadData = nullptr; -thread_local Settings *ThreadAuth::settings = nullptr; - -void ThreadAuth::assign(Authentication *auth) -{ - ThreadAuth::auth = auth; -} - -Authentication *ThreadAuth::getAuth() -{ - return auth; -} - -void ThreadAuth::assignThreadData(ThreadData *threadData) -{ - ThreadAuth::threadData = threadData; -} - -ThreadData *ThreadAuth::getThreadData() -{ - return threadData; -} - -void ThreadAuth::assignSettings(Settings *settings) -{ - ThreadAuth::settings = settings; -} - -Settings *ThreadAuth::getSettings() -{ - return settings; -} diff --git a/threadauth.h b/threadauth.h deleted file mode 100644 index 6f33444..0000000 --- a/threadauth.h +++ /dev/null @@ -1,25 +0,0 @@ -#ifndef THREADAUTH_H -#define THREADAUTH_H - -#include "forward_declarations.h" - -class Authentication; - -// TODO: rename, this is no longer just auth, but thread local globals. -class ThreadAuth -{ - static thread_local Authentication *auth; - static thread_local ThreadData *threadData; - static thread_local Settings *settings; -public: - static void assign(Authentication *auth); - static Authentication *getAuth(); - - static void assignThreadData(ThreadData *threadData); - static ThreadData *getThreadData(); - - static void assignSettings(Settings *settings); - static Settings *getSettings(); -}; - -#endif // THREADAUTH_H diff --git a/threadglobals.cpp b/threadglobals.cpp new file mode 100644 index 0000000..9813b83 --- /dev/null +++ b/threadglobals.cpp @@ -0,0 +1,45 @@ +#include "threadglobals.h" +#include "cassert" + +thread_local Authentication *ThreadGlobals::auth = nullptr; +thread_local ThreadData *ThreadGlobals::threadData = nullptr; +thread_local Settings *ThreadGlobals::settings = nullptr; + +void ThreadGlobals::assign(Authentication *auth) +{ +#ifndef TESTING + assert(ThreadGlobals::auth == nullptr); +#endif + ThreadGlobals::auth = auth; +} + +Authentication *ThreadGlobals::getAuth() +{ + return auth; +} + +void ThreadGlobals::assignThreadData(ThreadData *threadData) +{ +#ifndef TESTING + assert(ThreadGlobals::threadData == nullptr); +#endif + ThreadGlobals::threadData = threadData; +} + +ThreadData *ThreadGlobals::getThreadData() +{ + return threadData; +} + +void ThreadGlobals::assignSettings(Settings *settings) +{ +#ifndef TESTING + assert(ThreadGlobals::settings == nullptr || ThreadGlobals::settings == settings); +#endif + ThreadGlobals::settings = settings; +} + +Settings *ThreadGlobals::getSettings() +{ + return settings; +} diff --git a/threadglobals.h b/threadglobals.h new file mode 100644 index 0000000..a71ad42 --- /dev/null +++ b/threadglobals.h @@ -0,0 +1,24 @@ +#ifndef THREADGLOBALS_H +#define THREADGLOBALS_H + +#include "forward_declarations.h" + +class Authentication; + +class ThreadGlobals +{ + static thread_local Authentication *auth; + static thread_local ThreadData *threadData; + static thread_local Settings *settings; +public: + static void assign(Authentication *auth); + static Authentication *getAuth(); + + static void assignThreadData(ThreadData *threadData); + static ThreadData *getThreadData(); + + static void assignSettings(Settings *settings); + static Settings *getSettings(); +}; + +#endif // THREADGLOBALS_H diff --git a/threadloop.cpp b/threadloop.cpp index 39883f4..5143a58 100644 --- a/threadloop.cpp +++ b/threadloop.cpp @@ -20,9 +20,9 @@ License along with FlashMQ. If not, see . void do_thread_work(ThreadData *threadData) { int epoll_fd = threadData->epollfd; - ThreadAuth::assign(&threadData->authentication); - ThreadAuth::assignThreadData(threadData); - ThreadAuth::assignSettings(&threadData->settingsLocalCopy); + ThreadGlobals::assign(&threadData->authentication); + ThreadGlobals::assignThreadData(threadData); + ThreadGlobals::assignSettings(&threadData->settingsLocalCopy); struct epoll_event events[MAX_EVENTS]; memset(&events, 0, sizeof (struct epoll_event)*MAX_EVENTS); diff --git a/threadloop.h b/threadloop.h index 6877a5c..9270a05 100644 --- a/threadloop.h +++ b/threadloop.h @@ -19,7 +19,7 @@ License along with FlashMQ. If not, see . #define THREADLOOP_H #include "threaddata.h" -#include "threadauth.h" +#include "threadglobals.h" #define MAX_EVENTS 65536 -- libgit2 0.21.4