summaryrefslogtreecommitdiffstats
path: root/src/tools/messageserver/messageserver.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Rewrite logging with QLoggingCategoryDamien Caliste2025-06-131-17/+134
| | | | | | | | | Replace the custom logging mechanism with QLoggingCategory. Also declare the warnings with the proper category. Change-Id: If87d53d27ea0c65abd434af9f99fe49ce634d6dd Reviewed-by: Pekka Vuorela <[email protected]>
* Add missing spaces after for/if/while/switchPekka Vuorela2025-05-091-1/+1
| | | | | | | Change-Id: I57c6ed78099b3359a16ce807da95325e755f0197 Reviewed-by: Pekka Vuorela <[email protected]> Reviewed-by: Damien Caliste <[email protected]> Reviewed-by: <[email protected]>
* Proper life-cycle management for messageserver plugins. API breakPekka Vuorela2025-02-271-2/+6
| | | | | | | | | | | | | | | | The setup here was quite broken, nobody really properly owned the created server plugin instances and the static instance deletion got rid of them at process shutdown in random order with other qmf stuff. Resulting in bad memory accessses and whatnot. Thus separating here the plugin api and the services the plugins can create. Needs a bit adjustment for the out-of-source plugins using this. Change-Id: I226d63ef985b215a09f6125a013bafdc80d69562 Reviewed-by: Pekka Vuorela <[email protected]> Reviewed-by: Damien Caliste <[email protected]> Reviewed-by: <[email protected]>
* Remove lock file usage from messageserverGuido Berhoerster2025-02-031-20/+23
| | | | | | | | | | Using DBus with a well known name already ensures that only a single instance can run. Thus refactor the constructor into init method which can fail in case of DBus errors and exit gracefully without dumping core. Also exit gracefully in case of database incompatibility Change-Id: I290cd438d47ea56cef4865a565c305cc2f884906 Reviewed-by: Pekka Vuorela <[email protected]>
* Switch to DBus for IPCDamien Caliste2023-11-061-147/+39
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | There are two IPC mechanisms in QMF: - one between the messageserver and clients to perform actions like fetch emails, search, etc. - one between every mailstore instances to notify other instances of changes in the mail database. QCop being discontinued, this patch switchs to use DBus as an IPC transport layer. The first mechanism is implemented by registering an object on the session bus (/messageserver) providing a service (org.qt.messageserver). The second mechanism is implemented by registering each client as an object to the session bus (/mailstore/client) for the interface org.qt.mailstore. Other clients can then listen to updated() signal on this interface. DBus IPC requires to implement operator<<() and operator>>() with QDBusArgument for the objects that need to be transported. In all cases, each objects are serialised up to unitary elemental elements like int, byte arrays, etc. Except for the QMailKeyArgument that uses first a serialisation into a byte array before being sent. This is due to the recursive declaration of QMailKeyArgument with the subKeys members, not working well with QDBusArgument serialisation. Change-Id: I8f10b8b00f73d4b75dad778b591159a765e9fb89 Reviewed-by: Pekka Vuorela <[email protected]>
* Remove client to server email addition via a fileDamien Caliste2023-10-171-4/+0
| | | | | | | | | | | | | The possibility to transfer from client to the mail server new or modified emails by file has been deprecated by the usage of QMailMessageMetaDataList. The client side implementation is already using only the new method. So remove the server side implementation and IPC interface. Change-Id: I50df8ab04692748e3a1b66341f3b4cd05cc58501 Reviewed-by: Pekka Vuorela <[email protected]>
* Delete deprecated message count signals in IPCDamien Caliste2023-10-101-20/+12
| | | | | | | | | | | | | | | | | The newCountChanged signal is not used anymore in the message server. Remove the client code exposing it. Remove also client method acknowledgeNewMessages() since it's linked to newCountChanged signal to reset the counters. Remove the internal QMailMessageServerPrivate::initialize() since it's not called from anywhere and the server has no slot for this signal. Change-Id: Id5a67c22eae2c7190c3e02ed0681eab7037f1fcc Reviewed-by: Pekka Vuorela <[email protected]>
* Use range constructors for lists and setsDamien Caliste2021-04-081-1/+1
| | | | | | Change-Id: Iccea2c86266b4c20777d939b291084cb709bf592 Reviewed-by: Christopher Adams <[email protected]> Reviewed-by: David Llewellyn-Jones <[email protected]>
* Fix unsafe signal handling in messageserverPekka Vuorela2018-09-291-8/+66
| | | | | | | | | | Qt code cannot be called from signal handlers so old version wasn't safe. Funny thing MessageServer already had proper handling, but it was overridden for sighup in main.cpp. Change-Id: I9ab55f943148b5cd62bb01eec0157e2500b57ba2 Reviewed-by: Christopher Adams <[email protected]> Reviewed-by: Matthew Vogt <[email protected]>
* [qmf] onlineMoveFolder API + IMAP implementationMichael Nosov2018-08-231-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | API to move folder in the hierarchy. Implementation is mostly based on 'onlineRenameFolder' API implementation Testing: ======== 1) Gmail account: Try to move a folder from one folder to another. Expected result: move success 2) Gmail account: Try to move a folder from one folder to root. Expected: move success 3) Gmail account: Try to move top-level (root) folder to some other folder. Expected result: move success 4) Binary compatibility - Verify that existing 3rd party QMF plugins still work well with new QMF - Try to move folder for 3rd party QMF account (which doesn't have implementation of MoveFolder) Verify that MoveFolder action is failed. Verify in logs that action is completed with "This function is not currently supported" error 5) Gmail account (handling errors): - Delete folder A on Web UI - Try to move folder A to folder B on device - Verify that action is failed - Try to perform some moveFolder operations again - Verify that those operation are completed (e.g. completion is not freezed) Change-Id: Ifd59ad4fe9c41d17963aa64101b203d31dcdfb2d Reviewed-by: Christopher Adams <[email protected]>
* Update licensing to match latest approach in QtCore.Robin Burchell2015-08-281-22/+14
| | | | | Change-Id: Icce55517963f0cbc35211e9fc6f1a0fc413f5676 Reviewed-by: Simon Hausmann <[email protected]>
* Convert qmfclient & qmfmessageserver into Qt modules: QmfClient & ↵Robin Burchell2014-01-231-1/+1
| | | | | | | | | | | | | | | | | | | | | QmfMessageServer. This was not possible prior to now due to Qt 4 support hanging around like the undead vampire it is, but now we purged it with fire and light, and the build system looks a lot less like a stinky, decomposed corpse. There's still a lot of surprises lurking: qtmail is one such surprise. I don't quite grasp why it's so heavy on plugins, and qmfutil also needs some... attention. But at least it's a start. As part of this work, we rename the qcop headers to fit the private convention. This could have been done in a prior commit, but given that I didn't have an easy way to build prior to this commit, I opted to roll them together. Change-Id: Ia3e288ffc3639a7751c9040ceecb54fca77a31b1 Reviewed-by: Oswald Buddenhagen <[email protected]> Reviewed-by: Matthew Vogt <[email protected]> Reviewed-by: Valerio Valerio <[email protected]>
* Add missing include.Davide Pesavento2013-07-291-0/+1
| | | | | | | | | | | | | Fixes the following compilation errors with gcc 4.7 and later. messageserver.cpp: In static member function 'static void MessageServer::hupSignalHandler(int)': messageserver.cpp:501:5: error: '::write' has not been declared messageserver.cpp: In member function 'void MessageServer::handleSigHup()': messageserver.cpp:508:5: error: '::read' has not been declared Change-Id: I6fbcf2cba884f5e285c0259e020c60f4a44173b4 Reviewed-by: Valerio Valerio <[email protected]> Reviewed-by: Robin Burchell <[email protected]>
* Remove obsolete ifdef.Valerio Valerio2013-06-251-4/+0
| | | | | | Change-Id: I379598ddb440fe5c7474873c078cade05c8e5fb6 Signed-off-by: Valerio Valerio <[email protected]> Reviewed-by: Robin Burchell <[email protected]>
* Introduce messageserver plugins.4.0.2Valerio Valerio2013-06-241-0/+15
| | | | | | | | | | | | MessageServer plugins will be loaded and executed in the messageserver main loop, these plugins should only be used for services that need to know information about the operations initiated by all clients connected to messageserver. To make use of this functionality qmf should be compiled with 'DEFINES+=MESSAGESERVER_PLUGINS'. Change-Id: I6bebb150645d2c70a5bc67ffcaaa904f94ed3705 Signed-off-by: Valerio Valerio <[email protected]> Reviewed-by: Robin Burchell <[email protected]>
* Remove Symbian support.Robin Burchell2013-02-281-3/+3
| | | | | | | | Symbian is not a supported platform anymore. Change-Id: I82e618e756ae0b247e6e038fa9d8d43fb90b44ff Reviewed-by: Valerio Valerio <[email protected]> Reviewed-by: Matthew Vogt <[email protected]>
* Change to new-form Digia license headers.Robin Burchell2013-02-121-24/+24
| | | | | Change-Id: If0f4427ee93a37de4ebd9e097defd8b3956f0fc6 Reviewed-by: Lars Knoll <[email protected]>
* s/Nokia/QtProject/ in settings files.Robin Burchell2012-12-051-2/+2
| | | | | | | | | | minor, but matches the changes made in Qt 5, and reflects that Nokia is no longer the vendor of this software. Change-Id: I3b324b813359f53e65760f3ce7a751dbd5c970e7 Reviewed-by: Sergio Ahumada <[email protected]> Reviewed-by: Johan Thelin <[email protected]> Reviewed-by: Valerio Valerio <[email protected]>
* BIC: Update the imap plugin to use the public QMailServiceAction interface.Don Sanders2012-02-231-0/+2
| | | | | | | | | Instead of using its own private interface for push email and interval checking operations. This change will faciliate monitoring of push email network operations, and limiting peak memory use. Required adding a new service action, retrieveNewMessages, for retrieving new messages in a folder without updating existing messages.
* Add service action to find and create standard folders.Valerio Valerio2012-01-271-0/+2
| | | | | | | | | | | | void QMailRetrievalAction::createStandardFolders(const QMailAccountId &accountId) Requests that the message server create the standard folders for the account accountId. If all standard folders are already set in the storage the service action will return success immediately, in case some standard folders are not set, a matching attempt against a predefined list of translations will be made, if the folders can't be matched, messageserver will try to create them in the server side and match them if the creation is successful. In case folder creation is not allowed for the account accountId the service action will return.
* Add 'transmitMessage(quint64 action, const QMailMessageId &messageId)'Valerio Valerio2012-01-171-0/+2
| | | | | | | | void QMailMessageServer::transmitMessage(quint64 action, const QMailMessageId &messageId) Requests that the MessageServer application transmit the message identified by 'messageId' that are currently in the Outbox folder. The request has the identifier 'action'.
* Add disconnected storage actions, for actions requiring database writes.2012W02Don Sanders2012-01-101-0/+12
| | | | | | | | | | | | | | | | | | | | | | | Specifically, as documented in src/libraries/qmfclient/CHANGES.qdoc item 52, added: 'void QMailStorageAction::deleteMessages(quint64, const QMailMessageIdList &ids)', 'void QMailStorageAction::rollBackUpdates(quint64, const QMailAccountId &mailAccountId)', 'void QMailStorageAction::moveToStandardFolder(quint64, const QMailMessageIdList& ids, QMailFolder::StandardFolder standardFolder)', 'void QMailStorageAction::moveToFolder(quint64, const QMailMessageIdList& ids, const QMailFolderId& folderId)', 'void QMailStorageAction::flagMessages(quint64, const QMailMessageIdList& ids, quint64 setMask, quint64 unsetMask)', 'void QMailStorageAction::restoreToPreviousFolder(quint64, const QMailMessageKey& key)', 'void QMailMessageServer::deleteMessages(quint64, const QMailMessageIdList &ids)', 'void QMailMessageServer::rollBackUpdates(quint64, const QMailAccountId &mailAccountId)', 'void QMailMessageServer::moveToStandardFolder(quint64, const QMailMessageIdList& ids, quint64 standardFolder)', 'void QMailMessageServer::moveToFolder(quint64, const QMailMessageIdList& ids, const QMailFolderId& folderId)', 'void QMailMessageServer::flagMessages(quint64, const QMailMessageIdList& ids, quint64 setMask, quint64 unsetMask)' and 'void QMailMessageServer::restoreToPreviousFolder(quint64, const QMailMessageKey& key)'. Also added documentation for new functions, and made some minor documentation updates for existing functions. Additionally added a new set of module tests tst_qmailstorageaction. These tests require the messageserver to be running. They are not just stubs but do real testing.
* Rename some QMailStorageAction functions to indicate they require the device ↵2012W01_1Don Sanders2012-01-051-14/+14
| | | | | | | | | | | | | | | | | | | | | | | | | to be online. Specifically: Renamed 'void QMailStorageAction::deleteMessages(const QMailMessageIdList &ids)' to onlineDeleteMessages, 'void QMailStorageAction::copyMessages(const QMailMessageIdList &ids, const QMailFolderId &destinationId)' to onlineCopyMessages, 'void QMailStorageAction::moveMessages(const QMailMessageIdList &ids, const QMailFolderId &destinationId)' to onlineMoveMessages, 'void QMailStorageAction::flagMessages(const QMailMessageIdList &ids, quint64 setMask, quint64 unsetMask)' to onlineFlagMessages, 'void QMailStorageAction::createFolder(const QString &name, const QMailAccountId &accountId, const QMailFolderId &parentId)' to onlineCreateFolder, 'void QMailStorageAction::renameFolder(const QMailFolderId &folderId, const QString &name)' to onlineRenameFolder, 'void QMailStorageAction::deleteFolder(const QMailFolderId &folderId)' to onlineDeleteFolder. 'void QMailMessageServer::deleteMessages(const QMailMessageIdList &ids)' to onlineDeleteMessages, 'void QMailMessageServer::copyMessages(const QMailMessageIdList &ids, const QMailFolderId &destinationId)' to onlineCopyMessages, 'void QMailMessageServer::moveMessages(const QMailMessageIdList &ids, const QMailFolderId &destinationId)' to onlineMoveMessages, 'void QMailMessageServer::flagMessages(const QMailMessageIdList &ids, quint64 setMask, quint64 unsetMask)' to onlineFlagMessages, 'void QMailMessageServer::createFolder(const QString &name, const QMailAccountId &accountId, const QMailFolderId &parentId)' to onlineCreateFolder, 'void QMailMessageServer::renameFolder(const QMailFolderId &folderId, const QString &name)' to onlineRenameFolder, 'void QMailMessageServer::deleteFolder(const QMailFolderId &folderId)' to onlineDeleteFolder. Additionally updated the doc to fix some assorted discrepancies, and indicate which functions require the device to be online. Have not yet regenerated the html version of the doc.
* Added QMailSearchAction::countMessages function, and ↵Don Sanders2011-11-211-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | QMailMessageServer::messagesCount signal. QMailSearchAction::countMessages(const QMailMessageKey &filter, const QString &bodyText) function Requests that the message server count all messages that match the criteria specified by \a filter. If \a bodyText is non-empty then messages that contain the supplied text in their content will also be matched and counted. It should be implemented for all protocol plugins for accounts with the QMailAccount::CanSearchOnServer flag set. Implemented for IMAP plugin, accelerated by use of ESEARH IMAP extension when supported by the remote server. QMailSearchAction::messagesCount(uint count) This signal emits the \a count of matching messages on the remote server. Only emitted for remote searches. Emitted by countMessages, and searchMessages functions. uint QMailSearchAction::messagesCount() const Returns the count of matching messages on the remote server. Also implemented boiler plate code in QMailMessageServer etc.
* Update remote server search API.Don Sanders2011-11-171-0/+4
| | | | | | | Add 'QMailSearchAction::remainingMessagesCount(uint count) signal. and 'QMailSearchAction::searchMessages' function with limit argument. Also add doc.
* Update license headers (make them consistent with harmattan qmf)Don Sanders2011-08-071-17/+17
| | | | Remove obsolete pre-release clause.
* Add new retrieveMessageLists interface and implementation.2011W26_4Don Sanders2011-07-071-0/+2
| | | | Fix for nb#271151.
* Revert initial retrieveMessageLists interface and implementation.2011W26_3Don Sanders2011-07-071-2/+0
|
* Add new retrieveMessageLists for performance2011W26_2Eric Springer2011-07-071-0/+2
|
* Update the addMessages and updateMessages serviceactionsDon Sanders2011-05-311-0/+4
| | | | | | | | | | | | | | | | | | Related to NB#199393 'Response time to send Email message is above the target value' messagserver will no longer reload message data, should reduce peak memory usage (and reduce cpu/filesystem use). Required fixing bug in mailstore where updateMessage ignored udpated contentIdentifier. Required changing QMailContentManager interface to add new NoDurability option and new ensureDurability(const QList<QString> &) function, and updating QmfStorageManager plugin appropriately. Required adding new limitation to addMessages and updateMessages service actions, all messages must have same content scheme.
* Add async serviceactions for adding and updating messages.Don Sanders2011-05-201-0/+4
|
* Changes required to build on Symbian from JKL.Don Sanders2010-11-231-4/+3
|
* Add concurent action support to service handlerespringe2010-10-181-2/+0
|
* Extensions to the logging subsystem (From Vitaly Repin)espringe2010-10-071-0/+53
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Taken from QMF merge request #6 by Vitaly Repin: Current version of the QMF logging subsystem has the following issues: 1) Whenever application is linked against QMF, all the syslog messages are prefixed with QMF regardless of the application settings. E.g., Aug 31 00:25:16 vitnote QMF[4959]: [Critical] Test It makes it harder to identify the application which has printed specific message to syslog. It also overwrites the previous calls to "openlog" made by application which is impolite 2) It is not possible to enable/disable logging through syslog in runtime 3) It is not possible to log into file and stderr 4) Output of Q_ASSERT is not logged. In fact, QWarning(), qFatal(), qDebug() do not go to the log 5) Library installs the SIGHUP handler transparently for the application. It is bad because application might want to install its own handler for this signal and it could conflict with the library's logic. The patch attached for your review fixes the issues above. It also adds the following possibilities: - To log into file and stderr, controllable through the configuration file in runtime - To create chain of loggers if needed (e.g., output to file and stderr, to file and syslog etc). Chain of loggers is defined in run-time through configuration file. - Configuration file is per application. Not the only file for all the users of the library.
* Make ActionObserver synchronize after server restartespringe2010-09-301-0/+2
|
* Krazy code cleanupEric Springer2010-07-211-3/+3
| | | | Fix issues suggested by KDE's code checking tool "Krazy"
* When sending of a message failsDon Sanders2010-07-041-0/+2
| | | | | | | | | A) leave it in the outbox and continue sending other messages in the outbox. B) emit a messagesFailedTransmitted signal. API change QMailTransmitAction has new messagesFailedTransmitted signal. Task: NB#177952 NB#153703
* Adding QMailMessageObserver, a way of monitoring actionsEric Springer2010-07-021-0/+6
| | | | | BIG WARNING: This merely a demo. The entire API of it is about to (drastically) change, and will be in no way compatible.
* Update license files, so they are the same as Qt.Don Sanders2010-06-291-16/+16
| | | | | | | | Specifically remove out dated "or the Beta Release License Agreement" text. Remove redundant GPL paragaph. Update copyright to 2010.
* QTMOBILITY-181. Put headers for messageserver and qtopiamail libraries into ↵AleksW2010-04-201-0/+1
| | | | an 'include' directory on 'make install'
* Switch to using status to store temporary messagesespringe2010-03-161-0/+7
|
* Add interface for folder manipulation via message server.Eric Springer2009-12-091-0/+12
|
* Remove instances of 'Qt Software' from copyright info.MattV2009-11-231-1/+1
|
* Allow services to provide the flagMessages function.MattV2009-06-241-0/+4
|
* Update copyright header.2009W23MattV2009-06-051-3/+34
|
* Simplify the mail store initialization state interface.MattV2009-05-151-1/+1
|
* Add Message-ID field to message during SMTP transmisison.MattV2009-04-091-10/+2
| | | | | Also, update message and mark as read in SMTP plugin rather than relying on the MessageServer.
* Differentiate between content-available and partial-content-available.MattV2009-03-061-2/+2
|
* Remove ifdef'd QMAIL_QTOPIA code. Add missing testdata.Aleks Wojcik2009-03-051-24/+1
|
* Inital commit of QMF qt.Aleks Wojcik2009-03-051-0/+396