I've a multi-user supporting server which is based on qxmpp library written in Qt and exdended by inheriting QXmppServerExtension. So, my question is: Considering multi-user support in my server, whether it's safe or not to use a Singletone class for database connection and holding a connection for QSqlQuery? Since, all the extensions that work via database use it respectively.
Database connection in Singletone
145 views Asked by elgolondrino At
1
There are 1 answers
Related Questions in C++
- How to immediately apply DISPLAYCONFIG_SCALING display scaling mode with SetDisplayConfig and DISPLAYCONFIG_PATH_TARGET_INFO
- Why can't I use templates members in its specialization?
- How to fix "Access violation executing location" when using GLFW and GLAD
- Dynamic array of structures in C++/ cannot fill a dynamic array of doubles in structure from dynamic array of structures
- How do I apply the interface concept with the base-class in design?
- File refuses to compile std::erase() even if using -std=g++23
- How can I do a successful map when the number of elements to be mapped is not consistent in Thrust C++
- Can std::bit_cast be applied to an empty object?
- Unexpected inter-thread happens-before relationships from relaxed memory ordering
- How i can move element of dynamic vector in argument of function push_back for dynamic vector
- Brick Breaker Ball Bounce
- Thread-safe lock-free min where both operands can change c++
- Watchdog Timer Reset on ESP32 using Webservers
- How to solve compiler error: no matching function for call to 'dmhFS::dmhFS()' in my case?
- Conda CMAKE CXX Compiler error while compiling Pytorch
Related Questions in QT
- qt c++ fonction converting adress to coordinates (longitude, latitude)
- Qml table and chart using python
- Qt: running callback in the main thread from the worker thread
- i have installed qt version 6.0.3 and this error QMYSQL driver not loaded displaying again and again
- Frameless Qt + WinAPI maximized window size is bigger than the availableGeometry()
- new window with c++ qt
- How to get scaling from transformation matrix
- How to build just Qt core libraries from Qt sources
- doxyqml not documenting qml files properly
- Incorrect assignment from a QStringList to a char * array
- How to make QT Chart size larger than widget size?
- Queued async operations with QtConcurrent interfere QImage from freed
- Questions about qt5 dynamic link library
- how to document QML files inside C++ project?
- How do I keep my screen contents centered and also have a scrollbar in QT?
Related Questions in QTSQL
- PyQT and SQLite with multiple users
- How to make QSqlQuery::prepare not hang when the connection is lost with the database server
- QtSQL Connect to DataBase
- How to fix "LNK2019 unresolved external symbol" error?
- the server version of this postgresql is unknown falling back to the client version
- How to get last prepared and batch executed query using QSqlQuery?
- Connect to PostgreSQL database with QtSQL using Connection Service File
- Can QAbstractItemModel.beginInsertRows() be given an overestimate of the number of rows to be inserted?
- QT SQL Create table with placeholder as name
- Can I use an existing Python sqlite connection with a QSqlDatabase?
- Is there a good reason not to use the QtSql library (over, for example, Psycopg) when designing a Qt PostgreSQL database application?
- how to pass a uers input from a lineEdit into a SQL Query QT 6.0 c++
- Using If statement with a Row_Number then +1
- Does Qt SQL models support UPSERT?
- QtSQL error: SQLITE driver doesn't recognize my DB file as a database
Related Questions in QTCORE
- Why can I not include <QtLogging> with Qt6 Core?
- Why is QtCore.Signal in pyside6 called at different memory addresses in different classes?
- No module named 'PyQt5.QtCore' running docker windows image that appear the module installed in pip freeze
- QProcess doesn't terminate the program
- Why can you not create sublclasses of PySide6.QtCore.Signal?
- ImportError : Cannot import name
- "ImportError: DLL load failed while importing QtCore: %1 n'est pasune application Win32 valide" when installing .exe generated by PyInstaller
- Why does my qt creater output a bunch of weird messages in the application output window after starting the application, even though a blank project?
- how to set full screen when I use QQuickView in Qt?
- error:ERROR: Could not find a version that satisfies the requirement QtCore (from versions: none) ERROR: No matching distribution found for QtCore
- QSerialPort with no GUI, no thread: QObject::startTimer: Timers can only be used with threads started with QThread
- How to compile a Qt program without qtCreator on Windows?
- How to use pyqt to achieve the effect of Select-Option addition and deletion
- PyQt5 grabWindow captures black screen instead of the selected area
- Start QCoreApplication in a native iOS App
Related Questions in QXMPP
- Can't retrieve XMPP messages by MAM after a specified id
- QXMPP extensions not calling
- Error when compiling QXmpp library on Qt 5.4
- QXmpp creating a MUC room (xep--0045) on the server
- Application based on qxmpp can't connect to server on Android, but working well on windows
- openfire connect clients other than spark
- Possible to get QDomElement from QXmlStreamWriter?
- qxmpp (server): Route message to specific resource
- qxmpp - getting list of all accounts being registered on openfire server
- Qt 5.2 unexpected external symbol
- Undefined reference to extern variables
- Database connection in Singletone
- Library for developing XMPP server in C++ or Delphi
- What is the purpose of 'QSet<QString>presenceSubsciptions(QString JID)' method in QXmpp?
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
You can read more about singletons in general why they are considered bad in many cases:
What is so bad about Singletons?
I would personally avoid them in your without the context more. The only reason you bought up so far for singletons rather than passing references or that kind around, you would spare some memory for the server service.
Based on the discussion, it is always better to make sure you have some benchmark in place when the complexity difference is not obvious. In your special case, with additional 216K memory for about 1000 clients, you would get about 250 MB additional memory usage.
I am rounding this number up a bit just in case. This is in no way comparable to the capacity of your server which seems to be about 16 GB. If you have other memory hungry services, those would probably be a more offending place to look into optimization.
That being said, if you wish to go for singletons, you could implement that on top of the Q_GLOBAL_STATIC or Q_GLOBAL_STATIC_WITH_ARGS macros in Qt. Note that this was also public in Qt 4, although undocumented. As far as I know, it did not have proper thread-safety in Qt 4 though which was significantly improved in Qt 5.