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
143 Views Asked by elgolondrino At
1
There are 1 best solutions below
Related Questions in C++
- C++ using std::vector across boundaries
- Linked list without struct
- Connecting Signal QML to C++ (Qt5)
- how to get the reference of struct soap inherited in C++ Proxy/Service class
- Why we can't assign value to pointer
- Conversion of objects in c++
- shared_ptr: "is not a type" error
- C++ template using pointer and non pointer arguments in a QVector
- C++ SFML 2.2 vectors
- Lifetime of temporary objects
- I want to be able to use 4 different variables in a select statement in c ++
- segmentation fault: 11, extracting data in vector
- How to catch delay-import dll errors (missing dll or symbol) in MinGW(-w64)?
- How can I print all the values in this linked list inside a hash table?
- Configured TTL for A record(s) backing CNAME records
Related Questions in QT
- C++ template using pointer and non pointer arguments in a QVector
- Using QPointer and QObject::connect with C++11
- qt How to style a QToolBar > QToolButton overflow button?
- Qt - Repeatedly write at beginning of file
- C++ Mongodb driver, not working
- deletion and cleanup of worker thread in Qt crashes
- How to drap item from QTableView to QPushButton?
- get image type from qimage
- C++ QT Getting part from QString
- How to connect a destroyed signal of C++ object from QML?
- How to get shader version from QOpenGLShader?
- Size of Qt QRadioButton able to get smaller, but not larger than default
- error WinSock.h has already been included Boost Windows Qt
- How to call a non-class member function with pointers as parameters with QtConcurrent::run?
- What is the difference between MinGW SEH and MinGW SJLJ?
Related Questions in QTSQL
- QSqlQueryModel complains that my database is not open
- PySide QMySql driver on 64 bit Python
- Undefined symbols for architecture x86_64 Qt
- QSqlDatabase hello world application fails to debug
- INSERT not working when foreign_keys on
- connect to MySQL data base with QSqlDatabase pyqt4
- QtSql (from PyQT) seems to be broken
- How to fetchrow data with given variable name using with QSqlQueryModel?
- qtsql: Query inserts malformed UTF-8 text to MySQL
- QSqlQuery::value: not positioned on a valid record
- Correctly using QSqlDatabase in multi-threaded programs
- How to get the executed SQL statement associated with QSqlTableModel::setData()?
- Database connection in Singletone
- SQLite+Qt: Select from table always returns single row
- QSqlRelationalModel model/view update after changes
Related Questions in QTCORE
- Qt - disconnection from BLE device
- What is QList's maximum size?
- PyQt Window Focus on right-click
- QThread::wait() does not return without using direct connection
- Ncurses and Qt Interoperability
- QProcess exits the application after calling QProcess.start()
- QTextStream::readLine(): invalid return value
- Thread sending http request using Qt
- Getting the name of sub class within super class in Qt
- Inheriting subclasses can not use Q_OBJECT
- Global object and creation order
- QObject: cannot open include file 'QtCore/qobjectdefs.h'
- Questions about Qt internationalization
- String to float conversion and formatting
- What happens with Qt signals when the receiver is busy?
Related Questions in QXMPP
- Library for developing XMPP server in C++ or Delphi
- What is the purpose of 'QSet<QString>presenceSubsciptions(QString JID)' method in QXmpp?
- Database connection in Singletone
- Undefined reference to extern variables
- Qt 5.2 unexpected external symbol
- Possible to get QDomElement from QXmlStreamWriter?
- Can't retrieve XMPP messages by MAM after a specified id
- qxmpp - getting list of all accounts being registered on openfire server
- qxmpp (server): Route message to specific resource
- Error when compiling QXmpp library on Qt 5.4
- openfire connect clients other than spark
- Application based on qxmpp can't connect to server on Android, but working well on windows
- QXmpp creating a MUC room (xep--0045) on the server
- QXMPP extensions not calling
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)
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?
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.