mirror of
https://github.com/Cockatrice/Cockatrice.git
synced 2026-07-29 12:20:24 -07:00
[Card Database] Improve loading times through binary cache (#7051)
* [Card Database] Improve loading times through binary cache Took 10 minutes Took 9 minutes Took 16 seconds * [Card Database] Remove lib qt include Took 18 minutes Took 14 seconds * Downgrade to 6.3 datastream Took 5 minutes * go up to 6.4 datastream Took 1 minute * Address comments * Small bug fixes Took 20 minutes Took 10 seconds * More fixes. Took 4 minutes Took 4 seconds * Even more fixes. Took 11 minutes Took 4 seconds * More fixes. Took 6 minutes Took 26 seconds Took 8 minutes * Namespace instead of class Took 6 minutes --------- Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
This commit is contained in:
parent
4bb8831531
commit
749223c2dc
31 changed files with 1604 additions and 106 deletions
|
|
@ -2,6 +2,7 @@
|
|||
#define CARDDATABASE_H
|
||||
|
||||
#include "../set/card_set_list.h"
|
||||
#include "card_database_data.h"
|
||||
#include "card_database_loader.h"
|
||||
#include "card_database_querier.h"
|
||||
|
||||
|
|
@ -54,16 +55,17 @@ protected:
|
|||
CardDatabaseQuerier *querier;
|
||||
|
||||
private:
|
||||
/**
|
||||
* @brief Check for sets that are unknown and emit signals if needed.
|
||||
*/
|
||||
void checkUnknownSets();
|
||||
|
||||
/**
|
||||
* @brief Refreshes the cached reverse-related cards for all cards.
|
||||
*/
|
||||
void refreshCachedReverseRelatedCards();
|
||||
|
||||
/**
|
||||
* @brief Refreshes the cached reverse-related cards for the given card map.
|
||||
* @param cardMap Map of cards to process.
|
||||
*/
|
||||
void refreshCachedReverseRelatedCards(CardNameMap &cardMap);
|
||||
|
||||
/** @brief Mutexes for thread safety. */
|
||||
QBasicMutex *clearDatabaseMutex = new QBasicMutex(), *addCardMutex = new QBasicMutex(),
|
||||
*removeCardMutex = new QBasicMutex();
|
||||
|
|
@ -127,8 +129,25 @@ public:
|
|||
/** @brief Marks all sets as known. */
|
||||
void markAllSetsAsKnown();
|
||||
|
||||
/** @brief Notifies listeners that enabled sets changed. */
|
||||
void notifyEnabledSetsChanged();
|
||||
/**
|
||||
* @brief Notifies listeners that enabled sets changed.
|
||||
* @param recomputeCachedSets When true, every card's cached set-name / alt-name
|
||||
* data is recomputed (needed only when enabled-set state actually
|
||||
* changed). Pass false after a plain reload, where enabled-set state is
|
||||
* unchanged and the cached data is still valid.
|
||||
*/
|
||||
void notifyEnabledSetsChanged(bool recomputeCachedSets = true);
|
||||
|
||||
/**
|
||||
* @brief Check for sets that are unknown and emit signals if needed.
|
||||
*
|
||||
* Called from MainWindow::startupConfigCheck() after signal connections are
|
||||
* live (the front-loaded parse in main() runs before MainWindow exists, so
|
||||
* signals emitted there would have no receivers). May also be called by
|
||||
* the loader via the friend declaration. Has side effects: enables all
|
||||
* sets when none are enabled (first-run), marks all sets as known.
|
||||
*/
|
||||
void checkUnknownSets();
|
||||
|
||||
ICardSetPriorityController *getPriorityController()
|
||||
{
|
||||
|
|
@ -159,10 +178,26 @@ public slots:
|
|||
*/
|
||||
bool saveCustomTokensToFile();
|
||||
|
||||
/**
|
||||
* @brief Replaces the entire contents of the database with the provided
|
||||
* snapshot in a single operation. Intended to be called once a
|
||||
* background load has finished building a CardDatabaseData, so that
|
||||
* observers never see a partially-populated database.
|
||||
* @param data The fully-built snapshot to adopt.
|
||||
*/
|
||||
void swapInDatabaseData(CardDatabaseData data);
|
||||
|
||||
signals:
|
||||
/** @brief Emitted when the card database has finished loading successfully. */
|
||||
void cardDatabaseLoadingFinished();
|
||||
|
||||
/**
|
||||
* @brief Emitted once after the live database contents have been replaced
|
||||
* by a freshly loaded snapshot. Models should rebuild from the
|
||||
* database in a single batch rather than reacting to per-card adds.
|
||||
*/
|
||||
void cardDatabaseReset();
|
||||
|
||||
/** @brief Emitted when the card database fails to load. */
|
||||
void cardDatabaseLoadingFailed();
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue