Merge lp:~thomas-voss/dbus-cpp/enable-dual-landings into lp:dbus-cpp

Proposed by Thomas Voß
Status: Merged
Approved by: Thomas Voß
Approved revision: 110
Merged at revision: 102
Proposed branch: lp:~thomas-voss/dbus-cpp/enable-dual-landings
Merge into: lp:dbus-cpp
Diff against target: 1472 lines (+519/-483)
32 files modified
CMakeLists.txt (+29/-4)
debian/VERSION (+1/-0)
debian/VERSION.vivid (+1/-0)
debian/bileto_pre_release_hook (+69/-0)
debian/changelog (+47/-0)
debian/control (+9/-3)
debian/control.in (+73/-0)
debian/get-versions.sh (+67/-0)
debian/libdbus-cpp5.symbols.32bit (+0/-198)
debian/libdbus-cpp5.symbols.64bit (+0/-199)
debian/libdbus-cpp5.symbols.amd64 (+0/-2)
debian/libdbus-cpp5.symbols.arm64 (+0/-2)
debian/libdbus-cpp5.symbols.armhf (+0/-2)
debian/libdbus-cpp5.symbols.coverage (+0/-5)
debian/libdbus-cpp5.symbols.i386 (+0/-2)
debian/libdbus-cpp5.symbols.powerpc (+0/-2)
debian/libdbus-cpp5.symbols.ppc64el (+0/-2)
debian/rules (+17/-1)
include/core/dbus/impl/object.h (+95/-34)
include/core/dbus/impl/property.h (+21/-0)
include/core/dbus/impl/signal.h (+8/-5)
include/core/dbus/message.h (+2/-0)
include/core/dbus/object.h (+8/-7)
include/core/dbus/property.h (+8/-0)
include/core/dbus/signal.h (+5/-2)
src/core/dbus/bus.cpp (+13/-1)
src/core/dbus/match_rule.cpp (+1/-8)
src/core/dbus/message.cpp (+19/-0)
src/core/dbus/service.cpp (+1/-1)
tests/async_execution_load_test.cpp (+1/-1)
tests/executor_test.cpp (+4/-2)
tests/message_test.cpp (+20/-0)
To merge this branch: bzr merge lp:~thomas-voss/dbus-cpp/enable-dual-landings
Reviewer Review Type Date Requested Status
Łukasz Zemczak packaging Approve
PS Jenkins bot continuous-integration Needs Fixing
Review via email: mp+278251@code.launchpad.net

Commit message

Enable dual landings for vivid and all later distributions (xenial at the time of this writing).

Description of the change

Enable dual landings for vivid and all later distributions (xenial at the time of this writing).

To post a comment you must log in.
105. By Thomas Voß on 2015-11-21

Add missing file.

Łukasz Zemczak (sil2100) wrote :

13:04 <sil2100> The only problem I see so far is with the versioning
13:05 <sil2100> Currently the train does not support dual-landing with two different
                versioning schemes
13:06 <sil2100> And when building for instance dbus-cpp with your script, the package
                version for both xenial and vivid will be 5.0.0, but the contents inside
                will have 4.3.0 for vivid and 5.0.0 for xenial
13:06 <sil2100> Meaning that the package version is lying and trying to tell
                vivid-overlay users that it's shipping a different version

Sadly, I'm not sure if this could be done from override_dh_auto_clean as the rest. For now the only idea I have is to support such cases in the CI Train, but that's just my first guess.

review: Needs Fixing (packaging)
106. By Thomas Voß on 2016-08-04

[ CI Train Bot ]
* debian/libdbus-cpp4.symbols.32bit: update to released version.
* debian/libdbus-cpp4.symbols.64bit: update to released version.
[ Thomas Voß ]
* Add a proper operator<< for dbus::Message::Type. (LP: #1524131)
* Only run dbus_shutdown if explicitly requested by env var. (LP:
  #1422304, #1526877)
[ CI Train Bot ]
* New rebuild forced.
[ Thomas Voß ]
* Ensure that Signal with non-void argument types correctly narrow
  their match rules. (LP: #1480877)

107. By Thomas Voß on 2016-08-04

Fix build on Y, accounting for toolchain bump.

108. By Thomas Voß on 2016-08-04

Switch to bileto_pre_release_hook

Łukasz Zemczak (sil2100) wrote :

One small inline-comment below. I was wondering where libdbus-cpp.vivid-soversion is used, as only libdbus-cpp.soversion seems to be parsed. I guess if we want to be correct, when DBUS_CPP_SOVERSION is defined the right version based on series should be used?

review: Needs Information
109. By Thomas Voß on 2016-08-05

Address reviewer comments.

110. By Thomas Voß on 2016-08-08

Make executor test more stable on slow builders.

Łukasz Zemczak (sil2100) wrote :

Ok, looks good now, just one really minor inline comment below. Of course the same thing remains: we need some abi compliance checking implemented when symbols files removal. This would need a bug assigned to someone before we can land that. ABI compliance will be even more important soon as we are starting to migrate things from universe to main for ubuntu-touch, and a library without symbol files is unlikely to go through the MIR process smoothly.

That being said, if my comments will be addressed (the inline one and the bug about ABI-checking), this merge is good to go.

review: Approve (packaging)

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'CMakeLists.txt'
2--- CMakeLists.txt 2015-10-20 15:27:46 +0000
3+++ CMakeLists.txt 2016-08-08 09:17:09 +0000
4@@ -18,6 +18,35 @@
5
6 project(dbus-cpp)
7
8+# We haven't received version information via the packaging setup.
9+# For that, we try to determine sensible values on our own, ensuring
10+# plain old invocations to cmake still work as expected.
11+if (NOT DEFINED DBUS_CPP_VERSION_MAJOR)
12+ find_program(LSB_RELEASE lsb_release)
13+ execute_process(
14+ COMMAND ${LSB_RELEASE} -c -s
15+ OUTPUT_VARIABLE DISTRO_CODENAME
16+ OUTPUT_STRIP_TRAILING_WHITESPACE)
17+
18+ # We explicitly ignore errors and only check if we are building for vivid.
19+ # For all other cases:
20+ # - releases other than vivid
21+ # - other distros
22+ # - errors
23+ # we define the version to be 2.0.0
24+ if (${DISTRO_CODENAME} STREQUAL "vivid")
25+ set(DBUS_CPP_VERSION_MAJOR 4)
26+ set(DBUS_CPP_VERSION_MINOR 3)
27+ set(DBUS_CPP_VERSION_PATCH 0)
28+ else ()
29+ set(DBUS_CPP_VERSION_MAJOR 5)
30+ set(DBUS_CPP_VERSION_MINOR 0)
31+ set(DBUS_CPP_VERSION_PATCH 0)
32+ endif()
33+endif()
34+
35+message(STATUS "${CMAKE_PROJECT_NAME} ${DBUS_CPP_VERSION_MAJOR}.${DBUS_CPP_VERSION_MINOR}.${DBUS_CPP_VERSION_PATCH}")
36+
37 find_package(Boost COMPONENTS filesystem program_options system REQUIRED)
38 find_package(LibXml2 REQUIRED)
39 find_package(PkgConfig REQUIRED)
40@@ -61,10 +90,6 @@
41 SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -ftest-coverage -fprofile-arcs" )
42 ENDIF(CMAKE_BUILD_TYPE MATCHES [cC][oO][vV][eE][rR][aA][gG][eE])
43
44-set(DBUS_CPP_VERSION_MAJOR 5)
45-set(DBUS_CPP_VERSION_MINOR 0)
46-set(DBUS_CPP_VERSION_PATCH 0)
47-
48 include(CTest)
49
50 include_directories(
51
52=== added file 'debian/VERSION'
53--- debian/VERSION 1970-01-01 00:00:00 +0000
54+++ debian/VERSION 2016-08-08 09:17:09 +0000
55@@ -0,0 +1,1 @@
56+5.0.0
57\ No newline at end of file
58
59=== added file 'debian/VERSION.vivid'
60--- debian/VERSION.vivid 1970-01-01 00:00:00 +0000
61+++ debian/VERSION.vivid 2016-08-08 09:17:09 +0000
62@@ -0,0 +1,1 @@
63+4.3.0
64\ No newline at end of file
65
66=== added file 'debian/bileto_pre_release_hook'
67--- debian/bileto_pre_release_hook 1970-01-01 00:00:00 +0000
68+++ debian/bileto_pre_release_hook 2016-08-08 09:17:09 +0000
69@@ -0,0 +1,69 @@
70+#!/bin/sh
71+
72+# Copyright (C) 2015 Canonical Ltd
73+#
74+# This program is free software: you can redistribute it and/or modify
75+# it under the terms of the GNU Lesser General Public License version 3 as
76+# published by the Free Software Foundation.
77+#
78+# This program is distributed in the hope that it will be useful,
79+# but WITHOUT ANY WARRANTY; without even the implied warranty of
80+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
81+# GNU Lesser General Public License for more details.
82+#
83+# You should have received a copy of the GNU Lesser General Public License
84+# along with this program. If not, see <http://www.gnu.org/licenses/>.
85+#
86+# Authored by: Michi Henning <michi.henning@canonical.com>
87+# Thomas Voß <thomas.voss@canonical.com>
88+# Robert Bruce Park <robert.park@canonical.com>
89+
90+#
91+# Script to generate debian files for dual landing in Vivid (gcc 4.9 ABI)
92+# and Wily and later (gcc 5 ABI).
93+#
94+# This script is called from debian/rules and generates:
95+#
96+# - control
97+# - libdbus-cpp{soversion}.install
98+#
99+# For all but control, this is a straight substition and/or renaming exercise for each file.
100+#
101+
102+set -e # Fail if any command fails.
103+
104+progname=$(basename $0)
105+
106+[ $# -gt 1 ] && {
107+ echo "usage: $progname [path-to-debian-dir]" >&2
108+ exit 1
109+}
110+dir=$1
111+version_dir=$(mktemp -d)
112+
113+[ -n "$dir" ] || dir="./debian"
114+[ -n "$SERIES" ] || SERIES="$(lsb_release -c -s)"
115+
116+# Dump version numbers into files and initialize vars from those files.
117+sh ${dir}/get-versions.sh ${dir} ${version_dir}
118+
119+export DBUS_CPP_SOVERSION=$(cat $version_dir/libdbus-cpp.soversion)
120+
121+trap "rm -fr $version_dir" 0 INT TERM QUIT
122+
123+process()
124+{
125+ cat <<EOF
126+# This file is autogenerated. DO NOT EDIT!
127+#
128+# Modifications should be made to $(basename "$1") instead.
129+# This file is regenerated automatically in the clean target.
130+#
131+EOF
132+ perl -pe 's/@([A-Z_]+)@/$ENV{$1} or die "$1 undefined"/eg' <"$1"
133+}
134+
135+process "$dir/control.in" >"$dir/control"
136+process "$dir/libdbus-cpp.install.in" > "$dir/libdbus-cpp${DBUS_CPP_SOVERSION}.install"
137+
138+exit 0
139\ No newline at end of file
140
141=== modified file 'debian/changelog'
142--- debian/changelog 2015-10-22 07:17:01 +0000
143+++ debian/changelog 2016-08-08 09:17:09 +0000
144@@ -23,6 +23,53 @@
145
146 -- Thomas Voß <thomas.voss@canonical.com> Tue, 21 Jul 2015 12:36:46 +0200
147
148+dbus-cpp (4.3.0+15.04.20160114.2-0ubuntu1) vivid; urgency=medium
149+
150+ [ CI Train Bot ]
151+ * debian/libdbus-cpp4.symbols.32bit: update to released version.
152+ * debian/libdbus-cpp4.symbols.64bit: update to released version.
153+
154+ [ Thomas Voß ]
155+ * Add a proper operator<< for dbus::Message::Type. (LP: #1524131)
156+
157+ -- Thomas Voß <ci-train-bot@canonical.com> Thu, 14 Jan 2016 21:51:19 +0000
158+
159+dbus-cpp (4.3.0+15.04.20160112-0ubuntu1) vivid; urgency=medium
160+
161+ * Only run dbus_shutdown if explicitly requested by env var. (LP:
162+ #1422304, #1526877)
163+
164+ -- Thomas Voß <ci-train-bot@canonical.com> Tue, 12 Jan 2016 16:28:02 +0000
165+
166+dbus-cpp (4.3.0+15.04.20151126-0ubuntu1) vivid; urgency=medium
167+
168+ [ CI Train Bot ]
169+ * New rebuild forced.
170+
171+ [ Thomas Voß ]
172+ * Ensure that Signal with non-void argument types correctly narrow
173+ their match rules. (LP: #1480877)
174+
175+ -- Thomas Voß <ci-train-bot@canonical.com> Thu, 26 Nov 2015 07:31:37 +0000
176+
177+dbus-cpp (4.3.0+15.04.20151023-0ubuntu1) vivid; urgency=medium
178+
179+ [ CI Train Bot ]
180+ * New rebuild forced.
181+
182+ [ Thomas Voß ]
183+ * Do not cache emitted values for stub signals. (LP: #1509285)
184+
185+ -- Jim Hodapp <ci-train-bot@canonical.com> Fri, 23 Oct 2015 10:01:27 +0000
186+
187+dbus-cpp (4.3.0+15.04.20151020-0ubuntu1) vivid; urgency=medium
188+
189+ [ Manuel de la Pena ]
190+ * Ensure that the signals are correctly emitted for when the services
191+ appear and go.
192+
193+ -- Thomas Voß <ci-train-bot@canonical.com> Tue, 20 Oct 2015 10:55:11 +0000
194+
195 dbus-cpp (4.3.0+15.04.20150505-0ubuntu1) vivid; urgency=medium
196
197 [ CI Train Bot ]
198
199=== modified file 'debian/control'
200--- debian/control 2015-07-21 10:37:34 +0000
201+++ debian/control 2016-08-08 09:17:09 +0000
202@@ -1,3 +1,8 @@
203+# This file is autogenerated. DO NOT EDIT!
204+#
205+# Modifications should be made to control.in instead.
206+# This file is regenerated automatically in the clean target.
207+#
208 Source: dbus-cpp
209 Priority: optional
210 Maintainer: Thomas Voß <thomas.voss@ubuntu.com>
211@@ -14,6 +19,7 @@
212 libprocess-cpp-dev,
213 libproperties-cpp-dev,
214 libxml2-dev,
215+ lsb-release,
216 Standards-Version: 3.9.5
217 Section: libs
218 Homepage: http://launchpad.net/dbus-cpp
219@@ -22,7 +28,7 @@
220 Vcs-Bzr: https://code.launchpad.net/~phablet-team/dbus-cpp/trunk
221 Vcs-Browser: http://bazaar.launchpad.net/~phablet-team/dbus-cpp/trunk/files
222
223-Package: libdbus-cpp5
224+Package: libdbus-cpp4
225 Section: libdevel
226 Architecture: any
227 Multi-Arch: same
228@@ -39,7 +45,7 @@
229 Multi-Arch: foreign
230 Depends: ${misc:Depends},
231 ${shlibs:Depends},
232- libdbus-cpp5 (= ${binary:Version})
233+ libdbus-cpp4 (= ${binary:Version})
234 Description: header-only dbus-binding leveraging C++-11
235 Protocol compiler and generator to automatically generate protocol headers from
236 introspection XML.
237@@ -51,7 +57,7 @@
238 Depends: ${misc:Depends},
239 ${shlibs:Depends},
240 dbus,
241- libdbus-cpp5 (= ${binary:Version})
242+ libdbus-cpp4 (= ${binary:Version})
243 Replaces: dbus-cpp-dev
244 Conflicts: dbus-cpp-dev
245 Provides: dbus-cpp-dev
246
247=== added file 'debian/control.in'
248--- debian/control.in 1970-01-01 00:00:00 +0000
249+++ debian/control.in 2016-08-08 09:17:09 +0000
250@@ -0,0 +1,73 @@
251+Source: dbus-cpp
252+Priority: optional
253+Maintainer: Thomas Voß <thomas.voss@ubuntu.com>
254+Build-Depends: cmake,
255+ dbus,
256+ debhelper (>= 9),
257+ doxygen,
258+ google-mock,
259+ libboost-filesystem-dev,
260+ libboost-system-dev,
261+ libboost-program-options-dev,
262+ libdbus-1-dev,
263+ libgtest-dev,
264+ libprocess-cpp-dev,
265+ libproperties-cpp-dev,
266+ libxml2-dev,
267+ lsb-release,
268+Standards-Version: 3.9.5
269+Section: libs
270+Homepage: http://launchpad.net/dbus-cpp
271+# If you aren't a member of ~phablet-team but need to upload packaging changes,
272+# just go ahead. ~phablet-team will notice and sync up the code again.
273+Vcs-Bzr: https://code.launchpad.net/~phablet-team/dbus-cpp/trunk
274+Vcs-Browser: http://bazaar.launchpad.net/~phablet-team/dbus-cpp/trunk/files
275+
276+Package: libdbus-cpp@DBUS_CPP_SOVERSION@
277+Section: libdevel
278+Architecture: any
279+Multi-Arch: same
280+Depends: ${misc:Depends},
281+ ${shlibs:Depends},
282+Description: header-only dbus-binding leveraging C++-11
283+ A header-only dbus-binding leveraging C++-11, relying on compile-time
284+ polymorphism to integrate with arbitrary type systems. Runtime portions to bind
285+ to different event loops.
286+
287+Package: dbus-cpp-bin
288+Section: libdevel
289+Architecture: any
290+Multi-Arch: foreign
291+Depends: ${misc:Depends},
292+ ${shlibs:Depends},
293+ libdbus-cpp@DBUS_CPP_SOVERSION@ (= ${binary:Version})
294+Description: header-only dbus-binding leveraging C++-11
295+ Protocol compiler and generator to automatically generate protocol headers from
296+ introspection XML.
297+
298+Package: libdbus-cpp-dev
299+Section: libdevel
300+Architecture: any
301+Multi-Arch: same
302+Depends: ${misc:Depends},
303+ ${shlibs:Depends},
304+ dbus,
305+ libdbus-cpp@DBUS_CPP_SOVERSION@ (= ${binary:Version})
306+Replaces: dbus-cpp-dev
307+Conflicts: dbus-cpp-dev
308+Provides: dbus-cpp-dev
309+Description: header-only dbus-binding leveraging C++-11
310+ A header-only dbus-binding leveraging C++-11, relying on compile-time
311+ polymorphism to integrate with arbitrary type systems.
312+
313+Package: dbus-cpp-dev-examples
314+Section: x11
315+Architecture: any
316+Multi-Arch: same
317+Depends: ${misc:Depends},
318+ ${shlibs:Depends},
319+Description: header-only dbus-binding leveraging C++-11, example binaries
320+ A header-only dbus-binding leveraging C++-11, relying on compile-time
321+ polymorphism to integrate with arbitrary type systems.
322+ .
323+ This package provides examples.
324
325=== added file 'debian/get-versions.sh'
326--- debian/get-versions.sh 1970-01-01 00:00:00 +0000
327+++ debian/get-versions.sh 2016-08-08 09:17:09 +0000
328@@ -0,0 +1,67 @@
329+#!/bin/sh
330+
331+# Copyright (C) 2015 Canonical Ltd
332+#
333+# This program is free software: you can redistribute it and/or modify
334+# it under the terms of the GNU Lesser General Public License version 3 as
335+# published by the Free Software Foundation.
336+#
337+# This program is distributed in the hope that it will be useful,
338+# but WITHOUT ANY WARRANTY; without even the implied warranty of
339+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
340+# GNU Lesser General Public License for more details.
341+#
342+# You should have received a copy of the GNU Lesser General Public License
343+# along with this program. If not, see <http://www.gnu.org/licenses/>.
344+#
345+# Authored by: Michi Henning <michi.henning@canonical.com>
346+
347+#
348+# Script to read the version numbers from VERSION and QT-VERSION
349+# and write the version components and the soversion numbers
350+# into separate files, so we can pick them up from both
351+# gen-debian-files.sh and CMakeLists.txt.
352+#
353+
354+set -e # Fail if any command fails.
355+
356+progname=$(basename $0)
357+
358+[ $# -lt 1 -o $# -gt 2 ] && {
359+ echo "usage: $progname path-to-debian-dir [output-dir]" >&2
360+ exit 1
361+}
362+dir=$1
363+output_dir=`pwd`
364+[ $# -eq 2 ] && output_dir=$2
365+
366+# Write the various version numbers into a bunch of files. This allows
367+# us to easily pick them up from both gen-debian-files.sh and CMakeLists.txt.
368+
369+distro=$(lsb_release -c -s)
370+
371+full_version=$(cat "${dir}"/VERSION)
372+
373+major=$(echo $full_version | cut -d'.' -f1)
374+minor=$(echo $full_version | cut -d'.' -f2)
375+micro=$(echo $full_version | cut -d'.' -f3)
376+major_minor="${major}.${minor}"
377+
378+vivid_full_version=$(cat "${dir}"/VERSION.vivid)
379+vivid_major=$(echo $vivid_full_version | cut -d'.' -f1)
380+vivid_soversion=$vivid_major
381+
382+if [ "$distro" = "vivid" ]
383+then
384+ soversion=${vivid_soversion}
385+else
386+ soversion="${major}"
387+fi
388+[ -n $soversion ]
389+
390+echo ${full_version} >${output_dir}/libdbus-cpp.full-version
391+echo ${major} >${output_dir}/libdbus-cpp.major-version
392+echo ${minor} >${output_dir}/libdbus-cpp.minor-version
393+echo ${micro} >${output_dir}/libdbus-cpp.micro-version
394+echo ${major_minor} >${output_dir}/libdbus-cpp.major-minor-version
395+echo ${soversion} >${output_dir}/libdbus-cpp.soversion
396
397=== renamed file 'debian/libdbus-cpp5.install' => 'debian/libdbus-cpp.install.in'
398=== removed file 'debian/libdbus-cpp5.symbols.32bit'
399--- debian/libdbus-cpp5.symbols.32bit 2015-10-21 08:00:49 +0000
400+++ debian/libdbus-cpp5.symbols.32bit 1970-01-01 00:00:00 +0000
401@@ -1,198 +0,0 @@
402- (c++)"core::dbus::Fixture::system_bus_address[abi:cxx11]()@Base" 4.3.0+15.04.20150505
403- (c++)"core::dbus::Fixture::session_bus_address[abi:cxx11]()@Base" 4.3.0+15.04.20150505
404- (c++)"core::dbus::Fixture::default_daemon_timeout()@Base" 4.0.0+14.10.20140730
405- (c++)"core::dbus::asio::make_executor(std::shared_ptr<core::dbus::Bus> const&)@Base" 2.0.0+14.04.20140310
406- (c++)"core::dbus::asio::make_executor(std::shared_ptr<core::dbus::Bus> const&, boost::asio::io_service&)@Base" 3.1.0+14.10.20140711
407- (c++)"core::dbus::Bus::access_signal_router()@Base" 2.0.0+14.04.20140310
408- (c++)"core::dbus::Bus::add_match(core::dbus::MatchRule const&)@Base" 2.0.0+14.04.20140310
409- (c++)"core::dbus::Bus::~Bus()@Base" 2.0.0+14.04.20140310
410- (c++)"core::dbus::Bus::Bus(core::dbus::WellKnownBus)@Base" 2.0.0+14.04.20140310
411- (c++)"core::dbus::Bus::Bus(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 2.0.0+14.04.20140310
412- (c++)"core::dbus::Bus::handle_message(std::shared_ptr<core::dbus::Message> const&)@Base" 2.0.0+14.04.20140310
413- (c++)"core::dbus::Bus::has_owner_for_name(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 2.0.0+14.04.20140310
414- (c++)"core::dbus::Bus::install_executor(std::shared_ptr<core::dbus::Executor> const&)@Base" 2.0.0+14.04.20140310
415- (c++)"core::dbus::Bus::message_factory()@Base" 2.0.0+14.04.20140310
416- (c++)"core::dbus::Bus::Name::as_string[abi:cxx11]() const@Base" 2.0.0+14.04.20140310
417- (c++)"core::dbus::Bus::Name::Name(core::dbus::Bus::Name&&)@Base" 2.0.0+14.04.20140310
418- (c++)"core::dbus::Bus::Name::Name(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 2.0.0+14.04.20140310
419- (c++)"core::dbus::Bus::Name::operator=(core::dbus::Bus::Name&&)@Base" 2.0.0+14.04.20140310
420- (c++)"core::dbus::Bus::raw() const@Base" 2.0.0+14.04.20140310
421- (c++)"core::dbus::Bus::register_object_for_path(core::dbus::types::ObjectPath const&, std::shared_ptr<core::dbus::Object> const&)@Base" 2.0.0+14.04.20140310
422- (c++)"core::dbus::Bus::release_name_on_bus(core::dbus::Bus::Name&&)@Base" 2.0.0+14.04.20140310
423- (c++)"core::dbus::Bus::remove_match(core::dbus::MatchRule const&)@Base" 2.0.0+14.04.20140310
424- (c++)"core::dbus::Bus::request_name_on_bus(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, core::dbus::Bus::RequestNameFlag)@Base" 2.0.0+14.04.20140310
425- (c++)"core::dbus::Bus::run()@Base" 2.0.0+14.04.20140310
426- (c++)"core::dbus::Bus::send(std::shared_ptr<core::dbus::Message> const&)@Base" 2.0.0+14.04.20140310
427- (c++)"core::dbus::Bus::send_with_reply_and_block_for_at_most(std::shared_ptr<core::dbus::Message> const&, std::chrono::duration<long long, std::ratio<1ll, 1000ll> > const&)@Base" 2.0.0+14.04.20140310
428- (c++)"core::dbus::Bus::send_with_reply_and_timeout(std::shared_ptr<core::dbus::Message> const&, std::chrono::duration<long long, std::ratio<1ll, 1000ll> > const&)@Base" 2.0.0+14.04.20140310
429- (c++)"core::dbus::Bus::stop()@Base" 2.0.0+14.04.20140310
430- (c++)"core::dbus::Bus::unregister_object_path(core::dbus::types::ObjectPath const&)@Base" 2.0.0+14.04.20140310
431- (c++)"core::dbus::DBus::DBus(std::shared_ptr<core::dbus::Bus> const&)@Base" 2.0.0+14.04.20140310
432- (c++)"core::dbus::DBus::GetConnectionUnixProcessID::name[abi:cxx11]()::s@Base" 2.0.0+14.04.20140310
433- (c++)"core::dbus::DBus::get_connection_unix_process_id(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const@Base" 2.0.0+14.04.20140310
434- (c++)"core::dbus::DBus::GetConnectionUnixUser::name[abi:cxx11]()::s@Base" 2.0.0+14.04.20140310
435- (c++)"core::dbus::DBus::get_connection_unix_user(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const@Base" 2.0.0+14.04.20140310
436- (c++)"core::dbus::DBus::hello[abi:cxx11]() const@Base" 2.0.0+14.04.20140310
437- (c++)"core::dbus::DBus::Hello::name[abi:cxx11]()::s@Base" 2.0.0+14.04.20140310
438- (c++)"core::dbus::DBus::interface[abi:cxx11]()@Base" 2.0.0+14.04.20140310
439- (c++)"core::dbus::DBus::list_names[abi:cxx11]() const@Base" 2.0.0+14.04.20140310
440- (c++)"core::dbus::DBus::ListNames::name[abi:cxx11]()::s@Base" 2.0.0+14.04.20140310
441- (c++)"core::dbus::DBus::make_service_watcher(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, core::dbus::DBus::WatchMode)@Base" 2.0.0+14.04.20140310
442- (c++)"core::dbus::DBus::name[abi:cxx11]()@Base" 2.0.0+14.04.20140310
443- (c++)"core::dbus::DBus::path()@Base" 2.0.0+14.04.20140310
444- (c++)"core::dbus::Error::~Error()@Base" 2.0.0+14.04.20140310
445- (c++)"core::dbus::Error::Error()@Base" 2.0.0+14.04.20140310
446- (c++)"core::dbus::Error::Error(core::dbus::Error&&)@Base" 2.0.0+14.04.20140310
447- (c++)"core::dbus::Error::message[abi:cxx11]() const@Base" 2.0.0+14.04.20140310
448- (c++)"core::dbus::Error::name[abi:cxx11]() const@Base" 2.0.0+14.04.20140310
449- (c++)"core::dbus::Error::operator bool() const@Base" 2.0.0+14.04.20140310
450- (c++)"core::dbus::Error::operator=(core::dbus::Error&&)@Base" 2.0.0+14.04.20140310
451- (c++)"core::dbus::Error::print[abi:cxx11]() const@Base" 2.0.0+14.04.20140310
452- (c++)"core::dbus::Error::raw()@Base" 2.0.0+14.04.20140310
453- (c++)"core::dbus::Fixture::create_connection_to_session_bus()@Base" 2.0.0+14.04.20140310
454- (c++)"core::dbus::Fixture::create_connection_to_system_bus()@Base" 2.0.0+14.04.20140310
455- (c++)"core::dbus::Fixture::default_session_bus_config_file[abi:cxx11]()@Base" 2.0.0+14.04.20140310
456- (c++)"core::dbus::Fixture::default_system_bus_config_file[abi:cxx11]()@Base" 2.0.0+14.04.20140310
457- (c++)"core::dbus::Fixture::~Fixture()@Base" 2.0.0+14.04.20140310
458- (c++)"core::dbus::Fixture::Fixture(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 2.0.0+14.04.20140310
459- (c++)"core::dbus::MatchRule::args(std::vector<std::pair<unsigned int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<unsigned int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > const&)@Base" 2.0.0+14.04.20140310
460- (c++)"core::dbus::MatchRule::args(std::vector<std::pair<unsigned int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<unsigned int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > const&) const@Base" 2.0.0+14.04.20140310
461- (c++)"core::dbus::MatchRule::as_string[abi:cxx11]() const@Base" 2.0.0+14.04.20140310
462- (c++)"core::dbus::MatchRule::interface(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 2.0.0+14.04.20140310
463- (c++)"core::dbus::MatchRule::interface(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const@Base" 2.0.0+14.04.20140310
464- (c++)"core::dbus::MatchRule::~MatchRule()@Base" 2.0.0+14.04.20140310
465- (c++)"core::dbus::MatchRule::MatchRule()@Base" 2.0.0+14.04.20140310
466- (c++)"core::dbus::MatchRule::MatchRule(core::dbus::MatchRule const&)@Base" 2.0.0+14.04.20140310
467- (c++)"core::dbus::MatchRule::member(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 2.0.0+14.04.20140310
468- (c++)"core::dbus::MatchRule::member(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const@Base" 2.0.0+14.04.20140310
469- (c++)"core::dbus::MatchRule::operator=(core::dbus::MatchRule const&)@Base" 2.0.0+14.04.20140310
470- (c++)"core::dbus::MatchRule::path(core::dbus::types::ObjectPath const&)@Base" 2.0.0+14.04.20140310
471- (c++)"core::dbus::MatchRule::path(core::dbus::types::ObjectPath const&) const@Base" 2.0.0+14.04.20140310
472- (c++)"core::dbus::MatchRule::sender(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 2.0.0+14.04.20140310
473- (c++)"core::dbus::MatchRule::sender(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const@Base" 2.0.0+14.04.20140310
474- (c++)"core::dbus::MatchRule::type(core::dbus::Message::Type)@Base" 2.0.0+14.04.20140310
475- (c++)"core::dbus::MatchRule::type(core::dbus::Message::Type) const@Base" 2.0.0+14.04.20140310
476- (c++)"core::dbus::Message::clone()@Base" 2.0.0+14.04.20140310
477- (c++)"core::dbus::Message::destination[abi:cxx11]() const@Base" 2.0.0+14.04.20140310
478- (c++)"core::dbus::Message::ensure_serial_larger_than_zero_for_testing()@Base" 2.0.0+14.04.20140310
479- (c++)"core::dbus::Message::error() const@Base" 2.0.0+14.04.20140310
480- (c++)"core::dbus::Message::expects_reply() const@Base" 2.0.0+14.04.20140310
481- (c++)"core::dbus::Message::from_raw_message(DBusMessage*)@Base" 2.0.0+14.04.20140310
482- (c++)"core::dbus::Message::interface[abi:cxx11]() const@Base" 2.0.0+14.04.20140310
483- (c++)"core::dbus::Message::make_error(std::shared_ptr<core::dbus::Message> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 2.0.0+14.04.20140310
484- (c++)"core::dbus::Message::make_method_call(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, core::dbus::types::ObjectPath const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 2.0.0+14.04.20140310
485- (c++)"core::dbus::Message::make_method_return(std::shared_ptr<core::dbus::Message> const&)@Base" 2.0.0+14.04.20140310
486- (c++)"core::dbus::Message::make_signal(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 2.0.0+14.04.20140310
487- (c++)"core::dbus::Message::member[abi:cxx11]() const@Base" 2.0.0+14.04.20140310
488- (c++)"core::dbus::Message::~Message()@Base" 2.0.0+14.04.20140310
489- (c++)"core::dbus::Message::Message(std::unique_ptr<core::dbus::Message::Private, std::default_delete<core::dbus::Message::Private> >)@Base" 2.0.0+14.04.20140310
490- (c++)"core::dbus::Message::path() const@Base" 2.0.0+14.04.20140310
491- (c++)"core::dbus::Message::Reader::access_message()@Base" 2.0.0+14.04.20140310
492- (c++)"core::dbus::Message::reader()@Base" 2.0.0+14.04.20140310
493- (c++)"core::dbus::Message::Reader::operator=(core::dbus::Message::Reader&&)@Base" 2.0.0+14.04.20140310
494- (c++)"core::dbus::Message::Reader::pop_array()@Base" 2.0.0+14.04.20140310
495- (c++)"core::dbus::Message::Reader::pop()@Base" 2.0.0+14.04.20140310
496- (c++)"core::dbus::Message::Reader::pop_boolean()@Base" 2.0.0+14.04.20140310
497- (c++)"core::dbus::Message::Reader::pop_byte()@Base" 2.0.0+14.04.20140310
498- (c++)"core::dbus::Message::Reader::pop_dict_entry()@Base" 2.0.0+14.04.20140310
499- (c++)"core::dbus::Message::Reader::pop_floating_point()@Base" 2.0.0+14.04.20140310
500- (c++)"core::dbus::Message::Reader::pop_int16()@Base" 2.0.0+14.04.20140310
501- (c++)"core::dbus::Message::Reader::pop_int32()@Base" 2.0.0+14.04.20140310
502- (c++)"core::dbus::Message::Reader::pop_int64()@Base" 2.0.0+14.04.20140310
503- (c++)"core::dbus::Message::Reader::pop_object_path()@Base" 2.0.0+14.04.20140310
504- (c++)"core::dbus::Message::Reader::pop_signature()@Base" 2.0.0+14.04.20140310
505- (c++)"core::dbus::Message::Reader::pop_string()@Base" 2.0.0+14.04.20140310
506- (c++)"core::dbus::Message::Reader::pop_structure()@Base" 2.0.0+14.04.20140310
507- (c++)"core::dbus::Message::Reader::pop_uint16()@Base" 2.0.0+14.04.20140310
508- (c++)"core::dbus::Message::Reader::pop_uint32()@Base" 2.0.0+14.04.20140310
509- (c++)"core::dbus::Message::Reader::pop_uint64()@Base" 2.0.0+14.04.20140310
510- (c++)"core::dbus::Message::Reader::pop_unix_fd()@Base" 2.0.0+14.04.20140310
511- (c++)"core::dbus::Message::Reader::pop_variant()@Base" 2.0.0+14.04.20140310
512- (c++)"core::dbus::Message::Reader::~Reader()@Base" 2.0.0+14.04.20140310
513- (c++)"core::dbus::Message::Reader::Reader()@Base" 2.0.0+14.04.20140310
514- (c++)"core::dbus::Message::Reader::Reader(core::dbus::Message::Reader&&)@Base" 2.0.0+14.04.20140310
515- (c++)"core::dbus::Message::Reader::Reader(std::shared_ptr<core::dbus::Message> const&)@Base" 2.0.0+14.04.20140310
516- (c++)"core::dbus::Message::Reader::type() const@Base" 2.0.0+14.04.20140310
517- (c++)"core::dbus::Message::sender[abi:cxx11]() const@Base" 2.0.0+14.04.20140310
518- (c++)"core::dbus::Message::signature[abi:cxx11]() const@Base" 2.0.0+14.04.20140310
519- (c++)"core::dbus::Message::type() const@Base" 2.0.0+14.04.20140310
520- (c++)"core::dbus::Message::writer()@Base" 2.0.0+14.04.20140310
521- (c++)"core::dbus::Message::Writer::close_array(core::dbus::Message::Writer)@Base" 2.0.0+14.04.20140310
522- (c++)"core::dbus::Message::Writer::close_dict_entry(core::dbus::Message::Writer)@Base" 2.0.0+14.04.20140310
523- (c++)"core::dbus::Message::Writer::close_structure(core::dbus::Message::Writer)@Base" 2.0.0+14.04.20140310
524- (c++)"core::dbus::Message::Writer::close_variant(core::dbus::Message::Writer)@Base" 2.0.0+14.04.20140310
525- (c++)"core::dbus::Message::Writer::open_array(core::dbus::types::Signature const&)@Base" 2.0.0+14.04.20140310
526- (c++)"core::dbus::Message::Writer::open_dict_entry()@Base" 2.0.0+14.04.20140310
527- (c++)"core::dbus::Message::Writer::open_structure()@Base" 2.0.0+14.04.20140310
528- (c++)"core::dbus::Message::Writer::open_variant(core::dbus::types::Signature const&)@Base" 2.0.0+14.04.20140310
529- (c++)"core::dbus::Message::Writer::operator=(core::dbus::Message::Writer&&)@Base" 2.0.0+14.04.20140310
530- (c++)"core::dbus::Message::Writer::push_boolean(bool)@Base" 2.0.0+14.04.20140310
531- (c++)"core::dbus::Message::Writer::push_byte(signed char)@Base" 2.0.0+14.04.20140310
532- (c++)"core::dbus::Message::Writer::push_floating_point(double)@Base" 2.0.0+14.04.20140310
533- (c++)"core::dbus::Message::Writer::push_int16(short)@Base" 2.0.0+14.04.20140310
534- (c++)"core::dbus::Message::Writer::push_int32(int)@Base" 2.0.0+14.04.20140310
535- (c++)"core::dbus::Message::Writer::push_int64(long long)@Base" 2.0.0+14.04.20140310
536- (c++)"core::dbus::Message::Writer::push_object_path(core::dbus::types::ObjectPath const&)@Base" 2.0.0+14.04.20140310
537- (c++)"core::dbus::Message::Writer::push_signature(core::dbus::types::Signature const&)@Base" 2.0.0+14.04.20140310
538- (c++)"core::dbus::Message::Writer::push_stringn(char const*, unsigned int)@Base" 2.0.0+14.04.20140310
539- (c++)"core::dbus::Message::Writer::push_uint16(unsigned short)@Base" 2.0.0+14.04.20140310
540- (c++)"core::dbus::Message::Writer::push_uint32(unsigned int)@Base" 2.0.0+14.04.20140310
541- (c++)"core::dbus::Message::Writer::push_uint64(unsigned long long)@Base" 2.0.0+14.04.20140310
542- (c++)"core::dbus::Message::Writer::push_unix_fd(core::dbus::types::UnixFd const&)@Base" 2.0.0+14.04.20140310
543- (c++)"core::dbus::Message::Writer::~Writer()@Base" 2.0.0+14.04.20140310
544- (c++)"core::dbus::Message::Writer::Writer(core::dbus::Message::Writer&&)@Base" 2.0.0+14.04.20140310
545- (c++)"core::dbus::Message::Writer::Writer(std::shared_ptr<core::dbus::Message> const&)@Base" 2.0.0+14.04.20140310
546- (c++)"core::dbus::Service::add_match(core::dbus::MatchRule const&)@Base" 2.0.0+14.04.20140310
547- (c++)"core::dbus::Service::add_object_for_path(core::dbus::types::ObjectPath const&)@Base" 2.0.0+14.04.20140310
548- (c++)"core::dbus::Service::get_connection() const@Base" 2.0.0+14.04.20140310
549- (c++)"core::dbus::Service::get_name[abi:cxx11]() const@Base" 2.0.0+14.04.20140310
550- (c++)"core::dbus::Service::is_stub() const@Base" 2.0.0+14.04.20140310
551- (c++)"core::dbus::Service::object_for_path(core::dbus::types::ObjectPath const&)@Base" 2.0.0+14.04.20140310
552- (c++)"core::dbus::Service::remove_match(core::dbus::MatchRule const&)@Base" 2.0.0+14.04.20140310
553- (c++)"core::dbus::Service::root_object()@Base" 2.0.0+14.04.20140310
554- (c++)"core::dbus::Service::Service(std::shared_ptr<core::dbus::Bus> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 2.0.0+14.04.20140310
555- (c++)"core::dbus::Service::Service(std::shared_ptr<core::dbus::Bus> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, core::dbus::Bus::RequestNameFlag const&)@Base" 2.0.0+14.04.20140310
556- (c++)"core::dbus::Service::use_service_or_throw_if_not_available(std::shared_ptr<core::dbus::Bus> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 2.0.0+14.04.20140310
557- (c++)"core::dbus::Service::use_service(std::shared_ptr<core::dbus::Bus> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 2.0.0+14.04.20140310
558- (c++)"core::dbus::ServiceWatcher::owner_changed[abi:cxx11]() const@Base" 2.0.0+14.04.20140310
559- (c++)"core::dbus::ServiceWatcher::service_registered() const@Base" 2.0.0+14.04.20140310
560- (c++)"core::dbus::ServiceWatcher::service_unregistered() const@Base" 2.0.0+14.04.20140310
561- (c++)"core::dbus::ServiceWatcher::ServiceWatcher(std::shared_ptr<core::dbus::Object>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, core::dbus::DBus::WatchMode)@Base" 2.0.0+14.04.20140310
562- (c++)"core::dbus::types::ObjectPath::as_string[abi:cxx11]() const@Base" 2.0.0+14.04.20140310
563- (c++)"core::dbus::types::ObjectPath::empty() const@Base" 2.0.0+14.04.20140310
564- (c++)"core::dbus::types::ObjectPath::ObjectPath(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 2.0.0+14.04.20140310
565- (c++)"core::dbus::types::ObjectPath::operator<(core::dbus::types::ObjectPath const&) const@Base" 2.0.0+14.04.20140310
566- (c++)"core::dbus::types::ObjectPath::operator==(core::dbus::types::ObjectPath const&) const@Base" 2.0.0+14.04.20140310
567- (c++)"core::dbus::types::ObjectPath::operator!=(core::dbus::types::ObjectPath const&) const@Base" 2.0.0+14.04.20140310
568- (c++)"core::dbus::types::ObjectPath::root[abi:cxx11]()@Base" 2.0.0+14.04.20140310
569- (c++)"core::dbus::types::operator<<(std::basic_ostream<char, std::char_traits<char> >&, core::dbus::types::ObjectPath const&)@Base" 2.0.0+14.04.20140310
570- (c++)"std::hash<core::dbus::types::ObjectPath>::operator()(core::dbus::types::ObjectPath const&) const@Base" 2.0.0+14.04.20140310
571- (c++)"typeinfo for core::dbus::Bus::Errors::AlreadyOwned@Base" 2.0.0+14.04.20140310
572- (c++)"typeinfo for core::dbus::Bus::Errors::AlreadyOwner@Base" 2.0.0+14.04.20140310
573- (c++)"typeinfo for core::dbus::Bus::Errors::NoMemory@Base" 2.0.0+14.04.20140310
574- (c++)"typeinfo for core::dbus::Bus::Private::Private()::{lambda(std::shared_ptr<core::dbus::Message> const&)#1}@Base" 2.0.0+14.04.20140310
575- (c++)"typeinfo for core::dbus::Bus::Private::Private()::{lambda(std::shared_ptr<core::dbus::Message> const&)#2}@Base" 2.0.0+14.04.20140310
576- (c++)"typeinfo for core::dbus::Executor@Base" 2.0.0+14.04.20140310
577- (c++)"typeinfo for core::dbus::Fixture@Base" 2.0.0+14.04.20140310
578- (c++)"typeinfo for core::dbus::Fixture::Private::Session::Session(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)::{lambda(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)#1}@Base" 2.0.0+14.04.20140310
579- (c++)"typeinfo for core::dbus::Fixture::Private::System::System(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)::{lambda(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)#1}@Base" 2.0.0+14.04.20140310
580- (c++)"typeinfo for core::dbus::PendingCall@Base" 2.0.0+14.04.20140310
581- (c++)"typeinfo for core::dbus::types::ObjectPath::Errors::InvalidObjectPathStringRepresentation@Base" 2.0.0+14.04.20140310
582- (c++)"typeinfo name for core::dbus::Bus::Errors::AlreadyOwned@Base" 2.0.0+14.04.20140310
583- (c++)"typeinfo name for core::dbus::Bus::Errors::AlreadyOwner@Base" 2.0.0+14.04.20140310
584- (c++)"typeinfo name for core::dbus::Bus::Errors::NoMemory@Base" 2.0.0+14.04.20140310
585- (c++)"typeinfo name for core::dbus::Bus::Private::Private()::{lambda(std::shared_ptr<core::dbus::Message> const&)#1}@Base" 2.0.0+14.04.20140310
586- (c++)"typeinfo name for core::dbus::Bus::Private::Private()::{lambda(std::shared_ptr<core::dbus::Message> const&)#2}@Base" 2.0.0+14.04.20140310
587- (c++)"typeinfo name for core::dbus::Executor@Base" 2.0.0+14.04.20140310
588- (c++)"typeinfo name for core::dbus::Fixture@Base" 2.0.0+14.04.20140310
589- (c++)"typeinfo name for core::dbus::Fixture::Private::Session::Session(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)::{lambda(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)#1}@Base" 2.0.0+14.04.20140310
590- (c++)"typeinfo name for core::dbus::Fixture::Private::System::System(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)::{lambda(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)#1}@Base" 2.0.0+14.04.20140310
591- (c++)"typeinfo name for core::dbus::Message::Private::Private(DBusMessage*, bool)::{lambda(DBusMessage*)#1}@Base" 2.0.0+14.04.20140310
592- (c++)"typeinfo name for core::dbus::PendingCall@Base" 2.0.0+14.04.20140310
593- (c++)"typeinfo name for core::dbus::types::ObjectPath::Errors::InvalidObjectPathStringRepresentation@Base" 2.0.0+14.04.20140310
594- (c++)"vtable for core::dbus::Bus::Errors::AlreadyOwned@Base" 2.0.0+14.04.20140310
595- (c++)"vtable for core::dbus::Bus::Errors::AlreadyOwner@Base" 2.0.0+14.04.20140310
596- (c++)"vtable for core::dbus::Bus::Errors::NoMemory@Base" 2.0.0+14.04.20140310
597- (c++)"vtable for core::dbus::Fixture@Base" 2.0.0+14.04.20140310
598- (c++)"vtable for core::dbus::types::ObjectPath::Errors::InvalidObjectPathStringRepresentation@Base" 2.0.0+14.04.20140310
599-#include "libdbus-cpp5.symbols.coverage"
600
601=== removed file 'debian/libdbus-cpp5.symbols.64bit'
602--- debian/libdbus-cpp5.symbols.64bit 2015-10-21 08:00:49 +0000
603+++ debian/libdbus-cpp5.symbols.64bit 1970-01-01 00:00:00 +0000
604@@ -1,199 +0,0 @@
605- (c++)"core::dbus::Fixture::system_bus_address[abi:cxx11]()@Base" 4.3.0+15.04.20150505
606- (c++)"core::dbus::Fixture::session_bus_address[abi:cxx11]()@Base" 4.3.0+15.04.20150505
607- (c++)"core::dbus::Fixture::default_daemon_timeout()@Base" 4.0.0+14.10.20140730
608- (c++)"core::dbus::asio::make_executor(std::shared_ptr<core::dbus::Bus> const&)@Base" 2.0.0+14.04.20140310
609- (c++)"core::dbus::asio::make_executor(std::shared_ptr<core::dbus::Bus> const&, boost::asio::io_service&)@Base" 3.1.0+14.10.20140711
610- (c++)"core::dbus::Bus::access_signal_router()@Base" 2.0.0+14.04.20140310
611- (c++)"core::dbus::Bus::add_match(core::dbus::MatchRule const&)@Base" 2.0.0+14.04.20140310
612- (c++)"core::dbus::Bus::~Bus()@Base" 2.0.0+14.04.20140310
613- (c++)"core::dbus::Bus::Bus(core::dbus::WellKnownBus)@Base" 2.0.0+14.04.20140310
614- (c++)"core::dbus::Bus::Bus(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 2.0.0+14.04.20140310
615- (c++)"core::dbus::Bus::handle_message(std::shared_ptr<core::dbus::Message> const&)@Base" 2.0.0+14.04.20140310
616- (c++)"core::dbus::Bus::has_owner_for_name(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 2.0.0+14.04.20140310
617- (c++)"core::dbus::Bus::install_executor(std::shared_ptr<core::dbus::Executor> const&)@Base" 2.0.0+14.04.20140310
618- (c++)"core::dbus::Bus::message_factory()@Base" 2.0.0+14.04.20140310
619- (c++)"core::dbus::Bus::Name::as_string[abi:cxx11]() const@Base" 2.0.0+14.04.20140310
620- (c++)"core::dbus::Bus::Name::Name(core::dbus::Bus::Name&&)@Base" 2.0.0+14.04.20140310
621- (c++)"core::dbus::Bus::Name::Name(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 2.0.0+14.04.20140310
622- (c++)"core::dbus::Bus::Name::operator=(core::dbus::Bus::Name&&)@Base" 2.0.0+14.04.20140310
623- (c++)"core::dbus::Bus::raw() const@Base" 2.0.0+14.04.20140310
624- (c++)"core::dbus::Bus::register_object_for_path(core::dbus::types::ObjectPath const&, std::shared_ptr<core::dbus::Object> const&)@Base" 2.0.0+14.04.20140310
625- (c++)"core::dbus::Bus::release_name_on_bus(core::dbus::Bus::Name&&)@Base" 2.0.0+14.04.20140310
626- (c++)"core::dbus::Bus::remove_match(core::dbus::MatchRule const&)@Base" 2.0.0+14.04.20140310
627- (c++)"core::dbus::Bus::request_name_on_bus(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, core::dbus::Bus::RequestNameFlag)@Base" 2.0.0+14.04.20140310
628- (c++)"core::dbus::Bus::run()@Base" 2.0.0+14.04.20140310
629- (c++)"core::dbus::Bus::send(std::shared_ptr<core::dbus::Message> const&)@Base" 2.0.0+14.04.20140310
630- (c++)"core::dbus::Bus::send_with_reply_and_block_for_at_most(std::shared_ptr<core::dbus::Message> const&, std::chrono::duration<long, std::ratio<1l, 1000l> > const&)@Base" 2.0.0+14.04.20140310
631- (c++)"core::dbus::Bus::send_with_reply_and_timeout(std::shared_ptr<core::dbus::Message> const&, std::chrono::duration<long, std::ratio<1l, 1000l> > const&)@Base" 2.0.0+14.04.20140310
632- (c++)"core::dbus::Bus::stop()@Base" 2.0.0+14.04.20140310
633- (c++)"core::dbus::Bus::unregister_object_path(core::dbus::types::ObjectPath const&)@Base" 2.0.0+14.04.20140310
634- (c++)"core::dbus::DBus::DBus(std::shared_ptr<core::dbus::Bus> const&)@Base" 2.0.0+14.04.20140310
635- (c++)"core::dbus::DBus::GetConnectionUnixProcessID::name[abi:cxx11]()::s@Base" 2.0.0+14.04.20140310
636- (c++)"core::dbus::DBus::get_connection_unix_process_id(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const@Base" 2.0.0+14.04.20140310
637- (c++)"core::dbus::DBus::GetConnectionUnixUser::name[abi:cxx11]()::s@Base" 2.0.0+14.04.20140310
638- (c++)"core::dbus::DBus::get_connection_unix_user(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const@Base" 2.0.0+14.04.20140310
639- (c++)"core::dbus::DBus::hello[abi:cxx11]() const@Base" 2.0.0+14.04.20140310
640- (c++)"core::dbus::DBus::Hello::name[abi:cxx11]()::s@Base" 2.0.0+14.04.20140310
641- (c++)"core::dbus::DBus::interface[abi:cxx11]()@Base" 2.0.0+14.04.20140310
642- (c++)"core::dbus::DBus::list_names[abi:cxx11]() const@Base" 2.0.0+14.04.20140310
643- (c++)"core::dbus::DBus::ListNames::name[abi:cxx11]()::s@Base" 2.0.0+14.04.20140310
644- (c++)"core::dbus::DBus::make_service_watcher(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, core::dbus::DBus::WatchMode)@Base" 2.0.0+14.04.20140310
645- (c++)"core::dbus::DBus::name[abi:cxx11]()@Base" 2.0.0+14.04.20140310
646- (c++)"core::dbus::DBus::path()@Base" 2.0.0+14.04.20140310
647- (c++)"core::dbus::Error::~Error()@Base" 2.0.0+14.04.20140310
648- (c++)"core::dbus::Error::Error()@Base" 2.0.0+14.04.20140310
649- (c++)"core::dbus::Error::Error(core::dbus::Error&&)@Base" 2.0.0+14.04.20140310
650- (c++)"core::dbus::Error::message[abi:cxx11]() const@Base" 2.0.0+14.04.20140310
651- (c++)"core::dbus::Error::name[abi:cxx11]() const@Base" 2.0.0+14.04.20140310
652- (c++)"core::dbus::Error::operator bool() const@Base" 2.0.0+14.04.20140310
653- (c++)"core::dbus::Error::operator=(core::dbus::Error&&)@Base" 2.0.0+14.04.20140310
654- (c++)"core::dbus::Error::print[abi:cxx11]() const@Base" 2.0.0+14.04.20140310
655- (c++)"core::dbus::Error::raw()@Base" 2.0.0+14.04.20140310
656- (c++)"core::dbus::Fixture::create_connection_to_session_bus()@Base" 2.0.0+14.04.20140310
657- (c++)"core::dbus::Fixture::create_connection_to_system_bus()@Base" 2.0.0+14.04.20140310
658- (c++)"core::dbus::Fixture::default_session_bus_config_file[abi:cxx11]()@Base" 2.0.0+14.04.20140310
659- (c++)"core::dbus::Fixture::default_system_bus_config_file[abi:cxx11]()@Base" 2.0.0+14.04.20140310
660- (c++)"core::dbus::Fixture::~Fixture()@Base" 2.0.0+14.04.20140310
661- (c++)"core::dbus::Fixture::Fixture(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 2.0.0+14.04.20140310
662- (c++)"core::dbus::MatchRule::args(std::vector<std::pair<unsigned long, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<unsigned long, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > const&)@Base" 2.0.0+14.04.20140310
663- (c++)"core::dbus::MatchRule::args(std::vector<std::pair<unsigned long, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<unsigned long, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > const&) const@Base" 2.0.0+14.04.20140310
664- (c++)"core::dbus::MatchRule::as_string[abi:cxx11]() const@Base" 2.0.0+14.04.20140310
665- (c++)"core::dbus::MatchRule::interface(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 2.0.0+14.04.20140310
666- (c++)"core::dbus::MatchRule::interface(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const@Base" 2.0.0+14.04.20140310
667- (c++)"core::dbus::MatchRule::~MatchRule()@Base" 2.0.0+14.04.20140310
668- (c++)"core::dbus::MatchRule::MatchRule()@Base" 2.0.0+14.04.20140310
669- (c++)"core::dbus::MatchRule::MatchRule(core::dbus::MatchRule const&)@Base" 2.0.0+14.04.20140310
670- (c++)"core::dbus::MatchRule::member(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 2.0.0+14.04.20140310
671- (c++)"core::dbus::MatchRule::member(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const@Base" 2.0.0+14.04.20140310
672- (c++)"core::dbus::MatchRule::operator=(core::dbus::MatchRule const&)@Base" 2.0.0+14.04.20140310
673- (c++)"core::dbus::MatchRule::path(core::dbus::types::ObjectPath const&)@Base" 2.0.0+14.04.20140310
674- (c++)"core::dbus::MatchRule::path(core::dbus::types::ObjectPath const&) const@Base" 2.0.0+14.04.20140310
675- (c++)"core::dbus::MatchRule::sender(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 2.0.0+14.04.20140310
676- (c++)"core::dbus::MatchRule::sender(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const@Base" 2.0.0+14.04.20140310
677- (c++)"core::dbus::MatchRule::type(core::dbus::Message::Type)@Base" 2.0.0+14.04.20140310
678- (c++)"core::dbus::MatchRule::type(core::dbus::Message::Type) const@Base" 2.0.0+14.04.20140310
679- (c++)"core::dbus::Message::clone()@Base" 2.0.0+14.04.20140310
680- (c++)"core::dbus::Message::destination[abi:cxx11]() const@Base" 2.0.0+14.04.20140310
681- (c++)"core::dbus::Message::ensure_serial_larger_than_zero_for_testing()@Base" 2.0.0+14.04.20140310
682- (c++)"core::dbus::Message::error() const@Base" 2.0.0+14.04.20140310
683- (c++)"core::dbus::Message::expects_reply() const@Base" 2.0.0+14.04.20140310
684- (c++)"core::dbus::Message::from_raw_message(DBusMessage*)@Base" 2.0.0+14.04.20140310
685- (c++)"core::dbus::Message::interface[abi:cxx11]() const@Base" 2.0.0+14.04.20140310
686- (c++)"core::dbus::Message::make_error(std::shared_ptr<core::dbus::Message> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 2.0.0+14.04.20140310
687- (c++)"core::dbus::Message::make_method_call(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, core::dbus::types::ObjectPath const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 2.0.0+14.04.20140310
688- (c++)"core::dbus::Message::make_method_return(std::shared_ptr<core::dbus::Message> const&)@Base" 2.0.0+14.04.20140310
689- (c++)"core::dbus::Message::make_signal(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 2.0.0+14.04.20140310
690- (c++)"core::dbus::Message::member[abi:cxx11]() const@Base" 2.0.0+14.04.20140310
691- (c++)"core::dbus::Message::~Message()@Base" 2.0.0+14.04.20140310
692- (c++)"core::dbus::Message::Message(std::unique_ptr<core::dbus::Message::Private, std::default_delete<core::dbus::Message::Private> >)@Base" 2.0.0+14.04.20140310
693- (c++)"core::dbus::Message::path() const@Base" 2.0.0+14.04.20140310
694- (c++)"core::dbus::Message::Reader::access_message()@Base" 2.0.0+14.04.20140310
695- (c++)"core::dbus::Message::reader()@Base" 2.0.0+14.04.20140310
696- (c++)"core::dbus::Message::Reader::operator=(core::dbus::Message::Reader&&)@Base" 2.0.0+14.04.20140310
697- (c++)"core::dbus::Message::Reader::pop_array()@Base" 2.0.0+14.04.20140310
698- (c++)"core::dbus::Message::Reader::pop()@Base" 2.0.0+14.04.20140310
699- (c++)"core::dbus::Message::Reader::pop_boolean()@Base" 2.0.0+14.04.20140310
700- (c++)"core::dbus::Message::Reader::pop_byte()@Base" 2.0.0+14.04.20140310
701- (c++)"core::dbus::Message::Reader::pop_dict_entry()@Base" 2.0.0+14.04.20140310
702- (c++)"core::dbus::Message::Reader::pop_floating_point()@Base" 2.0.0+14.04.20140310
703- (c++)"core::dbus::Message::Reader::pop_int16()@Base" 2.0.0+14.04.20140310
704- (c++)"core::dbus::Message::Reader::pop_int32()@Base" 2.0.0+14.04.20140310
705- (c++)"core::dbus::Message::Reader::pop_int64()@Base" 2.0.0+14.04.20140310
706- (c++)"core::dbus::Message::Reader::pop_object_path()@Base" 2.0.0+14.04.20140310
707- (c++)"core::dbus::Message::Reader::pop_signature()@Base" 2.0.0+14.04.20140310
708- (c++)"core::dbus::Message::Reader::pop_string()@Base" 2.0.0+14.04.20140310
709- (c++)"core::dbus::Message::Reader::pop_structure()@Base" 2.0.0+14.04.20140310
710- (c++)"core::dbus::Message::Reader::pop_uint16()@Base" 2.0.0+14.04.20140310
711- (c++)"core::dbus::Message::Reader::pop_uint32()@Base" 2.0.0+14.04.20140310
712- (c++)"core::dbus::Message::Reader::pop_uint64()@Base" 2.0.0+14.04.20140310
713- (c++)"core::dbus::Message::Reader::pop_unix_fd()@Base" 2.0.0+14.04.20140310
714- (c++)"core::dbus::Message::Reader::pop_variant()@Base" 2.0.0+14.04.20140310
715- (c++)"core::dbus::Message::Reader::~Reader()@Base" 2.0.0+14.04.20140310
716- (c++)"core::dbus::Message::Reader::Reader()@Base" 2.0.0+14.04.20140310
717- (c++)"core::dbus::Message::Reader::Reader(core::dbus::Message::Reader&&)@Base" 2.0.0+14.04.20140310
718- (c++)"core::dbus::Message::Reader::Reader(std::shared_ptr<core::dbus::Message> const&)@Base" 2.0.0+14.04.20140310
719- (c++)"core::dbus::Message::Reader::type() const@Base" 2.0.0+14.04.20140310
720- (c++)"core::dbus::Message::sender[abi:cxx11]() const@Base" 2.0.0+14.04.20140310
721- (c++)"core::dbus::Message::signature[abi:cxx11]() const@Base" 2.0.0+14.04.20140310
722- (c++)"core::dbus::Message::type() const@Base" 2.0.0+14.04.20140310
723- (c++)"core::dbus::Message::writer()@Base" 2.0.0+14.04.20140310
724- (c++)"core::dbus::Message::Writer::close_array(core::dbus::Message::Writer)@Base" 2.0.0+14.04.20140310
725- (c++)"core::dbus::Message::Writer::close_dict_entry(core::dbus::Message::Writer)@Base" 2.0.0+14.04.20140310
726- (c++)"core::dbus::Message::Writer::close_structure(core::dbus::Message::Writer)@Base" 2.0.0+14.04.20140310
727- (c++)"core::dbus::Message::Writer::close_variant(core::dbus::Message::Writer)@Base" 2.0.0+14.04.20140310
728- (c++)"core::dbus::Message::Writer::open_array(core::dbus::types::Signature const&)@Base" 2.0.0+14.04.20140310
729- (c++)"core::dbus::Message::Writer::open_dict_entry()@Base" 2.0.0+14.04.20140310
730- (c++)"core::dbus::Message::Writer::open_structure()@Base" 2.0.0+14.04.20140310
731- (c++)"core::dbus::Message::Writer::open_variant(core::dbus::types::Signature const&)@Base" 2.0.0+14.04.20140310
732- (c++)"core::dbus::Message::Writer::operator=(core::dbus::Message::Writer&&)@Base" 2.0.0+14.04.20140310
733- (c++)"core::dbus::Message::Writer::push_boolean(bool)@Base" 2.0.0+14.04.20140310
734- (c++)"core::dbus::Message::Writer::push_byte(signed char)@Base" 2.0.0+14.04.20140310
735- (c++)"core::dbus::Message::Writer::push_floating_point(double)@Base" 2.0.0+14.04.20140310
736- (c++)"core::dbus::Message::Writer::push_int16(short)@Base" 2.0.0+14.04.20140310
737- (c++)"core::dbus::Message::Writer::push_int32(int)@Base" 2.0.0+14.04.20140310
738- (c++)"core::dbus::Message::Writer::push_int64(long)@Base" 2.0.0+14.04.20140310
739- (c++)"core::dbus::Message::Writer::push_object_path(core::dbus::types::ObjectPath const&)@Base" 2.0.0+14.04.20140310
740- (c++)"core::dbus::Message::Writer::push_signature(core::dbus::types::Signature const&)@Base" 2.0.0+14.04.20140310
741- (c++)"core::dbus::Message::Writer::push_stringn(char const*, unsigned long)@Base" 2.0.0+14.04.20140310
742- (c++)"core::dbus::Message::Writer::push_uint16(unsigned short)@Base" 2.0.0+14.04.20140310
743- (c++)"core::dbus::Message::Writer::push_uint32(unsigned int)@Base" 2.0.0+14.04.20140310
744- (c++)"core::dbus::Message::Writer::push_uint64(unsigned long)@Base" 2.0.0+14.04.20140310
745- (c++)"core::dbus::Message::Writer::push_unix_fd(core::dbus::types::UnixFd const&)@Base" 2.0.0+14.04.20140310
746- (c++)"core::dbus::Message::Writer::~Writer()@Base" 2.0.0+14.04.20140310
747- (c++)"core::dbus::Message::Writer::Writer(core::dbus::Message::Writer&&)@Base" 2.0.0+14.04.20140310
748- (c++)"core::dbus::Message::Writer::Writer(std::shared_ptr<core::dbus::Message> const&)@Base" 2.0.0+14.04.20140310
749- (c++)"core::dbus::Service::add_match(core::dbus::MatchRule const&)@Base" 2.0.0+14.04.20140310
750- (c++)"core::dbus::Service::add_object_for_path(core::dbus::types::ObjectPath const&)@Base" 2.0.0+14.04.20140310
751- (c++)"core::dbus::Service::get_connection() const@Base" 2.0.0+14.04.20140310
752- (c++)"core::dbus::Service::get_name[abi:cxx11]() const@Base" 2.0.0+14.04.20140310
753- (c++)"core::dbus::Service::is_stub() const@Base" 2.0.0+14.04.20140310
754- (c++)"core::dbus::Service::object_for_path(core::dbus::types::ObjectPath const&)@Base" 2.0.0+14.04.20140310
755- (c++)"core::dbus::Service::remove_match(core::dbus::MatchRule const&)@Base" 2.0.0+14.04.20140310
756- (c++)"core::dbus::Service::root_object()@Base" 2.0.0+14.04.20140310
757- (c++)"core::dbus::Service::Service(std::shared_ptr<core::dbus::Bus> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 2.0.0+14.04.20140310
758- (c++)"core::dbus::Service::Service(std::shared_ptr<core::dbus::Bus> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, core::dbus::Bus::RequestNameFlag const&)@Base" 2.0.0+14.04.20140310
759- (c++)"core::dbus::Service::use_service_or_throw_if_not_available(std::shared_ptr<core::dbus::Bus> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 2.0.0+14.04.20140310
760- (c++)"core::dbus::Service::use_service(std::shared_ptr<core::dbus::Bus> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 2.0.0+14.04.20140310
761- (c++)"core::dbus::ServiceWatcher::owner_changed[abi:cxx11]() const@Base" 2.0.0+14.04.20140310
762- (c++)"core::dbus::ServiceWatcher::service_registered() const@Base" 2.0.0+14.04.20140310
763- (c++)"core::dbus::ServiceWatcher::service_unregistered() const@Base" 2.0.0+14.04.20140310
764- (c++)"core::dbus::ServiceWatcher::ServiceWatcher(std::shared_ptr<core::dbus::Object>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, core::dbus::DBus::WatchMode)@Base" 2.0.0+14.04.20140310
765- (c++)"core::dbus::types::ObjectPath::as_string[abi:cxx11]() const@Base" 2.0.0+14.04.20140310
766- (c++)"core::dbus::types::ObjectPath::empty() const@Base" 2.0.0+14.04.20140310
767- (c++)"core::dbus::types::ObjectPath::ObjectPath(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 2.0.0+14.04.20140310
768- (c++)"core::dbus::types::ObjectPath::operator<(core::dbus::types::ObjectPath const&) const@Base" 2.0.0+14.04.20140310
769- (c++)"core::dbus::types::ObjectPath::operator==(core::dbus::types::ObjectPath const&) const@Base" 2.0.0+14.04.20140310
770- (c++)"core::dbus::types::ObjectPath::operator!=(core::dbus::types::ObjectPath const&) const@Base" 2.0.0+14.04.20140310
771- (c++)"core::dbus::types::ObjectPath::root[abi:cxx11]()@Base" 2.0.0+14.04.20140310
772- (c++)"core::dbus::types::operator<<(std::basic_ostream<char, std::char_traits<char> >&, core::dbus::types::ObjectPath const&)@Base" 2.0.0+14.04.20140310
773- (c++)"std::hash<core::dbus::types::ObjectPath>::operator()(core::dbus::types::ObjectPath const&) const@Base" 2.0.0+14.04.20140310
774- (c++)"typeinfo for core::dbus::Bus::Errors::AlreadyOwned@Base" 2.0.0+14.04.20140310
775- (c++)"typeinfo for core::dbus::Bus::Errors::AlreadyOwner@Base" 2.0.0+14.04.20140310
776- (c++)"typeinfo for core::dbus::Bus::Errors::NoMemory@Base" 2.0.0+14.04.20140310
777- (c++)"typeinfo for core::dbus::Bus::Private::Private()::{lambda(std::shared_ptr<core::dbus::Message> const&)#1}@Base" 2.0.0+14.04.20140310
778- (c++)"typeinfo for core::dbus::Bus::Private::Private()::{lambda(std::shared_ptr<core::dbus::Message> const&)#2}@Base" 2.0.0+14.04.20140310
779- (c++)"typeinfo for core::dbus::Executor@Base" 2.0.0+14.04.20140310
780- (c++)"typeinfo for core::dbus::Fixture@Base" 2.0.0+14.04.20140310
781- (c++)"typeinfo for core::dbus::Fixture::Private::Session::Session(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)::{lambda(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)#1}@Base" 2.0.0+14.04.20140310
782- (c++)"typeinfo for core::dbus::Fixture::Private::System::System(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)::{lambda(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)#1}@Base" 2.0.0+14.04.20140310
783- (c++)"typeinfo for core::dbus::PendingCall@Base" 2.0.0+14.04.20140310
784- (c++)"typeinfo for core::dbus::types::ObjectPath::Errors::InvalidObjectPathStringRepresentation@Base" 2.0.0+14.04.20140310
785- (c++)"typeinfo name for core::dbus::Bus::Errors::AlreadyOwned@Base" 2.0.0+14.04.20140310
786- (c++)"typeinfo name for core::dbus::Bus::Errors::AlreadyOwner@Base" 2.0.0+14.04.20140310
787- (c++)"typeinfo name for core::dbus::Bus::Errors::NoMemory@Base" 2.0.0+14.04.20140310
788- (c++)"typeinfo name for core::dbus::Bus::Private::Private()::{lambda(std::shared_ptr<core::dbus::Message> const&)#1}@Base" 2.0.0+14.04.20140310
789- (c++)"typeinfo name for core::dbus::Bus::Private::Private()::{lambda(std::shared_ptr<core::dbus::Message> const&)#2}@Base" 2.0.0+14.04.20140310
790- (c++)"typeinfo name for core::dbus::Executor@Base" 2.0.0+14.04.20140310
791- (c++)"typeinfo name for core::dbus::Fixture@Base" 2.0.0+14.04.20140310
792- (c++)"typeinfo name for core::dbus::Fixture::Private::Session::Session(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)::{lambda(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)#1}@Base" 2.0.0+14.04.20140310
793- (c++)"typeinfo name for core::dbus::Fixture::Private::System::System(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)::{lambda(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)#1}@Base" 2.0.0+14.04.20140310
794- (c++)"typeinfo name for core::dbus::Message::Private::Private(DBusMessage*, bool)::{lambda(DBusMessage*)#1}@Base" 2.0.0+14.04.20140310
795- (c++)"typeinfo name for core::dbus::PendingCall@Base" 2.0.0+14.04.20140310
796- (c++)"typeinfo name for core::dbus::types::ObjectPath::Errors::InvalidObjectPathStringRepresentation@Base" 2.0.0+14.04.20140310
797- (c++)"vtable for core::dbus::Bus::Errors::AlreadyOwned@Base" 2.0.0+14.04.20140310
798- (c++)"vtable for core::dbus::Bus::Errors::AlreadyOwner@Base" 2.0.0+14.04.20140310
799- (c++)"vtable for core::dbus::Bus::Errors::NoMemory@Base" 2.0.0+14.04.20140310
800- (c++)"vtable for core::dbus::Fixture@Base" 2.0.0+14.04.20140310
801- (c++)"vtable for core::dbus::types::ObjectPath::Errors::InvalidObjectPathStringRepresentation@Base" 2.0.0+14.04.20140310
802-#include "libdbus-cpp5.symbols.coverage"
803-
804
805=== removed file 'debian/libdbus-cpp5.symbols.amd64'
806--- debian/libdbus-cpp5.symbols.amd64 2015-10-21 08:00:49 +0000
807+++ debian/libdbus-cpp5.symbols.amd64 1970-01-01 00:00:00 +0000
808@@ -1,2 +0,0 @@
809-libdbus-cpp.so.5 libdbus-cpp5 #MINVER#
810-#include "libdbus-cpp5.symbols.64bit"
811
812=== removed file 'debian/libdbus-cpp5.symbols.arm64'
813--- debian/libdbus-cpp5.symbols.arm64 2015-10-21 08:00:49 +0000
814+++ debian/libdbus-cpp5.symbols.arm64 1970-01-01 00:00:00 +0000
815@@ -1,2 +0,0 @@
816-libdbus-cpp.so.5 libdbus-cpp5 #MINVER#
817-#include "libdbus-cpp5.symbols.64bit"
818
819=== removed file 'debian/libdbus-cpp5.symbols.armhf'
820--- debian/libdbus-cpp5.symbols.armhf 2015-10-21 08:00:49 +0000
821+++ debian/libdbus-cpp5.symbols.armhf 1970-01-01 00:00:00 +0000
822@@ -1,2 +0,0 @@
823-libdbus-cpp.so.5 libdbus-cpp5 #MINVER#
824-#include "libdbus-cpp5.symbols.32bit"
825
826=== removed file 'debian/libdbus-cpp5.symbols.coverage'
827--- debian/libdbus-cpp5.symbols.coverage 2015-10-21 08:00:49 +0000
828+++ debian/libdbus-cpp5.symbols.coverage 1970-01-01 00:00:00 +0000
829@@ -1,5 +0,0 @@
830- (c++|optional)"core::dbus::ServiceWatcher::Private::Private()@Base" 2.0.0+14.04.20140310
831- (c++|optional)"core::dbus::Bus::Name::~Name()@Base" 2.0.0+14.04.20140310
832- (c++|optional)"core::dbus::Bus::Private::~Private()@Base" 2.0.0+14.04.20140310
833- (c++|optional)"core::dbus::Message::Writer::Private::~Private()@Base" 2.0.0+14.04.20140310
834- (c++|optional)"typeinfo for core::dbus::Message::Private::Private(DBusMessage*, bool)::{lambda(DBusMessage*)#1}@Base" 2.0.0+14.04.20140310
835
836=== removed file 'debian/libdbus-cpp5.symbols.i386'
837--- debian/libdbus-cpp5.symbols.i386 2015-10-21 08:00:49 +0000
838+++ debian/libdbus-cpp5.symbols.i386 1970-01-01 00:00:00 +0000
839@@ -1,2 +0,0 @@
840-libdbus-cpp.so.5 libdbus-cpp5 #MINVER#
841-#include "libdbus-cpp5.symbols.32bit"
842
843=== removed file 'debian/libdbus-cpp5.symbols.powerpc'
844--- debian/libdbus-cpp5.symbols.powerpc 2015-10-21 08:00:49 +0000
845+++ debian/libdbus-cpp5.symbols.powerpc 1970-01-01 00:00:00 +0000
846@@ -1,2 +0,0 @@
847-libdbus-cpp.so.5 libdbus-cpp5 #MINVER#
848-#include "libdbus-cpp5.symbols.32bit"
849
850=== removed file 'debian/libdbus-cpp5.symbols.ppc64el'
851--- debian/libdbus-cpp5.symbols.ppc64el 2015-10-21 08:00:49 +0000
852+++ debian/libdbus-cpp5.symbols.ppc64el 1970-01-01 00:00:00 +0000
853@@ -1,2 +0,0 @@
854-libdbus-cpp.so.5 libdbus-cpp5 #MINVER#
855-#include "libdbus-cpp5.symbols.64bit"
856
857=== modified file 'debian/rules'
858--- debian/rules 2015-07-21 10:37:34 +0000
859+++ debian/rules 2016-08-08 09:17:09 +0000
860@@ -6,15 +6,31 @@
861
862 include /usr/share/dpkg/default.mk
863
864+distro=$(shell lsb_release -c -s)
865+
866+ifeq ($(distro),vivid)
867+ full_version=$(shell cat $(CURDIR)/debian/VERSION.vivid)
868+else
869+ full_version=$(shell cat $(CURDIR)/debian/VERSION)
870+endif
871+
872+major=$(shell echo $(full_version) | cut -d'.' -f1)
873+minor=$(shell echo $(full_version) | cut -d'.' -f2)
874+patch=$(shell echo $(full_version) | cut -d'.' -f3)
875+
876 export DPKG_GENSYMBOLS_CHECK_LEVEL=4
877
878 %:
879 dh $@
880
881 override_dh_auto_configure:
882- dh_auto_configure -- -DCMAKE_INSTALL_LIBEXECDIR=/usr/lib/$(DEB_HOST_MULTIARCH)/dbus-cpp -DCMAKE_C_COMPILER=$(CC) -DCMAKE_CXX_COMPILER=$(CXX)
883+ dh_auto_configure -- -DCMAKE_INSTALL_LIBEXECDIR=/usr/lib/$(DEB_HOST_MULTIARCH)/dbus-cpp -DCMAKE_C_COMPILER=$(CC) -DCMAKE_CXX_COMPILER=$(CXX) -DDBUS_CPP_VERSION_MAJOR=$(major) -DDBUS_CPP_VERSION_MINOR=$(minor) -DDBUS_CPP_VERSION_PATCH=$(patch)
884
885 override_dh_auto_test:
886 if [ "$(DEB_HOST_MULTIARCH)" != "powerpc-linux-gnu" ]; then \
887 dh_auto_test; \
888 fi
889+
890+override_dh_auto_clean:
891+ /bin/sh $(CURDIR)/debian/bileto_pre_release_hook
892+ dh_auto_clean
893
894=== modified file 'include/core/dbus/impl/object.h'
895--- include/core/dbus/impl/object.h 2014-10-30 13:22:52 +0000
896+++ include/core/dbus/impl/object.h 2016-08-08 09:17:09 +0000
897@@ -19,7 +19,6 @@
898 #define CORE_DBUS_IMPL_OBJECT_H_
899
900 #include <core/dbus/bus.h>
901-#include <core/dbus/lifetime_constrained_cache.h>
902 #include <core/dbus/match_rule.h>
903 #include <core/dbus/message_router.h>
904 #include <core/dbus/message_streaming_operators.h>
905@@ -37,6 +36,7 @@
906
907 #include <functional>
908 #include <future>
909+#include <iostream>
910 #include <map>
911 #include <memory>
912 #include <string>
913@@ -70,17 +70,17 @@
914 object_path.as_string(),
915 traits::Service<typename Method::Interface>::interface_name().c_str(),
916 Method::name());
917-
918+
919 if (!msg)
920 throw std::runtime_error("No memory available to allocate DBus message");
921-
922+
923 auto writer = msg->writer();
924 encode_message(writer, args...);
925-
926+
927 auto reply = parent->get_connection()->send_with_reply_and_block_for_at_most(
928 msg,
929 Method::default_timeout());
930-
931+
932 return Result<ResultType>::from_message(reply);
933 }
934
935@@ -153,40 +153,57 @@
936 inline std::shared_ptr<Property<PropertyDescription>>
937 Object::get_property()
938 {
939- // If this is a proxy object we set up listening for property changes the
940- // first time someone accesses properties.
941- if (parent->is_stub())
942- {
943- if (!signal_properties_changed)
944- {
945- signal_properties_changed
946- = get_signal<interfaces::Properties::Signals::PropertiesChanged>();
947-
948- signal_properties_changed->connect(
949- std::bind(
950- &Object::on_properties_changed,
951- shared_from_this(),
952- std::placeholders::_1));
953- }
954- }
955-
956 typedef Property<PropertyDescription> PropertyType;
957- auto property =
958- PropertyType::make_property(
959- shared_from_this());
960
961+ // Creating a stub property for a remote object/property instance
962+ // requires the following steps:
963+ // [1.] Look up if we already have a property instance available in the cache,
964+ // leveraging the tuple (path, interface, name) as key.
965+ // [1.1] If yes: return the property.
966+ // [1.2] If no: Create a new proeprty instance and:
967+ // [1.2.1] Make it known to the cache.
968+ // [1.2.2] Wire it up for property_changed signal receiving.
969+ // [1.2.3] Communicate a new match rule to the dbus daemon to enable reception.
970 if (parent->is_stub())
971 {
972- auto tuple = std::make_tuple(
973- traits::Service<typename PropertyDescription::Interface>::interface_name(),
974- PropertyDescription::name());
975-
976- property_changed_vtable[tuple] = std::bind(
977- &Property<PropertyDescription>::handle_changed,
978- property,
979- std::placeholders::_1);
980+ auto itf = traits::Service<typename PropertyDescription::Interface>::interface_name();
981+ auto name = PropertyDescription::name();
982+ auto ekey = std::make_tuple(path(), itf, name);
983+
984+ auto property = Object::property_cache<PropertyDescription>().retrieve_value_for_key(ekey);
985+ if (property)
986+ {
987+ return property;
988+ }
989+
990+ auto mr = MatchRule()
991+ .type(Message::Type::signal)
992+ .interface(traits::Service<interfaces::Properties>::interface_name())
993+ .member(interfaces::Properties::Signals::PropertiesChanged::name());
994+
995+ property = PropertyType::make_property(shared_from_this());
996+
997+ Object::property_cache<PropertyDescription>().insert_value_for_key(ekey, property);
998+
999+ // We only ever do this once per object.
1000+ std::call_once(add_match_once, [&]()
1001+ {
1002+ // [1.2.4] Inform the dbus daemon that we would like to receive the respective signals.
1003+ add_match(mr);
1004+ });
1005+
1006+ // [1.2.2] Enable dispatching of changes.
1007+ std::weak_ptr<PropertyType> wp{property};
1008+ property_changed_vtable[std::make_tuple(itf, name)] = [wp](const types::Variant& arg)
1009+ {
1010+ if (auto sp = wp.lock())
1011+ sp->handle_changed(arg);
1012+ };
1013+
1014+ return property;
1015 }
1016- return property;
1017+
1018+ return PropertyType::make_property(shared_from_this());
1019 }
1020
1021 template<typename Interface>
1022@@ -312,6 +329,23 @@
1023 &MessageRouter<PropertyKey>::operator(),
1024 std::ref(set_property_router),
1025 std::placeholders::_1));
1026+ } else
1027+ {
1028+ // We centrally route org.freedesktop.DBus.Properties.PropertiesChanged
1029+ // through the object, which in turn routes via a custom Property cache.
1030+ signal_router.install_route(
1031+ SignalKey{
1032+ traits::Service<interfaces::Properties>::interface_name(),
1033+ interfaces::Properties::Signals::PropertiesChanged::name()
1034+ },
1035+ // Passing 'this' is fine as the lifetime of the signal_router is upper limited
1036+ // by the lifetime of 'this'.
1037+ [this](const Message::Ptr& msg)
1038+ {
1039+ interfaces::Properties::Signals::PropertiesChanged::ArgumentType arg;
1040+ msg->reader() >> arg;
1041+ on_properties_changed(arg);
1042+ });
1043 }
1044 }
1045
1046@@ -319,6 +353,20 @@
1047 {
1048 parent->get_connection()->access_signal_router().uninstall_route(object_path);
1049 parent->get_connection()->unregister_object_path(object_path);
1050+
1051+ auto mr = MatchRule()
1052+ .type(Message::Type::signal)
1053+ .interface(traits::Service<interfaces::Properties>::interface_name())
1054+ .member(interfaces::Properties::Signals::PropertiesChanged::name());
1055+
1056+ try
1057+ {
1058+ remove_match(mr);
1059+ } catch(...)
1060+ {
1061+ // We consciously drop all possible exceptions here. There is hardly
1062+ // anything we can do about the error anyway.
1063+ }
1064 }
1065
1066 inline void Object::add_match(const MatchRule& rule)
1067@@ -346,6 +394,19 @@
1068 }
1069 }
1070 }
1071+
1072+template<typename PropertyDescription>
1073+inline core::dbus::ThreadSafeLifetimeConstrainedCache<
1074+ core::dbus::Object::CacheKey,
1075+ core::dbus::Property<PropertyDescription>>&
1076+core::dbus::Object::property_cache()
1077+{
1078+ static core::dbus::ThreadSafeLifetimeConstrainedCache<
1079+ core::dbus::Object::CacheKey,
1080+ core::dbus::Property<PropertyDescription>
1081+ > cache;
1082+ return cache;
1083+}
1084 }
1085 }
1086
1087
1088=== modified file 'include/core/dbus/impl/property.h'
1089--- include/core/dbus/impl/property.h 2014-06-10 08:44:17 +0000
1090+++ include/core/dbus/impl/property.h 2016-08-08 09:17:09 +0000
1091@@ -64,6 +64,13 @@
1092 }
1093
1094 template<typename PropertyType>
1095+const core::Signal<void>&
1096+Property<PropertyType>::about_to_be_destroyed() const
1097+{
1098+ return signal_about_to_be_destroyed;
1099+}
1100+
1101+template<typename PropertyType>
1102 std::shared_ptr<Property<PropertyType>>
1103 Property<PropertyType>::make_property(const std::shared_ptr<Object>& parent)
1104 {
1105@@ -109,6 +116,20 @@
1106 }
1107
1108 template<typename PropertyType>
1109+Property<PropertyType>::~Property()
1110+{
1111+ try
1112+ {
1113+ signal_about_to_be_destroyed();
1114+ } catch(...)
1115+ {
1116+ // Consciously dropping all exceptions here.
1117+ // There is hardly anything we can do about it while
1118+ // tearing down the object anyway.
1119+ }
1120+}
1121+
1122+template<typename PropertyType>
1123 void
1124 Property<PropertyType>::handle_get(const Message::Ptr& msg)
1125 {
1126
1127=== modified file 'include/core/dbus/impl/signal.h'
1128--- include/core/dbus/impl/signal.h 2014-11-10 08:14:45 +0000
1129+++ include/core/dbus/impl/signal.h 2016-08-08 09:17:09 +0000
1130@@ -65,7 +65,7 @@
1131 const typename Signal<SignalDescription, Argument>::SubscriptionToken& token)
1132 {
1133 std::lock_guard<std::mutex> lg(handlers_guard);
1134- return handlers.erase(token);
1135+ handlers.erase(token);
1136 }
1137
1138 template<typename SignalDescription, typename Argument>
1139@@ -121,8 +121,8 @@
1140 &Signal<SignalDescription>::operator(),
1141 this,
1142 std::placeholders::_1));
1143- parent->add_match(
1144- rule.type(Message::Type::signal).interface(interface).member(name));
1145+ rule = rule.type(Message::Type::signal).interface(interface).member(name);
1146+ parent->add_match(rule);
1147 }
1148
1149 template<typename SignalDescription, typename Argument>
1150@@ -309,6 +309,8 @@
1151 &Signal<SignalDescription, typename SignalDescription::ArgumentType>::operator(),
1152 this,
1153 std::placeholders::_1));
1154+
1155+ d->rule = d->rule.type(Message::Type::signal).interface(interface).member(name);
1156 }
1157
1158 template<typename SignalDescription>
1159@@ -322,7 +324,8 @@
1160 {
1161 try
1162 {
1163- msg->reader() >> d->value;
1164+ typename SignalDescription::ArgumentType value;
1165+ msg->reader() >> value;
1166 std::lock_guard<std::mutex> lg(d->handlers_guard);
1167 for (auto it : d->handlers)
1168 {
1169@@ -356,7 +359,7 @@
1170 continue;
1171 }
1172
1173- handler(d->value);
1174+ handler(value);
1175 }
1176 }
1177 catch (const std::runtime_error& e)
1178
1179=== modified file 'include/core/dbus/message.h'
1180--- include/core/dbus/message.h 2014-01-05 18:58:19 +0000
1181+++ include/core/dbus/message.h 2016-08-08 09:17:09 +0000
1182@@ -439,6 +439,8 @@
1183 };
1184 typedef std::shared_ptr<Message> MessagePtr;
1185 typedef std::unique_ptr<Message> MessageUPtr;
1186+
1187+ORG_FREEDESKTOP_DBUS_DLL_PUBLIC std::ostream& operator<<(std::ostream&, Message::Type);
1188 }
1189 }
1190
1191
1192=== modified file 'include/core/dbus/object.h'
1193--- include/core/dbus/object.h 2014-10-23 21:09:56 +0000
1194+++ include/core/dbus/object.h 2016-08-08 09:17:09 +0000
1195@@ -19,12 +19,14 @@
1196 #define CORE_DBUS_OBJECT_H_
1197
1198 #include <core/dbus/bus.h>
1199+#include <core/dbus/lifetime_constrained_cache.h>
1200 #include <core/dbus/service.h>
1201
1202 #include <functional>
1203 #include <future>
1204 #include <map>
1205 #include <memory>
1206+#include <mutex>
1207 #include <ostream>
1208 #include <string>
1209
1210@@ -82,10 +84,14 @@
1211 class Object : public std::enable_shared_from_this<Object>
1212 {
1213 private:
1214+ typedef std::tuple<types::ObjectPath, std::string, std::string> CacheKey;
1215 typedef std::tuple<std::string, std::string> MethodKey;
1216 typedef std::tuple<std::string, std::string> PropertyKey;
1217 typedef std::tuple<std::string, std::string> SignalKey;
1218
1219+ template<typename PropertyDescription>
1220+ static ThreadSafeLifetimeConstrainedCache<CacheKey, Property<PropertyDescription>>& property_cache();
1221+
1222 public:
1223 typedef std::shared_ptr<Object> Ptr;
1224 typedef std::function<void(const Message::Ptr&)> MethodHandler;
1225@@ -173,7 +179,7 @@
1226 * @param [in] path The path to associate the object with.
1227 * @return An object instance or nullptr in case of errors.
1228 */
1229- std::shared_ptr<Object>
1230+ std::shared_ptr<Object>
1231 inline add_object_for_path(const types::ObjectPath& path);
1232
1233 /**
1234@@ -227,16 +233,11 @@
1235 MessageRouter<MethodKey> method_router;
1236 MessageRouter<PropertyKey> get_property_router;
1237 MessageRouter<PropertyKey> set_property_router;
1238+ std::once_flag add_match_once;
1239 std::map<
1240 std::tuple<std::string, std::string>,
1241 std::function<void(const types::Variant&)>
1242 > property_changed_vtable;
1243- std::shared_ptr<
1244- Signal<
1245- interfaces::Properties::Signals::PropertiesChanged,
1246- interfaces::Properties::Signals::PropertiesChanged::ArgumentType
1247- >
1248- > signal_properties_changed;
1249 };
1250 }
1251 }
1252
1253=== modified file 'include/core/dbus/property.h'
1254--- include/core/dbus/property.h 2014-01-20 21:22:02 +0000
1255+++ include/core/dbus/property.h 2016-08-08 09:17:09 +0000
1256@@ -43,6 +43,8 @@
1257 typedef typename PropertyType::ValueType ValueType;
1258 typedef core::Property<ValueType> Super;
1259
1260+ inline ~Property();
1261+
1262 /**
1263 * @brief Non-mutable access to the contained value.
1264 * @return Non-mutable reference to the contained value.
1265@@ -61,6 +63,11 @@
1266 */
1267 inline bool is_writable() const;
1268
1269+ /**
1270+ * @brief Emitted during destruction of an object instance.
1271+ */
1272+ inline const core::Signal<void>& about_to_be_destroyed() const;
1273+
1274 protected:
1275 friend class Object;
1276
1277@@ -82,6 +89,7 @@
1278 std::string interface;
1279 std::string name;
1280 bool writable;
1281+ core::Signal<void> signal_about_to_be_destroyed;
1282 };
1283 }
1284 }
1285
1286=== modified file 'include/core/dbus/signal.h'
1287--- include/core/dbus/signal.h 2014-01-24 11:17:26 +0000
1288+++ include/core/dbus/signal.h 2016-08-08 09:17:09 +0000
1289@@ -189,8 +189,11 @@
1290 const std::shared_ptr<Object>& parent,
1291 const std::string& interface,
1292 const std::string& name);
1293-
1294- typename SignalDescription::ArgumentType value;
1295+
1296+ // We do not need this member anymore, but keep it in place for
1297+ // the sake of binary compatibility. Leaving a TODO(tvoss) to clean
1298+ // up on next ABI bump.
1299+ typename SignalDescription::ArgumentType pad;
1300 std::shared_ptr<Object> parent;
1301 std::string interface;
1302 std::string name;
1303
1304=== modified file 'src/core/dbus/bus.cpp'
1305--- src/core/dbus/bus.cpp 2014-11-27 16:38:44 +0000
1306+++ src/core/dbus/bus.cpp 2016-08-08 09:17:09 +0000
1307@@ -24,6 +24,8 @@
1308 #include <core/dbus/traits/timeout.h>
1309 #include <core/dbus/traits/watch.h>
1310
1311+#include <core/posix/this_process.h>
1312+
1313 #include "message_p.h"
1314 #include "message_factory_impl.h"
1315 #include "pending_call_impl.h"
1316@@ -76,8 +78,18 @@
1317
1318 void init_libdbus_thread_support_and_install_shutdown_handler()
1319 {
1320+ static const bool install_dbus_shutdown_handler
1321+ {
1322+ not core::posix::this_process::env::get("DBUS_CPP_INSTALL_DBUS_SHUTDOWN_HANDLER").empty()
1323+ };
1324+
1325 static std::once_flag once;
1326- std::call_once(once, []() { dbus_threads_init_default(); std::atexit(dbus_shutdown); });
1327+ std::call_once(once, []()
1328+ {
1329+ dbus_threads_init_default();
1330+ if (install_dbus_shutdown_handler)
1331+ std::atexit(dbus_shutdown);
1332+ });
1333 }
1334 }
1335
1336
1337=== modified file 'src/core/dbus/match_rule.cpp'
1338--- src/core/dbus/match_rule.cpp 2014-01-21 13:48:54 +0000
1339+++ src/core/dbus/match_rule.cpp 2016-08-08 09:17:09 +0000
1340@@ -151,17 +151,10 @@
1341
1342 std::string dbus::MatchRule::as_string() const
1343 {
1344- static const std::map<Message::Type, std::string> lut =
1345- {
1346- {Message::Type::signal, "signal"},
1347- {Message::Type::method_call, "method_call"},
1348- {Message::Type::method_return, "method_return"},
1349- {Message::Type::error, "error"}
1350- };
1351 Comma comma;
1352 std::stringstream ss;
1353 if (d->type != Message::Type::invalid)
1354- ss << "type='" << lut.at(d->type) << "'" << comma;
1355+ ss << "type='" << d->type << "'" << comma;
1356 if (!d->sender.empty())
1357 ss << comma << "sender='" << d->sender << "'" << comma;
1358 if (!d->interface.empty())
1359
1360=== modified file 'src/core/dbus/message.cpp'
1361--- src/core/dbus/message.cpp 2015-07-21 18:30:23 +0000
1362+++ src/core/dbus/message.cpp 2016-08-08 09:17:09 +0000
1363@@ -652,5 +652,24 @@
1364 {
1365 return std::shared_ptr<Message>(new Message(d->clone()));
1366 }
1367+
1368+std::ostream& operator<<(std::ostream& out, Message::Type type)
1369+{
1370+ switch (type)
1371+ {
1372+ case Message::Type::error:
1373+ return out << "error";
1374+ case Message::Type::invalid:
1375+ return out << "invalid";
1376+ case Message::Type::method_call:
1377+ return out << "method_call";
1378+ case Message::Type::method_return:
1379+ return out << "method_return";
1380+ case Message::Type::signal:
1381+ return out << "signal";
1382+ }
1383+
1384+ return out;
1385+}
1386 }
1387 }
1388
1389=== modified file 'src/core/dbus/service.cpp'
1390--- src/core/dbus/service.cpp 2014-06-30 04:57:08 +0000
1391+++ src/core/dbus/service.cpp 2016-08-08 09:17:09 +0000
1392@@ -79,7 +79,7 @@
1393
1394 void Service::remove_match(const MatchRule& rule)
1395 {
1396- connection->remove_match(rule);
1397+ connection->remove_match(rule.sender(name));
1398 }
1399
1400 Service::Service(const Bus::Ptr& connection, const std::string& name)
1401
1402=== modified file 'tests/async_execution_load_test.cpp'
1403--- tests/async_execution_load_test.cpp 2014-10-02 20:47:08 +0000
1404+++ tests/async_execution_load_test.cpp 2016-08-08 09:17:09 +0000
1405@@ -131,7 +131,7 @@
1406 std::thread t4{[dbus, ec]() {invoke_list_names_n_times_and_update_event_collector(dbus, 100, ec);}};
1407 std::thread t5{[dbus, ec]() {invoke_list_names_n_times_and_update_event_collector(dbus, 100, ec);}};
1408
1409- EXPECT_TRUE(ec->wait_for(std::chrono::seconds{60}));
1410+ EXPECT_TRUE(ec->wait_for(std::chrono::minutes{5}));
1411
1412 bus->stop();
1413
1414
1415=== modified file 'tests/executor_test.cpp'
1416--- tests/executor_test.cpp 2014-09-28 21:27:09 +0000
1417+++ tests/executor_test.cpp 2016-08-08 09:17:09 +0000
1418@@ -33,6 +33,8 @@
1419 #include <boost/asio.hpp>
1420 #include <gtest/gtest.h>
1421
1422+#include <random>
1423+
1424 namespace dbus = core::dbus;
1425
1426 namespace
1427@@ -172,7 +174,7 @@
1428 bus->send(reply);
1429 });
1430
1431- cross_process_sync.try_signal_ready_for(std::chrono::milliseconds{500});
1432+ cross_process_sync.try_signal_ready_for(std::chrono::seconds{20});
1433
1434 std::thread w1([bus]() { bus->run(); });
1435 std::thread w2([bus]() { bus->run(); });
1436@@ -201,7 +203,7 @@
1437 // std::cout << "Invoke gdb with: sudo gdb -p " << getpid() << std::endl;
1438 // sleep(10);
1439
1440- EXPECT_EQ(std::uint32_t(1), cross_process_sync.wait_for_signal_ready_for(std::chrono::milliseconds{500}));
1441+ EXPECT_EQ(std::uint32_t(1), cross_process_sync.wait_for_signal_ready_for(std::chrono::seconds{20}));
1442
1443 auto stub_service = dbus::Service::use_service(bus, dbus::traits::Service<test::Service>::interface_name());
1444 auto stub = stub_service->object_for_path(dbus::types::ObjectPath("/this/is/unlikely/to/exist/Service"));
1445
1446=== modified file 'tests/message_test.cpp'
1447--- tests/message_test.cpp 2014-01-10 07:34:59 +0000
1448+++ tests/message_test.cpp 2016-08-08 09:17:09 +0000
1449@@ -175,3 +175,23 @@
1450 }
1451 }
1452 }
1453+
1454+namespace
1455+{
1456+class MessageType : public testing::TestWithParam<std::pair<core::dbus::Message::Type, std::string>>
1457+{
1458+};
1459+}
1460+
1461+TEST_P(MessageType, IsPrintedCorrectly)
1462+{
1463+ std::stringstream ss; ss << GetParam().first;
1464+ EXPECT_EQ(GetParam().second, ss.str());
1465+}
1466+
1467+INSTANTIATE_TEST_CASE_P(MessageType, MessageType, ::testing::Values(
1468+ std::make_pair(core::dbus::Message::Type::error, "error"),
1469+ std::make_pair(core::dbus::Message::Type::invalid, "invalid"),
1470+ std::make_pair(core::dbus::Message::Type::method_call, "method_call"),
1471+ std::make_pair(core::dbus::Message::Type::method_return, "method_return"),
1472+ std::make_pair(core::dbus::Message::Type::signal, "signal")));

Subscribers

People subscribed via source and target branches