-
v3 protected96f7fb68 · ·
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.