From 2677a728bc3a973df7bd36b043d3d5078a142f33 Mon Sep 17 00:00:00 2001 From: Wiebe Cazemier Date: Sun, 22 May 2022 12:25:28 +0200 Subject: [PATCH] Bump persistence files to version 3 --- retainedmessagesdb.cpp | 10 +++++++--- retainedmessagesdb.h | 6 ++++-- sessionsandsubscriptionsdb.cpp | 10 +++++++--- sessionsandsubscriptionsdb.h | 6 ++++-- 4 files changed, 22 insertions(+), 10 deletions(-) diff --git a/retainedmessagesdb.cpp b/retainedmessagesdb.cpp index 3821e1a..818d6a5 100644 --- a/retainedmessagesdb.cpp +++ b/retainedmessagesdb.cpp @@ -37,7 +37,7 @@ RetainedMessagesDB::RetainedMessagesDB(const std::string &filePath) : Persistenc void RetainedMessagesDB::openWrite() { - PersistenceFile::openWrite(MAGIC_STRING_V2); + PersistenceFile::openWrite(MAGIC_STRING_V3); } void RetainedMessagesDB::openRead() @@ -48,6 +48,8 @@ void RetainedMessagesDB::openRead() readVersion = ReadVersion::v1; else if (detectedVersionString == MAGIC_STRING_V2) readVersion = ReadVersion::v2; + else if (detectedVersionString == MAGIC_STRING_V3) + readVersion = ReadVersion::v3; else throw std::runtime_error("Unknown file version."); } @@ -106,12 +108,14 @@ std::list RetainedMessagesDB::readData() if (readVersion == ReadVersion::v1) logger->logf(LOG_WARNING, "File '%s' is version 1, an internal development version that was never finalized. Not reading.", getFilePath().c_str()); if (readVersion == ReadVersion::v2) - return readDataV2(); + logger->logf(LOG_WARNING, "File '%s' is version 2, an internal development version that was never finalized. Not reading.", getFilePath().c_str()); + if (readVersion == ReadVersion::v3) + return readDataV3(); return defaultResult; } -std::list RetainedMessagesDB::readDataV2() +std::list RetainedMessagesDB::readDataV3() { std::list messages; diff --git a/retainedmessagesdb.h b/retainedmessagesdb.h index b623f5f..ad6fc7c 100644 --- a/retainedmessagesdb.h +++ b/retainedmessagesdb.h @@ -25,6 +25,7 @@ License along with FlashMQ. If not, see . #define MAGIC_STRING_V1 "FlashMQRetainedDBv1" #define MAGIC_STRING_V2 "FlashMQRetainedDBv2" +#define MAGIC_STRING_V3 "FlashMQRetainedDBv3" #define RESERVED_SPACE_RETAINED_DB_V2 64 /** @@ -45,7 +46,8 @@ class RetainedMessagesDB : public PersistenceFile { unknown, v1, - v2 + v2, + v3 }; struct RowHeader @@ -56,7 +58,7 @@ class RetainedMessagesDB : public PersistenceFile ReadVersion readVersion = ReadVersion::unknown; - std::list readDataV2(); + std::list readDataV3(); public: RetainedMessagesDB(const std::string &filePath); diff --git a/sessionsandsubscriptionsdb.cpp b/sessionsandsubscriptionsdb.cpp index 9493ff9..63fe0ce 100644 --- a/sessionsandsubscriptionsdb.cpp +++ b/sessionsandsubscriptionsdb.cpp @@ -43,7 +43,7 @@ SessionsAndSubscriptionsDB::SessionsAndSubscriptionsDB(const std::string &filePa void SessionsAndSubscriptionsDB::openWrite() { - PersistenceFile::openWrite(MAGIC_STRING_SESSION_FILE_V2); + PersistenceFile::openWrite(MAGIC_STRING_SESSION_FILE_V3); } void SessionsAndSubscriptionsDB::openRead() @@ -54,11 +54,13 @@ void SessionsAndSubscriptionsDB::openRead() readVersion = ReadVersion::v1; else if (detectedVersionString == MAGIC_STRING_SESSION_FILE_V2) readVersion = ReadVersion::v2; + else if (detectedVersionString == MAGIC_STRING_SESSION_FILE_V3) + readVersion = ReadVersion::v3; else throw std::runtime_error("Unknown file version."); } -SessionsAndSubscriptionsResult SessionsAndSubscriptionsDB::readDataV2() +SessionsAndSubscriptionsResult SessionsAndSubscriptionsDB::readDataV3() { const Settings *settings = ThreadGlobals::getSettings(); @@ -388,7 +390,9 @@ SessionsAndSubscriptionsResult SessionsAndSubscriptionsDB::readData() if (readVersion == ReadVersion::v1) logger->logf(LOG_WARNING, "File '%s' is version 1, an internal development version that was never finalized. Not reading.", getFilePath().c_str()); if (readVersion == ReadVersion::v2) - return readDataV2(); + logger->logf(LOG_WARNING, "File '%s' is version 2, an internal development version that was never finalized. Not reading.", getFilePath().c_str()); + if (readVersion == ReadVersion::v3) + return readDataV3(); return defaultResult; } diff --git a/sessionsandsubscriptionsdb.h b/sessionsandsubscriptionsdb.h index 5d3bb52..5b79156 100644 --- a/sessionsandsubscriptionsdb.h +++ b/sessionsandsubscriptionsdb.h @@ -26,6 +26,7 @@ License along with FlashMQ. If not, see . #define MAGIC_STRING_SESSION_FILE_V1 "FlashMQRetainedDBv1" // That this is called 'retained' was a bug... #define MAGIC_STRING_SESSION_FILE_V2 "FlashMQSessionDBv2" +#define MAGIC_STRING_SESSION_FILE_V3 "FlashMQSessionDBv3" #define RESERVED_SPACE_SESSIONS_DB_V2 32 /** @@ -53,12 +54,13 @@ class SessionsAndSubscriptionsDB : public PersistenceFile { unknown, v1, - v2 + v2, + v3 }; ReadVersion readVersion = ReadVersion::unknown; - SessionsAndSubscriptionsResult readDataV2(); + SessionsAndSubscriptionsResult readDataV3(); void writeRowHeader(); public: SessionsAndSubscriptionsDB(const std::string &filePath); -- libgit2 0.21.4