1. 26 Mar, 2020 1 commit
    • Daniel Vrátil's avatar
      FakeAkonadiServer: fix flushing notifications before test ends · 89fe563b
      Daniel Vrátil authored
      The flush is asynchronous so just calling dispatchNotifications() and terminating
      the event loop is not good enough, we need to call it before the event loop is
      terminated and we must wait for the notifications to be delivered otherwise we
      just can't be sure that they also reached the test code.
      89fe563b
  2. 02 Jan, 2020 1 commit
  3. 19 Jun, 2019 1 commit
  4. 27 Aug, 2018 1 commit
  5. 14 Jul, 2018 1 commit
  6. 21 Apr, 2018 1 commit
  7. 23 Apr, 2017 1 commit
    • Daniel Vrátil's avatar
      Generate Protocol from an XML specification (ABI break) · 5535d6e5
      Daniel Vrátil authored
      Instead of maintaining 12k lines of hand-written protocol code, we
      specify the protocol in an XML and use a custom-written generator
      that generates the code for us.
      
      It's not only much easier to modify the protocol - we only need to
      change a single thing in the XML instead of touching several places
      of the implementation - but it's also much safer, as there's less
      risk of accidentally introducing a bug in the code.
      
      The major difference between the original hand-written code and the
      generated code is that we no longer use QSharedDataPointer and virtual
      methods in the Private classes, but instead all members are directly
      in the command clas with most getters and setters inlined. This means
      that copying commands is quite costly, so we pass them around as
      QSharedPointers or const references. This should give us a tiny little
      bit more performance.
      5535d6e5
  8. 10 Jan, 2017 1 commit
  9. 06 Jan, 2017 1 commit
  10. 13 Oct, 2016 1 commit
  11. 14 Sep, 2016 1 commit
    • Daniel Vrátil's avatar
      Reduce collection statistics queries · c7944585
      Daniel Vrátil authored
      For certain cases we can now update the cached statistics in
      CollectionStatistics incrementally instead of invalidating the
      cache and querying DB to calculate it again. The calculation is
      rather expensive (one of the most expensive queries we have) and
      the time we spent recalculating the stats quickly adds up to secons.
      
      Currently we only support incremental stats update for flags change
      within a single collection and for appending new items which,
      especially in the second case, should notably reduce the amount of
      the super-heavy statistics queries.
      
      In any other case we currently fall-back to invalidating the cache
      and calculating the stats on demand.
      c7944585
  12. 15 Aug, 2016 1 commit
    • Daniel Vrátil's avatar
      Create a per-type ChangeNotification Protocol command · 040ce64b
      Daniel Vrátil authored
      Different entity types have different data, so sharing a single
      structure to describe changes in all entities is limiting. Having
      a single structure made sense when we only had Items and Collections
      which share most of the attributes and it was also easier to expose
      this via DBus.
      
      Now we are no longer limited by DBus so we can afford having a
      different Protocol command for each notification type. This will be
      most important when we introduce SubscriberChangeNotification, as
      subscriber changes would otherwise be hard to map onto the legacy
      ChangeNotification and is also the first step towards Notification
      Payloads.
      040ce64b
  13. 12 Jul, 2016 1 commit
  14. 17 Nov, 2015 1 commit
  15. 29 Jun, 2015 1 commit
    • Daniel Vrátil's avatar
      Send change notifications through the socket instead of DBus · 1876ae85
      Daniel Vrátil authored
      With the switch to binary protocol it's now easier to send over different
      kinds of messages, including change notifications. Using the socket and our
      straight-forward serialization instead of DBus marshalling and QtDBus type
      handling is much faster and more efficient. This should be especially notable
      during start when we sync resources and generate lots of uncompressable
      notifications. Previously this would hog the DBus daemon, but now we stream
      directly from Server to clients. Now it looks like the actual bottleneck are
      the applications and their event handling (yay! :)
      
      For now the subscription is still managed via a DBus interface, but eventually
      we could switch to using the connection not only to deliver notifications,
      but to manage the notification subscription as well.
      
      This change completely removes all Akonadi::NotificationMessage* and replaces
      them with Protocol::ChangeNotification (it's Protocol::Command, but the API
      is  based on Akonadi::NotificationMessageV3).
      
      When client sends LOGIN command, it can specify that the current session should
      be used as Notification bus - in such case NotificationManager will try to match
      the Connection object with respective NotificationSource based on the session
      and source identifiers. When NotificationSource emits a notification, it is
      send to the Connection's socket instead of being emitted on DBus.
      1876ae85
  16. 27 Aug, 2014 1 commit
  17. 18 Aug, 2014 1 commit
    • Christian Mollekopf's avatar
      Relations support · a92e98a3
      Christian Mollekopf authored
      Conflicts:
      	libs/notificationmessagev2.cpp
      	libs/notificationmessagev2_p.h
      	libs/notificationmessagev2_p_p.h
      	libs/notificationmessagev3.cpp
      	server/src/handler/fetchhelper.cpp
      	server/src/handler/fetchscope.cpp
      	server/src/handler/fetchscope.h
      	server/src/notificationsource.cpp
      	server/src/storage/datastore.cpp
      	server/src/storage/notificationcollector.cpp
      	server/src/storage/notificationcollector.h
      a92e98a3
  18. 31 Jul, 2014 1 commit
  19. 17 Feb, 2014 1 commit
    • Daniel Vrátil's avatar
      Wrap all classes in /server to Akonadi::Server namespace · c90b946d
      Daniel Vrátil authored
      Since we now support loading of plugins, having only Akonadi namespace
      might not be enough, as plugins can easily clash (like Akonadi::TagAttribute
      from Akonadi and from kdepimlibs). It will also make it easier to differentiate
      classes once both server and client libs are in the same repo in KF5.
      c90b946d
  20. 14 Feb, 2014 1 commit
  21. 08 Feb, 2014 1 commit
  22. 06 Feb, 2014 1 commit
  23. 31 Aug, 2013 1 commit
  24. 10 Mar, 2013 1 commit
  25. 07 Mar, 2013 1 commit
    • Daniel Vrátil's avatar
      Initial port of Akonadi server to new notifications · 69f57ef2
      Daniel Vrátil authored
      Internally, Akonadi server now uses NotificationMessageV2 which can,
      for specific operations, handle multiple items.
      
      The code needs to be optimized on several places and compression is
      not yet implemented, but legacy clients (i.e. clients that don't
      support the new format) work perfectly. There is no client that would
      support the new format, so that is not yet tested :-)
      69f57ef2
  26. 25 Feb, 2011 1 commit
  27. 30 Jul, 2010 1 commit
  28. 28 Jun, 2010 1 commit
  29. 02 Dec, 2009 1 commit
  30. 27 Jul, 2009 1 commit
  31. 19 Jun, 2009 1 commit
  32. 28 May, 2009 1 commit
  33. 22 Jan, 2009 1 commit
  34. 29 Oct, 2008 1 commit
    • Loic Marteau's avatar
      build fix · 6f7840fc
      Loic Marteau authored
      CCMAIL vkrause@kde.org
      
      svn path=/trunk/kdesupport/akonadi/; revision=877324
      6f7840fc
  35. 24 Aug, 2008 1 commit
  36. 23 Apr, 2008 1 commit
  37. 21 Mar, 2008 2 commits
  38. 28 Oct, 2007 2 commits