Skip to content
GDBus++ v3
==========

This release extends the API with a few more features and adds
several improvements.

* New feature - DBus::BusWatcher

  This provides an API to wait for a D-Bus service to appear or
  trigger an action if the service disappears from the D-Bus.
  This feature requires that a DBus::MainLoop is running.  See the
  tests/bus-watcher.cpp test program for an implementation example.

* Improvements in DBus::MainLoop

  DBus::MainLoop::Running() is a new method indicating if a main
  loop has been started or not.

  DBus::MainLoop::Wait() is another new helper method which can be
  used by other threads sharing the same DBus::MainLoop.  If the
  main loop has been started and is running, this method will
  block until the main loop stops running.

* Improvements in DBus::Proxy::Client and DBus::Proxy::Utils

  The Proxy::Client setup has been revamped to make it more robust
  and also more efficient.  Some of the current retry attempts
  already implemented was too short and it would fail too early
  before a D-Bus service would have had enough time to settle.
  There are some internal refactoring where
  Proxy::Utils::DBusServiceQuery::LookupService() is being used to
  check the service availability.

  Proxy::Utils::DBusServiceQuery::CheckServiceAvail() is also used
  instead of a too simple D-Bus service lookup in the
  DBus::Proxy::Client constructor.  This ensures a higher guarantee
  that the Proxy::Client will be functional afterwards.  If the
  service is already running, the constructor will complete its
  setup quicker.  And if it needs to wait, it will try more
  persistently to wait for the service to become available.

  DBus::Proxy::Exception() errors will now also contain more
  details about object properties, if interaction with properties
  failed.

* Improvement in glib2::Values::ExtractVector()

  When building the resulting C++ std::vector, the vector
  allocation is now done reserving the needed space early.
  This avoids the need to dynamically reallocate the vector
  as the GVariant array parsing is happening.