Skip to content
  • 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