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ß

Add missing file.

Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Needs Fixing (continuous-integration)
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Needs Fixing (continuous-integration)
Revision history for this message
Ł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ß

[ 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ß

Fix build on Y, accounting for toolchain bump.

108. By Thomas Voß

Switch to bileto_pre_release_hook

Revision history for this message
Ł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ß

Address reviewer comments.

110. By Thomas Voß

Make executor test more stable on slow builders.

Revision history for this message
Ł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
=== modified file 'CMakeLists.txt'
--- CMakeLists.txt 2015-10-20 15:27:46 +0000
+++ CMakeLists.txt 2016-08-08 09:17:09 +0000
@@ -18,6 +18,35 @@
1818
19project(dbus-cpp)19project(dbus-cpp)
2020
21# We haven't received version information via the packaging setup.
22# For that, we try to determine sensible values on our own, ensuring
23# plain old invocations to cmake still work as expected.
24if (NOT DEFINED DBUS_CPP_VERSION_MAJOR)
25 find_program(LSB_RELEASE lsb_release)
26 execute_process(
27 COMMAND ${LSB_RELEASE} -c -s
28 OUTPUT_VARIABLE DISTRO_CODENAME
29 OUTPUT_STRIP_TRAILING_WHITESPACE)
30
31 # We explicitly ignore errors and only check if we are building for vivid.
32 # For all other cases:
33 # - releases other than vivid
34 # - other distros
35 # - errors
36 # we define the version to be 2.0.0
37 if (${DISTRO_CODENAME} STREQUAL "vivid")
38 set(DBUS_CPP_VERSION_MAJOR 4)
39 set(DBUS_CPP_VERSION_MINOR 3)
40 set(DBUS_CPP_VERSION_PATCH 0)
41 else ()
42 set(DBUS_CPP_VERSION_MAJOR 5)
43 set(DBUS_CPP_VERSION_MINOR 0)
44 set(DBUS_CPP_VERSION_PATCH 0)
45 endif()
46endif()
47
48message(STATUS "${CMAKE_PROJECT_NAME} ${DBUS_CPP_VERSION_MAJOR}.${DBUS_CPP_VERSION_MINOR}.${DBUS_CPP_VERSION_PATCH}")
49
21find_package(Boost COMPONENTS filesystem program_options system REQUIRED)50find_package(Boost COMPONENTS filesystem program_options system REQUIRED)
22find_package(LibXml2 REQUIRED)51find_package(LibXml2 REQUIRED)
23find_package(PkgConfig REQUIRED)52find_package(PkgConfig REQUIRED)
@@ -61,10 +90,6 @@
61 SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -ftest-coverage -fprofile-arcs" )90 SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -ftest-coverage -fprofile-arcs" )
62ENDIF(CMAKE_BUILD_TYPE MATCHES [cC][oO][vV][eE][rR][aA][gG][eE])91ENDIF(CMAKE_BUILD_TYPE MATCHES [cC][oO][vV][eE][rR][aA][gG][eE])
6392
64set(DBUS_CPP_VERSION_MAJOR 5)
65set(DBUS_CPP_VERSION_MINOR 0)
66set(DBUS_CPP_VERSION_PATCH 0)
67
68include(CTest)93include(CTest)
6994
70include_directories(95include_directories(
7196
=== added file 'debian/VERSION'
--- debian/VERSION 1970-01-01 00:00:00 +0000
+++ debian/VERSION 2016-08-08 09:17:09 +0000
@@ -0,0 +1,1 @@
15.0.0
0\ No newline at end of file2\ No newline at end of file
13
=== added file 'debian/VERSION.vivid'
--- debian/VERSION.vivid 1970-01-01 00:00:00 +0000
+++ debian/VERSION.vivid 2016-08-08 09:17:09 +0000
@@ -0,0 +1,1 @@
14.3.0
0\ No newline at end of file2\ No newline at end of file
13
=== added file 'debian/bileto_pre_release_hook'
--- debian/bileto_pre_release_hook 1970-01-01 00:00:00 +0000
+++ debian/bileto_pre_release_hook 2016-08-08 09:17:09 +0000
@@ -0,0 +1,69 @@
1#!/bin/sh
2
3# Copyright (C) 2015 Canonical Ltd
4#
5# This program is free software: you can redistribute it and/or modify
6# it under the terms of the GNU Lesser General Public License version 3 as
7# published by the Free Software Foundation.
8#
9# This program is distributed in the hope that it will be useful,
10# but WITHOUT ANY WARRANTY; without even the implied warranty of
11# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12# GNU Lesser General Public License for more details.
13#
14# You should have received a copy of the GNU Lesser General Public License
15# along with this program. If not, see <http://www.gnu.org/licenses/>.
16#
17# Authored by: Michi Henning <michi.henning@canonical.com>
18# Thomas Voß <thomas.voss@canonical.com>
19# Robert Bruce Park <robert.park@canonical.com>
20
21#
22# Script to generate debian files for dual landing in Vivid (gcc 4.9 ABI)
23# and Wily and later (gcc 5 ABI).
24#
25# This script is called from debian/rules and generates:
26#
27# - control
28# - libdbus-cpp{soversion}.install
29#
30# For all but control, this is a straight substition and/or renaming exercise for each file.
31#
32
33set -e # Fail if any command fails.
34
35progname=$(basename $0)
36
37[ $# -gt 1 ] && {
38 echo "usage: $progname [path-to-debian-dir]" >&2
39 exit 1
40}
41dir=$1
42version_dir=$(mktemp -d)
43
44[ -n "$dir" ] || dir="./debian"
45[ -n "$SERIES" ] || SERIES="$(lsb_release -c -s)"
46
47# Dump version numbers into files and initialize vars from those files.
48sh ${dir}/get-versions.sh ${dir} ${version_dir}
49
50export DBUS_CPP_SOVERSION=$(cat $version_dir/libdbus-cpp.soversion)
51
52trap "rm -fr $version_dir" 0 INT TERM QUIT
53
54process()
55{
56 cat <<EOF
57# This file is autogenerated. DO NOT EDIT!
58#
59# Modifications should be made to $(basename "$1") instead.
60# This file is regenerated automatically in the clean target.
61#
62EOF
63 perl -pe 's/@([A-Z_]+)@/$ENV{$1} or die "$1 undefined"/eg' <"$1"
64}
65
66process "$dir/control.in" >"$dir/control"
67process "$dir/libdbus-cpp.install.in" > "$dir/libdbus-cpp${DBUS_CPP_SOVERSION}.install"
68
69exit 0
0\ No newline at end of file70\ No newline at end of file
171
=== modified file 'debian/changelog'
--- debian/changelog 2015-10-22 07:17:01 +0000
+++ debian/changelog 2016-08-08 09:17:09 +0000
@@ -23,6 +23,53 @@
2323
24 -- Thomas Voß <thomas.voss@canonical.com> Tue, 21 Jul 2015 12:36:46 +020024 -- Thomas Voß <thomas.voss@canonical.com> Tue, 21 Jul 2015 12:36:46 +0200
2525
26dbus-cpp (4.3.0+15.04.20160114.2-0ubuntu1) vivid; urgency=medium
27
28 [ CI Train Bot ]
29 * debian/libdbus-cpp4.symbols.32bit: update to released version.
30 * debian/libdbus-cpp4.symbols.64bit: update to released version.
31
32 [ Thomas Voß ]
33 * Add a proper operator<< for dbus::Message::Type. (LP: #1524131)
34
35 -- Thomas Voß <ci-train-bot@canonical.com> Thu, 14 Jan 2016 21:51:19 +0000
36
37dbus-cpp (4.3.0+15.04.20160112-0ubuntu1) vivid; urgency=medium
38
39 * Only run dbus_shutdown if explicitly requested by env var. (LP:
40 #1422304, #1526877)
41
42 -- Thomas Voß <ci-train-bot@canonical.com> Tue, 12 Jan 2016 16:28:02 +0000
43
44dbus-cpp (4.3.0+15.04.20151126-0ubuntu1) vivid; urgency=medium
45
46 [ CI Train Bot ]
47 * New rebuild forced.
48
49 [ Thomas Voß ]
50 * Ensure that Signal with non-void argument types correctly narrow
51 their match rules. (LP: #1480877)
52
53 -- Thomas Voß <ci-train-bot@canonical.com> Thu, 26 Nov 2015 07:31:37 +0000
54
55dbus-cpp (4.3.0+15.04.20151023-0ubuntu1) vivid; urgency=medium
56
57 [ CI Train Bot ]
58 * New rebuild forced.
59
60 [ Thomas Voß ]
61 * Do not cache emitted values for stub signals. (LP: #1509285)
62
63 -- Jim Hodapp <ci-train-bot@canonical.com> Fri, 23 Oct 2015 10:01:27 +0000
64
65dbus-cpp (4.3.0+15.04.20151020-0ubuntu1) vivid; urgency=medium
66
67 [ Manuel de la Pena ]
68 * Ensure that the signals are correctly emitted for when the services
69 appear and go.
70
71 -- Thomas Voß <ci-train-bot@canonical.com> Tue, 20 Oct 2015 10:55:11 +0000
72
26dbus-cpp (4.3.0+15.04.20150505-0ubuntu1) vivid; urgency=medium73dbus-cpp (4.3.0+15.04.20150505-0ubuntu1) vivid; urgency=medium
2774
28 [ CI Train Bot ]75 [ CI Train Bot ]
2976
=== modified file 'debian/control'
--- debian/control 2015-07-21 10:37:34 +0000
+++ debian/control 2016-08-08 09:17:09 +0000
@@ -1,3 +1,8 @@
1# This file is autogenerated. DO NOT EDIT!
2#
3# Modifications should be made to control.in instead.
4# This file is regenerated automatically in the clean target.
5#
1Source: dbus-cpp6Source: dbus-cpp
2Priority: optional7Priority: optional
3Maintainer: Thomas Voß <thomas.voss@ubuntu.com>8Maintainer: Thomas Voß <thomas.voss@ubuntu.com>
@@ -14,6 +19,7 @@
14 libprocess-cpp-dev,19 libprocess-cpp-dev,
15 libproperties-cpp-dev,20 libproperties-cpp-dev,
16 libxml2-dev,21 libxml2-dev,
22 lsb-release,
17Standards-Version: 3.9.523Standards-Version: 3.9.5
18Section: libs24Section: libs
19Homepage: http://launchpad.net/dbus-cpp25Homepage: http://launchpad.net/dbus-cpp
@@ -22,7 +28,7 @@
22Vcs-Bzr: https://code.launchpad.net/~phablet-team/dbus-cpp/trunk28Vcs-Bzr: https://code.launchpad.net/~phablet-team/dbus-cpp/trunk
23Vcs-Browser: http://bazaar.launchpad.net/~phablet-team/dbus-cpp/trunk/files29Vcs-Browser: http://bazaar.launchpad.net/~phablet-team/dbus-cpp/trunk/files
2430
25Package: libdbus-cpp531Package: libdbus-cpp4
26Section: libdevel32Section: libdevel
27Architecture: any33Architecture: any
28Multi-Arch: same34Multi-Arch: same
@@ -39,7 +45,7 @@
39Multi-Arch: foreign45Multi-Arch: foreign
40Depends: ${misc:Depends},46Depends: ${misc:Depends},
41 ${shlibs:Depends},47 ${shlibs:Depends},
42 libdbus-cpp5 (= ${binary:Version})48 libdbus-cpp4 (= ${binary:Version})
43Description: header-only dbus-binding leveraging C++-1149Description: header-only dbus-binding leveraging C++-11
44 Protocol compiler and generator to automatically generate protocol headers from50 Protocol compiler and generator to automatically generate protocol headers from
45 introspection XML.51 introspection XML.
@@ -51,7 +57,7 @@
51Depends: ${misc:Depends},57Depends: ${misc:Depends},
52 ${shlibs:Depends},58 ${shlibs:Depends},
53 dbus,59 dbus,
54 libdbus-cpp5 (= ${binary:Version})60 libdbus-cpp4 (= ${binary:Version})
55Replaces: dbus-cpp-dev61Replaces: dbus-cpp-dev
56Conflicts: dbus-cpp-dev62Conflicts: dbus-cpp-dev
57Provides: dbus-cpp-dev63Provides: dbus-cpp-dev
5864
=== added file 'debian/control.in'
--- debian/control.in 1970-01-01 00:00:00 +0000
+++ debian/control.in 2016-08-08 09:17:09 +0000
@@ -0,0 +1,73 @@
1Source: dbus-cpp
2Priority: optional
3Maintainer: Thomas Voß <thomas.voss@ubuntu.com>
4Build-Depends: cmake,
5 dbus,
6 debhelper (>= 9),
7 doxygen,
8 google-mock,
9 libboost-filesystem-dev,
10 libboost-system-dev,
11 libboost-program-options-dev,
12 libdbus-1-dev,
13 libgtest-dev,
14 libprocess-cpp-dev,
15 libproperties-cpp-dev,
16 libxml2-dev,
17 lsb-release,
18Standards-Version: 3.9.5
19Section: libs
20Homepage: http://launchpad.net/dbus-cpp
21# If you aren't a member of ~phablet-team but need to upload packaging changes,
22# just go ahead. ~phablet-team will notice and sync up the code again.
23Vcs-Bzr: https://code.launchpad.net/~phablet-team/dbus-cpp/trunk
24Vcs-Browser: http://bazaar.launchpad.net/~phablet-team/dbus-cpp/trunk/files
25
26Package: libdbus-cpp@DBUS_CPP_SOVERSION@
27Section: libdevel
28Architecture: any
29Multi-Arch: same
30Depends: ${misc:Depends},
31 ${shlibs:Depends},
32Description: header-only dbus-binding leveraging C++-11
33 A header-only dbus-binding leveraging C++-11, relying on compile-time
34 polymorphism to integrate with arbitrary type systems. Runtime portions to bind
35 to different event loops.
36
37Package: dbus-cpp-bin
38Section: libdevel
39Architecture: any
40Multi-Arch: foreign
41Depends: ${misc:Depends},
42 ${shlibs:Depends},
43 libdbus-cpp@DBUS_CPP_SOVERSION@ (= ${binary:Version})
44Description: header-only dbus-binding leveraging C++-11
45 Protocol compiler and generator to automatically generate protocol headers from
46 introspection XML.
47
48Package: libdbus-cpp-dev
49Section: libdevel
50Architecture: any
51Multi-Arch: same
52Depends: ${misc:Depends},
53 ${shlibs:Depends},
54 dbus,
55 libdbus-cpp@DBUS_CPP_SOVERSION@ (= ${binary:Version})
56Replaces: dbus-cpp-dev
57Conflicts: dbus-cpp-dev
58Provides: dbus-cpp-dev
59Description: header-only dbus-binding leveraging C++-11
60 A header-only dbus-binding leveraging C++-11, relying on compile-time
61 polymorphism to integrate with arbitrary type systems.
62
63Package: dbus-cpp-dev-examples
64Section: x11
65Architecture: any
66Multi-Arch: same
67Depends: ${misc:Depends},
68 ${shlibs:Depends},
69Description: header-only dbus-binding leveraging C++-11, example binaries
70 A header-only dbus-binding leveraging C++-11, relying on compile-time
71 polymorphism to integrate with arbitrary type systems.
72 .
73 This package provides examples.
074
=== added file 'debian/get-versions.sh'
--- debian/get-versions.sh 1970-01-01 00:00:00 +0000
+++ debian/get-versions.sh 2016-08-08 09:17:09 +0000
@@ -0,0 +1,67 @@
1#!/bin/sh
2
3# Copyright (C) 2015 Canonical Ltd
4#
5# This program is free software: you can redistribute it and/or modify
6# it under the terms of the GNU Lesser General Public License version 3 as
7# published by the Free Software Foundation.
8#
9# This program is distributed in the hope that it will be useful,
10# but WITHOUT ANY WARRANTY; without even the implied warranty of
11# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12# GNU Lesser General Public License for more details.
13#
14# You should have received a copy of the GNU Lesser General Public License
15# along with this program. If not, see <http://www.gnu.org/licenses/>.
16#
17# Authored by: Michi Henning <michi.henning@canonical.com>
18
19#
20# Script to read the version numbers from VERSION and QT-VERSION
21# and write the version components and the soversion numbers
22# into separate files, so we can pick them up from both
23# gen-debian-files.sh and CMakeLists.txt.
24#
25
26set -e # Fail if any command fails.
27
28progname=$(basename $0)
29
30[ $# -lt 1 -o $# -gt 2 ] && {
31 echo "usage: $progname path-to-debian-dir [output-dir]" >&2
32 exit 1
33}
34dir=$1
35output_dir=`pwd`
36[ $# -eq 2 ] && output_dir=$2
37
38# Write the various version numbers into a bunch of files. This allows
39# us to easily pick them up from both gen-debian-files.sh and CMakeLists.txt.
40
41distro=$(lsb_release -c -s)
42
43full_version=$(cat "${dir}"/VERSION)
44
45major=$(echo $full_version | cut -d'.' -f1)
46minor=$(echo $full_version | cut -d'.' -f2)
47micro=$(echo $full_version | cut -d'.' -f3)
48major_minor="${major}.${minor}"
49
50vivid_full_version=$(cat "${dir}"/VERSION.vivid)
51vivid_major=$(echo $vivid_full_version | cut -d'.' -f1)
52vivid_soversion=$vivid_major
53
54if [ "$distro" = "vivid" ]
55then
56 soversion=${vivid_soversion}
57else
58 soversion="${major}"
59fi
60[ -n $soversion ]
61
62echo ${full_version} >${output_dir}/libdbus-cpp.full-version
63echo ${major} >${output_dir}/libdbus-cpp.major-version
64echo ${minor} >${output_dir}/libdbus-cpp.minor-version
65echo ${micro} >${output_dir}/libdbus-cpp.micro-version
66echo ${major_minor} >${output_dir}/libdbus-cpp.major-minor-version
67echo ${soversion} >${output_dir}/libdbus-cpp.soversion
068
=== renamed file 'debian/libdbus-cpp5.install' => 'debian/libdbus-cpp.install.in'
=== removed file 'debian/libdbus-cpp5.symbols.32bit'
--- debian/libdbus-cpp5.symbols.32bit 2015-10-21 08:00:49 +0000
+++ debian/libdbus-cpp5.symbols.32bit 1970-01-01 00:00:00 +0000
@@ -1,198 +0,0 @@
1 (c++)"core::dbus::Fixture::system_bus_address[abi:cxx11]()@Base" 4.3.0+15.04.20150505
2 (c++)"core::dbus::Fixture::session_bus_address[abi:cxx11]()@Base" 4.3.0+15.04.20150505
3 (c++)"core::dbus::Fixture::default_daemon_timeout()@Base" 4.0.0+14.10.20140730
4 (c++)"core::dbus::asio::make_executor(std::shared_ptr<core::dbus::Bus> const&)@Base" 2.0.0+14.04.20140310
5 (c++)"core::dbus::asio::make_executor(std::shared_ptr<core::dbus::Bus> const&, boost::asio::io_service&)@Base" 3.1.0+14.10.20140711
6 (c++)"core::dbus::Bus::access_signal_router()@Base" 2.0.0+14.04.20140310
7 (c++)"core::dbus::Bus::add_match(core::dbus::MatchRule const&)@Base" 2.0.0+14.04.20140310
8 (c++)"core::dbus::Bus::~Bus()@Base" 2.0.0+14.04.20140310
9 (c++)"core::dbus::Bus::Bus(core::dbus::WellKnownBus)@Base" 2.0.0+14.04.20140310
10 (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
11 (c++)"core::dbus::Bus::handle_message(std::shared_ptr<core::dbus::Message> const&)@Base" 2.0.0+14.04.20140310
12 (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
13 (c++)"core::dbus::Bus::install_executor(std::shared_ptr<core::dbus::Executor> const&)@Base" 2.0.0+14.04.20140310
14 (c++)"core::dbus::Bus::message_factory()@Base" 2.0.0+14.04.20140310
15 (c++)"core::dbus::Bus::Name::as_string[abi:cxx11]() const@Base" 2.0.0+14.04.20140310
16 (c++)"core::dbus::Bus::Name::Name(core::dbus::Bus::Name&&)@Base" 2.0.0+14.04.20140310
17 (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
18 (c++)"core::dbus::Bus::Name::operator=(core::dbus::Bus::Name&&)@Base" 2.0.0+14.04.20140310
19 (c++)"core::dbus::Bus::raw() const@Base" 2.0.0+14.04.20140310
20 (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
21 (c++)"core::dbus::Bus::release_name_on_bus(core::dbus::Bus::Name&&)@Base" 2.0.0+14.04.20140310
22 (c++)"core::dbus::Bus::remove_match(core::dbus::MatchRule const&)@Base" 2.0.0+14.04.20140310
23 (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
24 (c++)"core::dbus::Bus::run()@Base" 2.0.0+14.04.20140310
25 (c++)"core::dbus::Bus::send(std::shared_ptr<core::dbus::Message> const&)@Base" 2.0.0+14.04.20140310
26 (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
27 (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
28 (c++)"core::dbus::Bus::stop()@Base" 2.0.0+14.04.20140310
29 (c++)"core::dbus::Bus::unregister_object_path(core::dbus::types::ObjectPath const&)@Base" 2.0.0+14.04.20140310
30 (c++)"core::dbus::DBus::DBus(std::shared_ptr<core::dbus::Bus> const&)@Base" 2.0.0+14.04.20140310
31 (c++)"core::dbus::DBus::GetConnectionUnixProcessID::name[abi:cxx11]()::s@Base" 2.0.0+14.04.20140310
32 (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
33 (c++)"core::dbus::DBus::GetConnectionUnixUser::name[abi:cxx11]()::s@Base" 2.0.0+14.04.20140310
34 (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
35 (c++)"core::dbus::DBus::hello[abi:cxx11]() const@Base" 2.0.0+14.04.20140310
36 (c++)"core::dbus::DBus::Hello::name[abi:cxx11]()::s@Base" 2.0.0+14.04.20140310
37 (c++)"core::dbus::DBus::interface[abi:cxx11]()@Base" 2.0.0+14.04.20140310
38 (c++)"core::dbus::DBus::list_names[abi:cxx11]() const@Base" 2.0.0+14.04.20140310
39 (c++)"core::dbus::DBus::ListNames::name[abi:cxx11]()::s@Base" 2.0.0+14.04.20140310
40 (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
41 (c++)"core::dbus::DBus::name[abi:cxx11]()@Base" 2.0.0+14.04.20140310
42 (c++)"core::dbus::DBus::path()@Base" 2.0.0+14.04.20140310
43 (c++)"core::dbus::Error::~Error()@Base" 2.0.0+14.04.20140310
44 (c++)"core::dbus::Error::Error()@Base" 2.0.0+14.04.20140310
45 (c++)"core::dbus::Error::Error(core::dbus::Error&&)@Base" 2.0.0+14.04.20140310
46 (c++)"core::dbus::Error::message[abi:cxx11]() const@Base" 2.0.0+14.04.20140310
47 (c++)"core::dbus::Error::name[abi:cxx11]() const@Base" 2.0.0+14.04.20140310
48 (c++)"core::dbus::Error::operator bool() const@Base" 2.0.0+14.04.20140310
49 (c++)"core::dbus::Error::operator=(core::dbus::Error&&)@Base" 2.0.0+14.04.20140310
50 (c++)"core::dbus::Error::print[abi:cxx11]() const@Base" 2.0.0+14.04.20140310
51 (c++)"core::dbus::Error::raw()@Base" 2.0.0+14.04.20140310
52 (c++)"core::dbus::Fixture::create_connection_to_session_bus()@Base" 2.0.0+14.04.20140310
53 (c++)"core::dbus::Fixture::create_connection_to_system_bus()@Base" 2.0.0+14.04.20140310
54 (c++)"core::dbus::Fixture::default_session_bus_config_file[abi:cxx11]()@Base" 2.0.0+14.04.20140310
55 (c++)"core::dbus::Fixture::default_system_bus_config_file[abi:cxx11]()@Base" 2.0.0+14.04.20140310
56 (c++)"core::dbus::Fixture::~Fixture()@Base" 2.0.0+14.04.20140310
57 (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
58 (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
59 (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
60 (c++)"core::dbus::MatchRule::as_string[abi:cxx11]() const@Base" 2.0.0+14.04.20140310
61 (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
62 (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
63 (c++)"core::dbus::MatchRule::~MatchRule()@Base" 2.0.0+14.04.20140310
64 (c++)"core::dbus::MatchRule::MatchRule()@Base" 2.0.0+14.04.20140310
65 (c++)"core::dbus::MatchRule::MatchRule(core::dbus::MatchRule const&)@Base" 2.0.0+14.04.20140310
66 (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
67 (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
68 (c++)"core::dbus::MatchRule::operator=(core::dbus::MatchRule const&)@Base" 2.0.0+14.04.20140310
69 (c++)"core::dbus::MatchRule::path(core::dbus::types::ObjectPath const&)@Base" 2.0.0+14.04.20140310
70 (c++)"core::dbus::MatchRule::path(core::dbus::types::ObjectPath const&) const@Base" 2.0.0+14.04.20140310
71 (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
72 (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
73 (c++)"core::dbus::MatchRule::type(core::dbus::Message::Type)@Base" 2.0.0+14.04.20140310
74 (c++)"core::dbus::MatchRule::type(core::dbus::Message::Type) const@Base" 2.0.0+14.04.20140310
75 (c++)"core::dbus::Message::clone()@Base" 2.0.0+14.04.20140310
76 (c++)"core::dbus::Message::destination[abi:cxx11]() const@Base" 2.0.0+14.04.20140310
77 (c++)"core::dbus::Message::ensure_serial_larger_than_zero_for_testing()@Base" 2.0.0+14.04.20140310
78 (c++)"core::dbus::Message::error() const@Base" 2.0.0+14.04.20140310
79 (c++)"core::dbus::Message::expects_reply() const@Base" 2.0.0+14.04.20140310
80 (c++)"core::dbus::Message::from_raw_message(DBusMessage*)@Base" 2.0.0+14.04.20140310
81 (c++)"core::dbus::Message::interface[abi:cxx11]() const@Base" 2.0.0+14.04.20140310
82 (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
83 (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
84 (c++)"core::dbus::Message::make_method_return(std::shared_ptr<core::dbus::Message> const&)@Base" 2.0.0+14.04.20140310
85 (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
86 (c++)"core::dbus::Message::member[abi:cxx11]() const@Base" 2.0.0+14.04.20140310
87 (c++)"core::dbus::Message::~Message()@Base" 2.0.0+14.04.20140310
88 (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
89 (c++)"core::dbus::Message::path() const@Base" 2.0.0+14.04.20140310
90 (c++)"core::dbus::Message::Reader::access_message()@Base" 2.0.0+14.04.20140310
91 (c++)"core::dbus::Message::reader()@Base" 2.0.0+14.04.20140310
92 (c++)"core::dbus::Message::Reader::operator=(core::dbus::Message::Reader&&)@Base" 2.0.0+14.04.20140310
93 (c++)"core::dbus::Message::Reader::pop_array()@Base" 2.0.0+14.04.20140310
94 (c++)"core::dbus::Message::Reader::pop()@Base" 2.0.0+14.04.20140310
95 (c++)"core::dbus::Message::Reader::pop_boolean()@Base" 2.0.0+14.04.20140310
96 (c++)"core::dbus::Message::Reader::pop_byte()@Base" 2.0.0+14.04.20140310
97 (c++)"core::dbus::Message::Reader::pop_dict_entry()@Base" 2.0.0+14.04.20140310
98 (c++)"core::dbus::Message::Reader::pop_floating_point()@Base" 2.0.0+14.04.20140310
99 (c++)"core::dbus::Message::Reader::pop_int16()@Base" 2.0.0+14.04.20140310
100 (c++)"core::dbus::Message::Reader::pop_int32()@Base" 2.0.0+14.04.20140310
101 (c++)"core::dbus::Message::Reader::pop_int64()@Base" 2.0.0+14.04.20140310
102 (c++)"core::dbus::Message::Reader::pop_object_path()@Base" 2.0.0+14.04.20140310
103 (c++)"core::dbus::Message::Reader::pop_signature()@Base" 2.0.0+14.04.20140310
104 (c++)"core::dbus::Message::Reader::pop_string()@Base" 2.0.0+14.04.20140310
105 (c++)"core::dbus::Message::Reader::pop_structure()@Base" 2.0.0+14.04.20140310
106 (c++)"core::dbus::Message::Reader::pop_uint16()@Base" 2.0.0+14.04.20140310
107 (c++)"core::dbus::Message::Reader::pop_uint32()@Base" 2.0.0+14.04.20140310
108 (c++)"core::dbus::Message::Reader::pop_uint64()@Base" 2.0.0+14.04.20140310
109 (c++)"core::dbus::Message::Reader::pop_unix_fd()@Base" 2.0.0+14.04.20140310
110 (c++)"core::dbus::Message::Reader::pop_variant()@Base" 2.0.0+14.04.20140310
111 (c++)"core::dbus::Message::Reader::~Reader()@Base" 2.0.0+14.04.20140310
112 (c++)"core::dbus::Message::Reader::Reader()@Base" 2.0.0+14.04.20140310
113 (c++)"core::dbus::Message::Reader::Reader(core::dbus::Message::Reader&&)@Base" 2.0.0+14.04.20140310
114 (c++)"core::dbus::Message::Reader::Reader(std::shared_ptr<core::dbus::Message> const&)@Base" 2.0.0+14.04.20140310
115 (c++)"core::dbus::Message::Reader::type() const@Base" 2.0.0+14.04.20140310
116 (c++)"core::dbus::Message::sender[abi:cxx11]() const@Base" 2.0.0+14.04.20140310
117 (c++)"core::dbus::Message::signature[abi:cxx11]() const@Base" 2.0.0+14.04.20140310
118 (c++)"core::dbus::Message::type() const@Base" 2.0.0+14.04.20140310
119 (c++)"core::dbus::Message::writer()@Base" 2.0.0+14.04.20140310
120 (c++)"core::dbus::Message::Writer::close_array(core::dbus::Message::Writer)@Base" 2.0.0+14.04.20140310
121 (c++)"core::dbus::Message::Writer::close_dict_entry(core::dbus::Message::Writer)@Base" 2.0.0+14.04.20140310
122 (c++)"core::dbus::Message::Writer::close_structure(core::dbus::Message::Writer)@Base" 2.0.0+14.04.20140310
123 (c++)"core::dbus::Message::Writer::close_variant(core::dbus::Message::Writer)@Base" 2.0.0+14.04.20140310
124 (c++)"core::dbus::Message::Writer::open_array(core::dbus::types::Signature const&)@Base" 2.0.0+14.04.20140310
125 (c++)"core::dbus::Message::Writer::open_dict_entry()@Base" 2.0.0+14.04.20140310
126 (c++)"core::dbus::Message::Writer::open_structure()@Base" 2.0.0+14.04.20140310
127 (c++)"core::dbus::Message::Writer::open_variant(core::dbus::types::Signature const&)@Base" 2.0.0+14.04.20140310
128 (c++)"core::dbus::Message::Writer::operator=(core::dbus::Message::Writer&&)@Base" 2.0.0+14.04.20140310
129 (c++)"core::dbus::Message::Writer::push_boolean(bool)@Base" 2.0.0+14.04.20140310
130 (c++)"core::dbus::Message::Writer::push_byte(signed char)@Base" 2.0.0+14.04.20140310
131 (c++)"core::dbus::Message::Writer::push_floating_point(double)@Base" 2.0.0+14.04.20140310
132 (c++)"core::dbus::Message::Writer::push_int16(short)@Base" 2.0.0+14.04.20140310
133 (c++)"core::dbus::Message::Writer::push_int32(int)@Base" 2.0.0+14.04.20140310
134 (c++)"core::dbus::Message::Writer::push_int64(long long)@Base" 2.0.0+14.04.20140310
135 (c++)"core::dbus::Message::Writer::push_object_path(core::dbus::types::ObjectPath const&)@Base" 2.0.0+14.04.20140310
136 (c++)"core::dbus::Message::Writer::push_signature(core::dbus::types::Signature const&)@Base" 2.0.0+14.04.20140310
137 (c++)"core::dbus::Message::Writer::push_stringn(char const*, unsigned int)@Base" 2.0.0+14.04.20140310
138 (c++)"core::dbus::Message::Writer::push_uint16(unsigned short)@Base" 2.0.0+14.04.20140310
139 (c++)"core::dbus::Message::Writer::push_uint32(unsigned int)@Base" 2.0.0+14.04.20140310
140 (c++)"core::dbus::Message::Writer::push_uint64(unsigned long long)@Base" 2.0.0+14.04.20140310
141 (c++)"core::dbus::Message::Writer::push_unix_fd(core::dbus::types::UnixFd const&)@Base" 2.0.0+14.04.20140310
142 (c++)"core::dbus::Message::Writer::~Writer()@Base" 2.0.0+14.04.20140310
143 (c++)"core::dbus::Message::Writer::Writer(core::dbus::Message::Writer&&)@Base" 2.0.0+14.04.20140310
144 (c++)"core::dbus::Message::Writer::Writer(std::shared_ptr<core::dbus::Message> const&)@Base" 2.0.0+14.04.20140310
145 (c++)"core::dbus::Service::add_match(core::dbus::MatchRule const&)@Base" 2.0.0+14.04.20140310
146 (c++)"core::dbus::Service::add_object_for_path(core::dbus::types::ObjectPath const&)@Base" 2.0.0+14.04.20140310
147 (c++)"core::dbus::Service::get_connection() const@Base" 2.0.0+14.04.20140310
148 (c++)"core::dbus::Service::get_name[abi:cxx11]() const@Base" 2.0.0+14.04.20140310
149 (c++)"core::dbus::Service::is_stub() const@Base" 2.0.0+14.04.20140310
150 (c++)"core::dbus::Service::object_for_path(core::dbus::types::ObjectPath const&)@Base" 2.0.0+14.04.20140310
151 (c++)"core::dbus::Service::remove_match(core::dbus::MatchRule const&)@Base" 2.0.0+14.04.20140310
152 (c++)"core::dbus::Service::root_object()@Base" 2.0.0+14.04.20140310
153 (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
154 (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
155 (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
156 (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
157 (c++)"core::dbus::ServiceWatcher::owner_changed[abi:cxx11]() const@Base" 2.0.0+14.04.20140310
158 (c++)"core::dbus::ServiceWatcher::service_registered() const@Base" 2.0.0+14.04.20140310
159 (c++)"core::dbus::ServiceWatcher::service_unregistered() const@Base" 2.0.0+14.04.20140310
160 (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
161 (c++)"core::dbus::types::ObjectPath::as_string[abi:cxx11]() const@Base" 2.0.0+14.04.20140310
162 (c++)"core::dbus::types::ObjectPath::empty() const@Base" 2.0.0+14.04.20140310
163 (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
164 (c++)"core::dbus::types::ObjectPath::operator<(core::dbus::types::ObjectPath const&) const@Base" 2.0.0+14.04.20140310
165 (c++)"core::dbus::types::ObjectPath::operator==(core::dbus::types::ObjectPath const&) const@Base" 2.0.0+14.04.20140310
166 (c++)"core::dbus::types::ObjectPath::operator!=(core::dbus::types::ObjectPath const&) const@Base" 2.0.0+14.04.20140310
167 (c++)"core::dbus::types::ObjectPath::root[abi:cxx11]()@Base" 2.0.0+14.04.20140310
168 (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
169 (c++)"std::hash<core::dbus::types::ObjectPath>::operator()(core::dbus::types::ObjectPath const&) const@Base" 2.0.0+14.04.20140310
170 (c++)"typeinfo for core::dbus::Bus::Errors::AlreadyOwned@Base" 2.0.0+14.04.20140310
171 (c++)"typeinfo for core::dbus::Bus::Errors::AlreadyOwner@Base" 2.0.0+14.04.20140310
172 (c++)"typeinfo for core::dbus::Bus::Errors::NoMemory@Base" 2.0.0+14.04.20140310
173 (c++)"typeinfo for core::dbus::Bus::Private::Private()::{lambda(std::shared_ptr<core::dbus::Message> const&)#1}@Base" 2.0.0+14.04.20140310
174 (c++)"typeinfo for core::dbus::Bus::Private::Private()::{lambda(std::shared_ptr<core::dbus::Message> const&)#2}@Base" 2.0.0+14.04.20140310
175 (c++)"typeinfo for core::dbus::Executor@Base" 2.0.0+14.04.20140310
176 (c++)"typeinfo for core::dbus::Fixture@Base" 2.0.0+14.04.20140310
177 (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
178 (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
179 (c++)"typeinfo for core::dbus::PendingCall@Base" 2.0.0+14.04.20140310
180 (c++)"typeinfo for core::dbus::types::ObjectPath::Errors::InvalidObjectPathStringRepresentation@Base" 2.0.0+14.04.20140310
181 (c++)"typeinfo name for core::dbus::Bus::Errors::AlreadyOwned@Base" 2.0.0+14.04.20140310
182 (c++)"typeinfo name for core::dbus::Bus::Errors::AlreadyOwner@Base" 2.0.0+14.04.20140310
183 (c++)"typeinfo name for core::dbus::Bus::Errors::NoMemory@Base" 2.0.0+14.04.20140310
184 (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
185 (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
186 (c++)"typeinfo name for core::dbus::Executor@Base" 2.0.0+14.04.20140310
187 (c++)"typeinfo name for core::dbus::Fixture@Base" 2.0.0+14.04.20140310
188 (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
189 (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
190 (c++)"typeinfo name for core::dbus::Message::Private::Private(DBusMessage*, bool)::{lambda(DBusMessage*)#1}@Base" 2.0.0+14.04.20140310
191 (c++)"typeinfo name for core::dbus::PendingCall@Base" 2.0.0+14.04.20140310
192 (c++)"typeinfo name for core::dbus::types::ObjectPath::Errors::InvalidObjectPathStringRepresentation@Base" 2.0.0+14.04.20140310
193 (c++)"vtable for core::dbus::Bus::Errors::AlreadyOwned@Base" 2.0.0+14.04.20140310
194 (c++)"vtable for core::dbus::Bus::Errors::AlreadyOwner@Base" 2.0.0+14.04.20140310
195 (c++)"vtable for core::dbus::Bus::Errors::NoMemory@Base" 2.0.0+14.04.20140310
196 (c++)"vtable for core::dbus::Fixture@Base" 2.0.0+14.04.20140310
197 (c++)"vtable for core::dbus::types::ObjectPath::Errors::InvalidObjectPathStringRepresentation@Base" 2.0.0+14.04.20140310
198#include "libdbus-cpp5.symbols.coverage"
1990
=== removed file 'debian/libdbus-cpp5.symbols.64bit'
--- debian/libdbus-cpp5.symbols.64bit 2015-10-21 08:00:49 +0000
+++ debian/libdbus-cpp5.symbols.64bit 1970-01-01 00:00:00 +0000
@@ -1,199 +0,0 @@
1 (c++)"core::dbus::Fixture::system_bus_address[abi:cxx11]()@Base" 4.3.0+15.04.20150505
2 (c++)"core::dbus::Fixture::session_bus_address[abi:cxx11]()@Base" 4.3.0+15.04.20150505
3 (c++)"core::dbus::Fixture::default_daemon_timeout()@Base" 4.0.0+14.10.20140730
4 (c++)"core::dbus::asio::make_executor(std::shared_ptr<core::dbus::Bus> const&)@Base" 2.0.0+14.04.20140310
5 (c++)"core::dbus::asio::make_executor(std::shared_ptr<core::dbus::Bus> const&, boost::asio::io_service&)@Base" 3.1.0+14.10.20140711
6 (c++)"core::dbus::Bus::access_signal_router()@Base" 2.0.0+14.04.20140310
7 (c++)"core::dbus::Bus::add_match(core::dbus::MatchRule const&)@Base" 2.0.0+14.04.20140310
8 (c++)"core::dbus::Bus::~Bus()@Base" 2.0.0+14.04.20140310
9 (c++)"core::dbus::Bus::Bus(core::dbus::WellKnownBus)@Base" 2.0.0+14.04.20140310
10 (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
11 (c++)"core::dbus::Bus::handle_message(std::shared_ptr<core::dbus::Message> const&)@Base" 2.0.0+14.04.20140310
12 (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
13 (c++)"core::dbus::Bus::install_executor(std::shared_ptr<core::dbus::Executor> const&)@Base" 2.0.0+14.04.20140310
14 (c++)"core::dbus::Bus::message_factory()@Base" 2.0.0+14.04.20140310
15 (c++)"core::dbus::Bus::Name::as_string[abi:cxx11]() const@Base" 2.0.0+14.04.20140310
16 (c++)"core::dbus::Bus::Name::Name(core::dbus::Bus::Name&&)@Base" 2.0.0+14.04.20140310
17 (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
18 (c++)"core::dbus::Bus::Name::operator=(core::dbus::Bus::Name&&)@Base" 2.0.0+14.04.20140310
19 (c++)"core::dbus::Bus::raw() const@Base" 2.0.0+14.04.20140310
20 (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
21 (c++)"core::dbus::Bus::release_name_on_bus(core::dbus::Bus::Name&&)@Base" 2.0.0+14.04.20140310
22 (c++)"core::dbus::Bus::remove_match(core::dbus::MatchRule const&)@Base" 2.0.0+14.04.20140310
23 (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
24 (c++)"core::dbus::Bus::run()@Base" 2.0.0+14.04.20140310
25 (c++)"core::dbus::Bus::send(std::shared_ptr<core::dbus::Message> const&)@Base" 2.0.0+14.04.20140310
26 (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
27 (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
28 (c++)"core::dbus::Bus::stop()@Base" 2.0.0+14.04.20140310
29 (c++)"core::dbus::Bus::unregister_object_path(core::dbus::types::ObjectPath const&)@Base" 2.0.0+14.04.20140310
30 (c++)"core::dbus::DBus::DBus(std::shared_ptr<core::dbus::Bus> const&)@Base" 2.0.0+14.04.20140310
31 (c++)"core::dbus::DBus::GetConnectionUnixProcessID::name[abi:cxx11]()::s@Base" 2.0.0+14.04.20140310
32 (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
33 (c++)"core::dbus::DBus::GetConnectionUnixUser::name[abi:cxx11]()::s@Base" 2.0.0+14.04.20140310
34 (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
35 (c++)"core::dbus::DBus::hello[abi:cxx11]() const@Base" 2.0.0+14.04.20140310
36 (c++)"core::dbus::DBus::Hello::name[abi:cxx11]()::s@Base" 2.0.0+14.04.20140310
37 (c++)"core::dbus::DBus::interface[abi:cxx11]()@Base" 2.0.0+14.04.20140310
38 (c++)"core::dbus::DBus::list_names[abi:cxx11]() const@Base" 2.0.0+14.04.20140310
39 (c++)"core::dbus::DBus::ListNames::name[abi:cxx11]()::s@Base" 2.0.0+14.04.20140310
40 (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
41 (c++)"core::dbus::DBus::name[abi:cxx11]()@Base" 2.0.0+14.04.20140310
42 (c++)"core::dbus::DBus::path()@Base" 2.0.0+14.04.20140310
43 (c++)"core::dbus::Error::~Error()@Base" 2.0.0+14.04.20140310
44 (c++)"core::dbus::Error::Error()@Base" 2.0.0+14.04.20140310
45 (c++)"core::dbus::Error::Error(core::dbus::Error&&)@Base" 2.0.0+14.04.20140310
46 (c++)"core::dbus::Error::message[abi:cxx11]() const@Base" 2.0.0+14.04.20140310
47 (c++)"core::dbus::Error::name[abi:cxx11]() const@Base" 2.0.0+14.04.20140310
48 (c++)"core::dbus::Error::operator bool() const@Base" 2.0.0+14.04.20140310
49 (c++)"core::dbus::Error::operator=(core::dbus::Error&&)@Base" 2.0.0+14.04.20140310
50 (c++)"core::dbus::Error::print[abi:cxx11]() const@Base" 2.0.0+14.04.20140310
51 (c++)"core::dbus::Error::raw()@Base" 2.0.0+14.04.20140310
52 (c++)"core::dbus::Fixture::create_connection_to_session_bus()@Base" 2.0.0+14.04.20140310
53 (c++)"core::dbus::Fixture::create_connection_to_system_bus()@Base" 2.0.0+14.04.20140310
54 (c++)"core::dbus::Fixture::default_session_bus_config_file[abi:cxx11]()@Base" 2.0.0+14.04.20140310
55 (c++)"core::dbus::Fixture::default_system_bus_config_file[abi:cxx11]()@Base" 2.0.0+14.04.20140310
56 (c++)"core::dbus::Fixture::~Fixture()@Base" 2.0.0+14.04.20140310
57 (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
58 (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
59 (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
60 (c++)"core::dbus::MatchRule::as_string[abi:cxx11]() const@Base" 2.0.0+14.04.20140310
61 (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
62 (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
63 (c++)"core::dbus::MatchRule::~MatchRule()@Base" 2.0.0+14.04.20140310
64 (c++)"core::dbus::MatchRule::MatchRule()@Base" 2.0.0+14.04.20140310
65 (c++)"core::dbus::MatchRule::MatchRule(core::dbus::MatchRule const&)@Base" 2.0.0+14.04.20140310
66 (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
67 (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
68 (c++)"core::dbus::MatchRule::operator=(core::dbus::MatchRule const&)@Base" 2.0.0+14.04.20140310
69 (c++)"core::dbus::MatchRule::path(core::dbus::types::ObjectPath const&)@Base" 2.0.0+14.04.20140310
70 (c++)"core::dbus::MatchRule::path(core::dbus::types::ObjectPath const&) const@Base" 2.0.0+14.04.20140310
71 (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
72 (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
73 (c++)"core::dbus::MatchRule::type(core::dbus::Message::Type)@Base" 2.0.0+14.04.20140310
74 (c++)"core::dbus::MatchRule::type(core::dbus::Message::Type) const@Base" 2.0.0+14.04.20140310
75 (c++)"core::dbus::Message::clone()@Base" 2.0.0+14.04.20140310
76 (c++)"core::dbus::Message::destination[abi:cxx11]() const@Base" 2.0.0+14.04.20140310
77 (c++)"core::dbus::Message::ensure_serial_larger_than_zero_for_testing()@Base" 2.0.0+14.04.20140310
78 (c++)"core::dbus::Message::error() const@Base" 2.0.0+14.04.20140310
79 (c++)"core::dbus::Message::expects_reply() const@Base" 2.0.0+14.04.20140310
80 (c++)"core::dbus::Message::from_raw_message(DBusMessage*)@Base" 2.0.0+14.04.20140310
81 (c++)"core::dbus::Message::interface[abi:cxx11]() const@Base" 2.0.0+14.04.20140310
82 (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
83 (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
84 (c++)"core::dbus::Message::make_method_return(std::shared_ptr<core::dbus::Message> const&)@Base" 2.0.0+14.04.20140310
85 (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
86 (c++)"core::dbus::Message::member[abi:cxx11]() const@Base" 2.0.0+14.04.20140310
87 (c++)"core::dbus::Message::~Message()@Base" 2.0.0+14.04.20140310
88 (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
89 (c++)"core::dbus::Message::path() const@Base" 2.0.0+14.04.20140310
90 (c++)"core::dbus::Message::Reader::access_message()@Base" 2.0.0+14.04.20140310
91 (c++)"core::dbus::Message::reader()@Base" 2.0.0+14.04.20140310
92 (c++)"core::dbus::Message::Reader::operator=(core::dbus::Message::Reader&&)@Base" 2.0.0+14.04.20140310
93 (c++)"core::dbus::Message::Reader::pop_array()@Base" 2.0.0+14.04.20140310
94 (c++)"core::dbus::Message::Reader::pop()@Base" 2.0.0+14.04.20140310
95 (c++)"core::dbus::Message::Reader::pop_boolean()@Base" 2.0.0+14.04.20140310
96 (c++)"core::dbus::Message::Reader::pop_byte()@Base" 2.0.0+14.04.20140310
97 (c++)"core::dbus::Message::Reader::pop_dict_entry()@Base" 2.0.0+14.04.20140310
98 (c++)"core::dbus::Message::Reader::pop_floating_point()@Base" 2.0.0+14.04.20140310
99 (c++)"core::dbus::Message::Reader::pop_int16()@Base" 2.0.0+14.04.20140310
100 (c++)"core::dbus::Message::Reader::pop_int32()@Base" 2.0.0+14.04.20140310
101 (c++)"core::dbus::Message::Reader::pop_int64()@Base" 2.0.0+14.04.20140310
102 (c++)"core::dbus::Message::Reader::pop_object_path()@Base" 2.0.0+14.04.20140310
103 (c++)"core::dbus::Message::Reader::pop_signature()@Base" 2.0.0+14.04.20140310
104 (c++)"core::dbus::Message::Reader::pop_string()@Base" 2.0.0+14.04.20140310
105 (c++)"core::dbus::Message::Reader::pop_structure()@Base" 2.0.0+14.04.20140310
106 (c++)"core::dbus::Message::Reader::pop_uint16()@Base" 2.0.0+14.04.20140310
107 (c++)"core::dbus::Message::Reader::pop_uint32()@Base" 2.0.0+14.04.20140310
108 (c++)"core::dbus::Message::Reader::pop_uint64()@Base" 2.0.0+14.04.20140310
109 (c++)"core::dbus::Message::Reader::pop_unix_fd()@Base" 2.0.0+14.04.20140310
110 (c++)"core::dbus::Message::Reader::pop_variant()@Base" 2.0.0+14.04.20140310
111 (c++)"core::dbus::Message::Reader::~Reader()@Base" 2.0.0+14.04.20140310
112 (c++)"core::dbus::Message::Reader::Reader()@Base" 2.0.0+14.04.20140310
113 (c++)"core::dbus::Message::Reader::Reader(core::dbus::Message::Reader&&)@Base" 2.0.0+14.04.20140310
114 (c++)"core::dbus::Message::Reader::Reader(std::shared_ptr<core::dbus::Message> const&)@Base" 2.0.0+14.04.20140310
115 (c++)"core::dbus::Message::Reader::type() const@Base" 2.0.0+14.04.20140310
116 (c++)"core::dbus::Message::sender[abi:cxx11]() const@Base" 2.0.0+14.04.20140310
117 (c++)"core::dbus::Message::signature[abi:cxx11]() const@Base" 2.0.0+14.04.20140310
118 (c++)"core::dbus::Message::type() const@Base" 2.0.0+14.04.20140310
119 (c++)"core::dbus::Message::writer()@Base" 2.0.0+14.04.20140310
120 (c++)"core::dbus::Message::Writer::close_array(core::dbus::Message::Writer)@Base" 2.0.0+14.04.20140310
121 (c++)"core::dbus::Message::Writer::close_dict_entry(core::dbus::Message::Writer)@Base" 2.0.0+14.04.20140310
122 (c++)"core::dbus::Message::Writer::close_structure(core::dbus::Message::Writer)@Base" 2.0.0+14.04.20140310
123 (c++)"core::dbus::Message::Writer::close_variant(core::dbus::Message::Writer)@Base" 2.0.0+14.04.20140310
124 (c++)"core::dbus::Message::Writer::open_array(core::dbus::types::Signature const&)@Base" 2.0.0+14.04.20140310
125 (c++)"core::dbus::Message::Writer::open_dict_entry()@Base" 2.0.0+14.04.20140310
126 (c++)"core::dbus::Message::Writer::open_structure()@Base" 2.0.0+14.04.20140310
127 (c++)"core::dbus::Message::Writer::open_variant(core::dbus::types::Signature const&)@Base" 2.0.0+14.04.20140310
128 (c++)"core::dbus::Message::Writer::operator=(core::dbus::Message::Writer&&)@Base" 2.0.0+14.04.20140310
129 (c++)"core::dbus::Message::Writer::push_boolean(bool)@Base" 2.0.0+14.04.20140310
130 (c++)"core::dbus::Message::Writer::push_byte(signed char)@Base" 2.0.0+14.04.20140310
131 (c++)"core::dbus::Message::Writer::push_floating_point(double)@Base" 2.0.0+14.04.20140310
132 (c++)"core::dbus::Message::Writer::push_int16(short)@Base" 2.0.0+14.04.20140310
133 (c++)"core::dbus::Message::Writer::push_int32(int)@Base" 2.0.0+14.04.20140310
134 (c++)"core::dbus::Message::Writer::push_int64(long)@Base" 2.0.0+14.04.20140310
135 (c++)"core::dbus::Message::Writer::push_object_path(core::dbus::types::ObjectPath const&)@Base" 2.0.0+14.04.20140310
136 (c++)"core::dbus::Message::Writer::push_signature(core::dbus::types::Signature const&)@Base" 2.0.0+14.04.20140310
137 (c++)"core::dbus::Message::Writer::push_stringn(char const*, unsigned long)@Base" 2.0.0+14.04.20140310
138 (c++)"core::dbus::Message::Writer::push_uint16(unsigned short)@Base" 2.0.0+14.04.20140310
139 (c++)"core::dbus::Message::Writer::push_uint32(unsigned int)@Base" 2.0.0+14.04.20140310
140 (c++)"core::dbus::Message::Writer::push_uint64(unsigned long)@Base" 2.0.0+14.04.20140310
141 (c++)"core::dbus::Message::Writer::push_unix_fd(core::dbus::types::UnixFd const&)@Base" 2.0.0+14.04.20140310
142 (c++)"core::dbus::Message::Writer::~Writer()@Base" 2.0.0+14.04.20140310
143 (c++)"core::dbus::Message::Writer::Writer(core::dbus::Message::Writer&&)@Base" 2.0.0+14.04.20140310
144 (c++)"core::dbus::Message::Writer::Writer(std::shared_ptr<core::dbus::Message> const&)@Base" 2.0.0+14.04.20140310
145 (c++)"core::dbus::Service::add_match(core::dbus::MatchRule const&)@Base" 2.0.0+14.04.20140310
146 (c++)"core::dbus::Service::add_object_for_path(core::dbus::types::ObjectPath const&)@Base" 2.0.0+14.04.20140310
147 (c++)"core::dbus::Service::get_connection() const@Base" 2.0.0+14.04.20140310
148 (c++)"core::dbus::Service::get_name[abi:cxx11]() const@Base" 2.0.0+14.04.20140310
149 (c++)"core::dbus::Service::is_stub() const@Base" 2.0.0+14.04.20140310
150 (c++)"core::dbus::Service::object_for_path(core::dbus::types::ObjectPath const&)@Base" 2.0.0+14.04.20140310
151 (c++)"core::dbus::Service::remove_match(core::dbus::MatchRule const&)@Base" 2.0.0+14.04.20140310
152 (c++)"core::dbus::Service::root_object()@Base" 2.0.0+14.04.20140310
153 (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
154 (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
155 (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
156 (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
157 (c++)"core::dbus::ServiceWatcher::owner_changed[abi:cxx11]() const@Base" 2.0.0+14.04.20140310
158 (c++)"core::dbus::ServiceWatcher::service_registered() const@Base" 2.0.0+14.04.20140310
159 (c++)"core::dbus::ServiceWatcher::service_unregistered() const@Base" 2.0.0+14.04.20140310
160 (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
161 (c++)"core::dbus::types::ObjectPath::as_string[abi:cxx11]() const@Base" 2.0.0+14.04.20140310
162 (c++)"core::dbus::types::ObjectPath::empty() const@Base" 2.0.0+14.04.20140310
163 (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
164 (c++)"core::dbus::types::ObjectPath::operator<(core::dbus::types::ObjectPath const&) const@Base" 2.0.0+14.04.20140310
165 (c++)"core::dbus::types::ObjectPath::operator==(core::dbus::types::ObjectPath const&) const@Base" 2.0.0+14.04.20140310
166 (c++)"core::dbus::types::ObjectPath::operator!=(core::dbus::types::ObjectPath const&) const@Base" 2.0.0+14.04.20140310
167 (c++)"core::dbus::types::ObjectPath::root[abi:cxx11]()@Base" 2.0.0+14.04.20140310
168 (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
169 (c++)"std::hash<core::dbus::types::ObjectPath>::operator()(core::dbus::types::ObjectPath const&) const@Base" 2.0.0+14.04.20140310
170 (c++)"typeinfo for core::dbus::Bus::Errors::AlreadyOwned@Base" 2.0.0+14.04.20140310
171 (c++)"typeinfo for core::dbus::Bus::Errors::AlreadyOwner@Base" 2.0.0+14.04.20140310
172 (c++)"typeinfo for core::dbus::Bus::Errors::NoMemory@Base" 2.0.0+14.04.20140310
173 (c++)"typeinfo for core::dbus::Bus::Private::Private()::{lambda(std::shared_ptr<core::dbus::Message> const&)#1}@Base" 2.0.0+14.04.20140310
174 (c++)"typeinfo for core::dbus::Bus::Private::Private()::{lambda(std::shared_ptr<core::dbus::Message> const&)#2}@Base" 2.0.0+14.04.20140310
175 (c++)"typeinfo for core::dbus::Executor@Base" 2.0.0+14.04.20140310
176 (c++)"typeinfo for core::dbus::Fixture@Base" 2.0.0+14.04.20140310
177 (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
178 (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
179 (c++)"typeinfo for core::dbus::PendingCall@Base" 2.0.0+14.04.20140310
180 (c++)"typeinfo for core::dbus::types::ObjectPath::Errors::InvalidObjectPathStringRepresentation@Base" 2.0.0+14.04.20140310
181 (c++)"typeinfo name for core::dbus::Bus::Errors::AlreadyOwned@Base" 2.0.0+14.04.20140310
182 (c++)"typeinfo name for core::dbus::Bus::Errors::AlreadyOwner@Base" 2.0.0+14.04.20140310
183 (c++)"typeinfo name for core::dbus::Bus::Errors::NoMemory@Base" 2.0.0+14.04.20140310
184 (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
185 (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
186 (c++)"typeinfo name for core::dbus::Executor@Base" 2.0.0+14.04.20140310
187 (c++)"typeinfo name for core::dbus::Fixture@Base" 2.0.0+14.04.20140310
188 (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
189 (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
190 (c++)"typeinfo name for core::dbus::Message::Private::Private(DBusMessage*, bool)::{lambda(DBusMessage*)#1}@Base" 2.0.0+14.04.20140310
191 (c++)"typeinfo name for core::dbus::PendingCall@Base" 2.0.0+14.04.20140310
192 (c++)"typeinfo name for core::dbus::types::ObjectPath::Errors::InvalidObjectPathStringRepresentation@Base" 2.0.0+14.04.20140310
193 (c++)"vtable for core::dbus::Bus::Errors::AlreadyOwned@Base" 2.0.0+14.04.20140310
194 (c++)"vtable for core::dbus::Bus::Errors::AlreadyOwner@Base" 2.0.0+14.04.20140310
195 (c++)"vtable for core::dbus::Bus::Errors::NoMemory@Base" 2.0.0+14.04.20140310
196 (c++)"vtable for core::dbus::Fixture@Base" 2.0.0+14.04.20140310
197 (c++)"vtable for core::dbus::types::ObjectPath::Errors::InvalidObjectPathStringRepresentation@Base" 2.0.0+14.04.20140310
198#include "libdbus-cpp5.symbols.coverage"
199
2000
=== removed file 'debian/libdbus-cpp5.symbols.amd64'
--- debian/libdbus-cpp5.symbols.amd64 2015-10-21 08:00:49 +0000
+++ debian/libdbus-cpp5.symbols.amd64 1970-01-01 00:00:00 +0000
@@ -1,2 +0,0 @@
1libdbus-cpp.so.5 libdbus-cpp5 #MINVER#
2#include "libdbus-cpp5.symbols.64bit"
30
=== removed file 'debian/libdbus-cpp5.symbols.arm64'
--- debian/libdbus-cpp5.symbols.arm64 2015-10-21 08:00:49 +0000
+++ debian/libdbus-cpp5.symbols.arm64 1970-01-01 00:00:00 +0000
@@ -1,2 +0,0 @@
1libdbus-cpp.so.5 libdbus-cpp5 #MINVER#
2#include "libdbus-cpp5.symbols.64bit"
30
=== removed file 'debian/libdbus-cpp5.symbols.armhf'
--- debian/libdbus-cpp5.symbols.armhf 2015-10-21 08:00:49 +0000
+++ debian/libdbus-cpp5.symbols.armhf 1970-01-01 00:00:00 +0000
@@ -1,2 +0,0 @@
1libdbus-cpp.so.5 libdbus-cpp5 #MINVER#
2#include "libdbus-cpp5.symbols.32bit"
30
=== removed file 'debian/libdbus-cpp5.symbols.coverage'
--- debian/libdbus-cpp5.symbols.coverage 2015-10-21 08:00:49 +0000
+++ debian/libdbus-cpp5.symbols.coverage 1970-01-01 00:00:00 +0000
@@ -1,5 +0,0 @@
1 (c++|optional)"core::dbus::ServiceWatcher::Private::Private()@Base" 2.0.0+14.04.20140310
2 (c++|optional)"core::dbus::Bus::Name::~Name()@Base" 2.0.0+14.04.20140310
3 (c++|optional)"core::dbus::Bus::Private::~Private()@Base" 2.0.0+14.04.20140310
4 (c++|optional)"core::dbus::Message::Writer::Private::~Private()@Base" 2.0.0+14.04.20140310
5 (c++|optional)"typeinfo for core::dbus::Message::Private::Private(DBusMessage*, bool)::{lambda(DBusMessage*)#1}@Base" 2.0.0+14.04.20140310
60
=== removed file 'debian/libdbus-cpp5.symbols.i386'
--- debian/libdbus-cpp5.symbols.i386 2015-10-21 08:00:49 +0000
+++ debian/libdbus-cpp5.symbols.i386 1970-01-01 00:00:00 +0000
@@ -1,2 +0,0 @@
1libdbus-cpp.so.5 libdbus-cpp5 #MINVER#
2#include "libdbus-cpp5.symbols.32bit"
30
=== removed file 'debian/libdbus-cpp5.symbols.powerpc'
--- debian/libdbus-cpp5.symbols.powerpc 2015-10-21 08:00:49 +0000
+++ debian/libdbus-cpp5.symbols.powerpc 1970-01-01 00:00:00 +0000
@@ -1,2 +0,0 @@
1libdbus-cpp.so.5 libdbus-cpp5 #MINVER#
2#include "libdbus-cpp5.symbols.32bit"
30
=== removed file 'debian/libdbus-cpp5.symbols.ppc64el'
--- debian/libdbus-cpp5.symbols.ppc64el 2015-10-21 08:00:49 +0000
+++ debian/libdbus-cpp5.symbols.ppc64el 1970-01-01 00:00:00 +0000
@@ -1,2 +0,0 @@
1libdbus-cpp.so.5 libdbus-cpp5 #MINVER#
2#include "libdbus-cpp5.symbols.64bit"
30
=== modified file 'debian/rules'
--- debian/rules 2015-07-21 10:37:34 +0000
+++ debian/rules 2016-08-08 09:17:09 +0000
@@ -6,15 +6,31 @@
66
7include /usr/share/dpkg/default.mk7include /usr/share/dpkg/default.mk
88
9distro=$(shell lsb_release -c -s)
10
11ifeq ($(distro),vivid)
12 full_version=$(shell cat $(CURDIR)/debian/VERSION.vivid)
13else
14 full_version=$(shell cat $(CURDIR)/debian/VERSION)
15endif
16
17major=$(shell echo $(full_version) | cut -d'.' -f1)
18minor=$(shell echo $(full_version) | cut -d'.' -f2)
19patch=$(shell echo $(full_version) | cut -d'.' -f3)
20
9export DPKG_GENSYMBOLS_CHECK_LEVEL=421export DPKG_GENSYMBOLS_CHECK_LEVEL=4
1022
11%:23%:
12 dh $@24 dh $@
1325
14override_dh_auto_configure:26override_dh_auto_configure:
15 dh_auto_configure -- -DCMAKE_INSTALL_LIBEXECDIR=/usr/lib/$(DEB_HOST_MULTIARCH)/dbus-cpp -DCMAKE_C_COMPILER=$(CC) -DCMAKE_CXX_COMPILER=$(CXX)27 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)
1628
17override_dh_auto_test:29override_dh_auto_test:
18 if [ "$(DEB_HOST_MULTIARCH)" != "powerpc-linux-gnu" ]; then \30 if [ "$(DEB_HOST_MULTIARCH)" != "powerpc-linux-gnu" ]; then \
19 dh_auto_test; \31 dh_auto_test; \
20 fi32 fi
33
34override_dh_auto_clean:
35 /bin/sh $(CURDIR)/debian/bileto_pre_release_hook
36 dh_auto_clean
2137
=== modified file 'include/core/dbus/impl/object.h'
--- include/core/dbus/impl/object.h 2014-10-30 13:22:52 +0000
+++ include/core/dbus/impl/object.h 2016-08-08 09:17:09 +0000
@@ -19,7 +19,6 @@
19#define CORE_DBUS_IMPL_OBJECT_H_19#define CORE_DBUS_IMPL_OBJECT_H_
2020
21#include <core/dbus/bus.h>21#include <core/dbus/bus.h>
22#include <core/dbus/lifetime_constrained_cache.h>
23#include <core/dbus/match_rule.h>22#include <core/dbus/match_rule.h>
24#include <core/dbus/message_router.h>23#include <core/dbus/message_router.h>
25#include <core/dbus/message_streaming_operators.h>24#include <core/dbus/message_streaming_operators.h>
@@ -37,6 +36,7 @@
3736
38#include <functional>37#include <functional>
39#include <future>38#include <future>
39#include <iostream>
40#include <map>40#include <map>
41#include <memory>41#include <memory>
42#include <string>42#include <string>
@@ -70,17 +70,17 @@
70 object_path.as_string(),70 object_path.as_string(),
71 traits::Service<typename Method::Interface>::interface_name().c_str(),71 traits::Service<typename Method::Interface>::interface_name().c_str(),
72 Method::name());72 Method::name());
73 73
74 if (!msg)74 if (!msg)
75 throw std::runtime_error("No memory available to allocate DBus message");75 throw std::runtime_error("No memory available to allocate DBus message");
76 76
77 auto writer = msg->writer();77 auto writer = msg->writer();
78 encode_message(writer, args...);78 encode_message(writer, args...);
79 79
80 auto reply = parent->get_connection()->send_with_reply_and_block_for_at_most(80 auto reply = parent->get_connection()->send_with_reply_and_block_for_at_most(
81 msg,81 msg,
82 Method::default_timeout());82 Method::default_timeout());
83 83
84 return Result<ResultType>::from_message(reply);84 return Result<ResultType>::from_message(reply);
85}85}
8686
@@ -153,40 +153,57 @@
153inline std::shared_ptr<Property<PropertyDescription>>153inline std::shared_ptr<Property<PropertyDescription>>
154Object::get_property()154Object::get_property()
155{155{
156 // If this is a proxy object we set up listening for property changes the
157 // first time someone accesses properties.
158 if (parent->is_stub())
159 {
160 if (!signal_properties_changed)
161 {
162 signal_properties_changed
163 = get_signal<interfaces::Properties::Signals::PropertiesChanged>();
164
165 signal_properties_changed->connect(
166 std::bind(
167 &Object::on_properties_changed,
168 shared_from_this(),
169 std::placeholders::_1));
170 }
171 }
172
173 typedef Property<PropertyDescription> PropertyType;156 typedef Property<PropertyDescription> PropertyType;
174 auto property =
175 PropertyType::make_property(
176 shared_from_this());
177157
158 // Creating a stub property for a remote object/property instance
159 // requires the following steps:
160 // [1.] Look up if we already have a property instance available in the cache,
161 // leveraging the tuple (path, interface, name) as key.
162 // [1.1] If yes: return the property.
163 // [1.2] If no: Create a new proeprty instance and:
164 // [1.2.1] Make it known to the cache.
165 // [1.2.2] Wire it up for property_changed signal receiving.
166 // [1.2.3] Communicate a new match rule to the dbus daemon to enable reception.
178 if (parent->is_stub())167 if (parent->is_stub())
179 {168 {
180 auto tuple = std::make_tuple(169 auto itf = traits::Service<typename PropertyDescription::Interface>::interface_name();
181 traits::Service<typename PropertyDescription::Interface>::interface_name(),170 auto name = PropertyDescription::name();
182 PropertyDescription::name());171 auto ekey = std::make_tuple(path(), itf, name);
183172
184 property_changed_vtable[tuple] = std::bind(173 auto property = Object::property_cache<PropertyDescription>().retrieve_value_for_key(ekey);
185 &Property<PropertyDescription>::handle_changed,174 if (property)
186 property,175 {
187 std::placeholders::_1);176 return property;
177 }
178
179 auto mr = MatchRule()
180 .type(Message::Type::signal)
181 .interface(traits::Service<interfaces::Properties>::interface_name())
182 .member(interfaces::Properties::Signals::PropertiesChanged::name());
183
184 property = PropertyType::make_property(shared_from_this());
185
186 Object::property_cache<PropertyDescription>().insert_value_for_key(ekey, property);
187
188 // We only ever do this once per object.
189 std::call_once(add_match_once, [&]()
190 {
191 // [1.2.4] Inform the dbus daemon that we would like to receive the respective signals.
192 add_match(mr);
193 });
194
195 // [1.2.2] Enable dispatching of changes.
196 std::weak_ptr<PropertyType> wp{property};
197 property_changed_vtable[std::make_tuple(itf, name)] = [wp](const types::Variant& arg)
198 {
199 if (auto sp = wp.lock())
200 sp->handle_changed(arg);
201 };
202
203 return property;
188 }204 }
189 return property;205
206 return PropertyType::make_property(shared_from_this());
190}207}
191208
192template<typename Interface>209template<typename Interface>
@@ -312,6 +329,23 @@
312 &MessageRouter<PropertyKey>::operator(), 329 &MessageRouter<PropertyKey>::operator(),
313 std::ref(set_property_router), 330 std::ref(set_property_router),
314 std::placeholders::_1));331 std::placeholders::_1));
332 } else
333 {
334 // We centrally route org.freedesktop.DBus.Properties.PropertiesChanged
335 // through the object, which in turn routes via a custom Property cache.
336 signal_router.install_route(
337 SignalKey{
338 traits::Service<interfaces::Properties>::interface_name(),
339 interfaces::Properties::Signals::PropertiesChanged::name()
340 },
341 // Passing 'this' is fine as the lifetime of the signal_router is upper limited
342 // by the lifetime of 'this'.
343 [this](const Message::Ptr& msg)
344 {
345 interfaces::Properties::Signals::PropertiesChanged::ArgumentType arg;
346 msg->reader() >> arg;
347 on_properties_changed(arg);
348 });
315 }349 }
316}350}
317351
@@ -319,6 +353,20 @@
319{353{
320 parent->get_connection()->access_signal_router().uninstall_route(object_path);354 parent->get_connection()->access_signal_router().uninstall_route(object_path);
321 parent->get_connection()->unregister_object_path(object_path);355 parent->get_connection()->unregister_object_path(object_path);
356
357 auto mr = MatchRule()
358 .type(Message::Type::signal)
359 .interface(traits::Service<interfaces::Properties>::interface_name())
360 .member(interfaces::Properties::Signals::PropertiesChanged::name());
361
362 try
363 {
364 remove_match(mr);
365 } catch(...)
366 {
367 // We consciously drop all possible exceptions here. There is hardly
368 // anything we can do about the error anyway.
369 }
322}370}
323371
324inline void Object::add_match(const MatchRule& rule)372inline void Object::add_match(const MatchRule& rule)
@@ -346,6 +394,19 @@
346 }394 }
347 }395 }
348}396}
397
398template<typename PropertyDescription>
399inline core::dbus::ThreadSafeLifetimeConstrainedCache<
400 core::dbus::Object::CacheKey,
401 core::dbus::Property<PropertyDescription>>&
402core::dbus::Object::property_cache()
403{
404 static core::dbus::ThreadSafeLifetimeConstrainedCache<
405 core::dbus::Object::CacheKey,
406 core::dbus::Property<PropertyDescription>
407 > cache;
408 return cache;
409}
349}410}
350}411}
351412
352413
=== modified file 'include/core/dbus/impl/property.h'
--- include/core/dbus/impl/property.h 2014-06-10 08:44:17 +0000
+++ include/core/dbus/impl/property.h 2016-08-08 09:17:09 +0000
@@ -64,6 +64,13 @@
64}64}
6565
66template<typename PropertyType>66template<typename PropertyType>
67const core::Signal<void>&
68Property<PropertyType>::about_to_be_destroyed() const
69{
70 return signal_about_to_be_destroyed;
71}
72
73template<typename PropertyType>
67std::shared_ptr<Property<PropertyType>>74std::shared_ptr<Property<PropertyType>>
68Property<PropertyType>::make_property(const std::shared_ptr<Object>& parent)75Property<PropertyType>::make_property(const std::shared_ptr<Object>& parent)
69{76{
@@ -109,6 +116,20 @@
109}116}
110117
111template<typename PropertyType>118template<typename PropertyType>
119Property<PropertyType>::~Property()
120{
121 try
122 {
123 signal_about_to_be_destroyed();
124 } catch(...)
125 {
126 // Consciously dropping all exceptions here.
127 // There is hardly anything we can do about it while
128 // tearing down the object anyway.
129 }
130}
131
132template<typename PropertyType>
112void133void
113Property<PropertyType>::handle_get(const Message::Ptr& msg)134Property<PropertyType>::handle_get(const Message::Ptr& msg)
114{135{
115136
=== modified file 'include/core/dbus/impl/signal.h'
--- include/core/dbus/impl/signal.h 2014-11-10 08:14:45 +0000
+++ include/core/dbus/impl/signal.h 2016-08-08 09:17:09 +0000
@@ -65,7 +65,7 @@
65 const typename Signal<SignalDescription, Argument>::SubscriptionToken& token)65 const typename Signal<SignalDescription, Argument>::SubscriptionToken& token)
66{66{
67 std::lock_guard<std::mutex> lg(handlers_guard);67 std::lock_guard<std::mutex> lg(handlers_guard);
68 return handlers.erase(token);68 handlers.erase(token);
69}69}
7070
71template<typename SignalDescription, typename Argument>71template<typename SignalDescription, typename Argument>
@@ -121,8 +121,8 @@
121 &Signal<SignalDescription>::operator(),121 &Signal<SignalDescription>::operator(),
122 this,122 this,
123 std::placeholders::_1));123 std::placeholders::_1));
124 parent->add_match(124 rule = rule.type(Message::Type::signal).interface(interface).member(name);
125 rule.type(Message::Type::signal).interface(interface).member(name));125 parent->add_match(rule);
126}126}
127127
128template<typename SignalDescription, typename Argument>128template<typename SignalDescription, typename Argument>
@@ -309,6 +309,8 @@
309 &Signal<SignalDescription, typename SignalDescription::ArgumentType>::operator(),309 &Signal<SignalDescription, typename SignalDescription::ArgumentType>::operator(),
310 this,310 this,
311 std::placeholders::_1));311 std::placeholders::_1));
312
313 d->rule = d->rule.type(Message::Type::signal).interface(interface).member(name);
312}314}
313315
314template<typename SignalDescription>316template<typename SignalDescription>
@@ -322,7 +324,8 @@
322{324{
323 try325 try
324 {326 {
325 msg->reader() >> d->value;327 typename SignalDescription::ArgumentType value;
328 msg->reader() >> value;
326 std::lock_guard<std::mutex> lg(d->handlers_guard);329 std::lock_guard<std::mutex> lg(d->handlers_guard);
327 for (auto it : d->handlers)330 for (auto it : d->handlers)
328 {331 {
@@ -356,7 +359,7 @@
356 continue;359 continue;
357 }360 }
358361
359 handler(d->value);362 handler(value);
360 }363 }
361 }364 }
362 catch (const std::runtime_error& e)365 catch (const std::runtime_error& e)
363366
=== modified file 'include/core/dbus/message.h'
--- include/core/dbus/message.h 2014-01-05 18:58:19 +0000
+++ include/core/dbus/message.h 2016-08-08 09:17:09 +0000
@@ -439,6 +439,8 @@
439};439};
440typedef std::shared_ptr<Message> MessagePtr;440typedef std::shared_ptr<Message> MessagePtr;
441typedef std::unique_ptr<Message> MessageUPtr;441typedef std::unique_ptr<Message> MessageUPtr;
442
443ORG_FREEDESKTOP_DBUS_DLL_PUBLIC std::ostream& operator<<(std::ostream&, Message::Type);
442}444}
443}445}
444446
445447
=== modified file 'include/core/dbus/object.h'
--- include/core/dbus/object.h 2014-10-23 21:09:56 +0000
+++ include/core/dbus/object.h 2016-08-08 09:17:09 +0000
@@ -19,12 +19,14 @@
19#define CORE_DBUS_OBJECT_H_19#define CORE_DBUS_OBJECT_H_
2020
21#include <core/dbus/bus.h>21#include <core/dbus/bus.h>
22#include <core/dbus/lifetime_constrained_cache.h>
22#include <core/dbus/service.h>23#include <core/dbus/service.h>
2324
24#include <functional>25#include <functional>
25#include <future>26#include <future>
26#include <map>27#include <map>
27#include <memory>28#include <memory>
29#include <mutex>
28#include <ostream>30#include <ostream>
29#include <string>31#include <string>
3032
@@ -82,10 +84,14 @@
82class Object : public std::enable_shared_from_this<Object>84class Object : public std::enable_shared_from_this<Object>
83{85{
84 private:86 private:
87 typedef std::tuple<types::ObjectPath, std::string, std::string> CacheKey;
85 typedef std::tuple<std::string, std::string> MethodKey;88 typedef std::tuple<std::string, std::string> MethodKey;
86 typedef std::tuple<std::string, std::string> PropertyKey;89 typedef std::tuple<std::string, std::string> PropertyKey;
87 typedef std::tuple<std::string, std::string> SignalKey;90 typedef std::tuple<std::string, std::string> SignalKey;
8891
92 template<typename PropertyDescription>
93 static ThreadSafeLifetimeConstrainedCache<CacheKey, Property<PropertyDescription>>& property_cache();
94
89 public:95 public:
90 typedef std::shared_ptr<Object> Ptr;96 typedef std::shared_ptr<Object> Ptr;
91 typedef std::function<void(const Message::Ptr&)> MethodHandler;97 typedef std::function<void(const Message::Ptr&)> MethodHandler;
@@ -173,7 +179,7 @@
173 * @param [in] path The path to associate the object with.179 * @param [in] path The path to associate the object with.
174 * @return An object instance or nullptr in case of errors.180 * @return An object instance or nullptr in case of errors.
175 */181 */
176 std::shared_ptr<Object> 182 std::shared_ptr<Object>
177 inline add_object_for_path(const types::ObjectPath& path);183 inline add_object_for_path(const types::ObjectPath& path);
178184
179 /**185 /**
@@ -227,16 +233,11 @@
227 MessageRouter<MethodKey> method_router;233 MessageRouter<MethodKey> method_router;
228 MessageRouter<PropertyKey> get_property_router;234 MessageRouter<PropertyKey> get_property_router;
229 MessageRouter<PropertyKey> set_property_router;235 MessageRouter<PropertyKey> set_property_router;
236 std::once_flag add_match_once;
230 std::map<237 std::map<
231 std::tuple<std::string, std::string>,238 std::tuple<std::string, std::string>,
232 std::function<void(const types::Variant&)>239 std::function<void(const types::Variant&)>
233 > property_changed_vtable;240 > property_changed_vtable;
234 std::shared_ptr<
235 Signal<
236 interfaces::Properties::Signals::PropertiesChanged,
237 interfaces::Properties::Signals::PropertiesChanged::ArgumentType
238 >
239 > signal_properties_changed;
240};241};
241}242}
242}243}
243244
=== modified file 'include/core/dbus/property.h'
--- include/core/dbus/property.h 2014-01-20 21:22:02 +0000
+++ include/core/dbus/property.h 2016-08-08 09:17:09 +0000
@@ -43,6 +43,8 @@
43 typedef typename PropertyType::ValueType ValueType;43 typedef typename PropertyType::ValueType ValueType;
44 typedef core::Property<ValueType> Super;44 typedef core::Property<ValueType> Super;
4545
46 inline ~Property();
47
46 /**48 /**
47 * @brief Non-mutable access to the contained value.49 * @brief Non-mutable access to the contained value.
48 * @return Non-mutable reference to the contained value.50 * @return Non-mutable reference to the contained value.
@@ -61,6 +63,11 @@
61 */63 */
62 inline bool is_writable() const;64 inline bool is_writable() const;
6365
66 /**
67 * @brief Emitted during destruction of an object instance.
68 */
69 inline const core::Signal<void>& about_to_be_destroyed() const;
70
64protected:71protected:
65 friend class Object;72 friend class Object;
6673
@@ -82,6 +89,7 @@
82 std::string interface;89 std::string interface;
83 std::string name;90 std::string name;
84 bool writable;91 bool writable;
92 core::Signal<void> signal_about_to_be_destroyed;
85};93};
86}94}
87}95}
8896
=== modified file 'include/core/dbus/signal.h'
--- include/core/dbus/signal.h 2014-01-24 11:17:26 +0000
+++ include/core/dbus/signal.h 2016-08-08 09:17:09 +0000
@@ -189,8 +189,11 @@
189 const std::shared_ptr<Object>& parent, 189 const std::shared_ptr<Object>& parent,
190 const std::string& interface, 190 const std::string& interface,
191 const std::string& name);191 const std::string& name);
192192
193 typename SignalDescription::ArgumentType value;193 // We do not need this member anymore, but keep it in place for
194 // the sake of binary compatibility. Leaving a TODO(tvoss) to clean
195 // up on next ABI bump.
196 typename SignalDescription::ArgumentType pad;
194 std::shared_ptr<Object> parent;197 std::shared_ptr<Object> parent;
195 std::string interface;198 std::string interface;
196 std::string name;199 std::string name;
197200
=== modified file 'src/core/dbus/bus.cpp'
--- src/core/dbus/bus.cpp 2014-11-27 16:38:44 +0000
+++ src/core/dbus/bus.cpp 2016-08-08 09:17:09 +0000
@@ -24,6 +24,8 @@
24#include <core/dbus/traits/timeout.h>24#include <core/dbus/traits/timeout.h>
25#include <core/dbus/traits/watch.h>25#include <core/dbus/traits/watch.h>
2626
27#include <core/posix/this_process.h>
28
27#include "message_p.h"29#include "message_p.h"
28#include "message_factory_impl.h"30#include "message_factory_impl.h"
29#include "pending_call_impl.h"31#include "pending_call_impl.h"
@@ -76,8 +78,18 @@
7678
77void init_libdbus_thread_support_and_install_shutdown_handler()79void init_libdbus_thread_support_and_install_shutdown_handler()
78{80{
81 static const bool install_dbus_shutdown_handler
82 {
83 not core::posix::this_process::env::get("DBUS_CPP_INSTALL_DBUS_SHUTDOWN_HANDLER").empty()
84 };
85
79 static std::once_flag once;86 static std::once_flag once;
80 std::call_once(once, []() { dbus_threads_init_default(); std::atexit(dbus_shutdown); });87 std::call_once(once, []()
88 {
89 dbus_threads_init_default();
90 if (install_dbus_shutdown_handler)
91 std::atexit(dbus_shutdown);
92 });
81}93}
82}94}
8395
8496
=== modified file 'src/core/dbus/match_rule.cpp'
--- src/core/dbus/match_rule.cpp 2014-01-21 13:48:54 +0000
+++ src/core/dbus/match_rule.cpp 2016-08-08 09:17:09 +0000
@@ -151,17 +151,10 @@
151151
152std::string dbus::MatchRule::as_string() const152std::string dbus::MatchRule::as_string() const
153{153{
154 static const std::map<Message::Type, std::string> lut =
155 {
156 {Message::Type::signal, "signal"},
157 {Message::Type::method_call, "method_call"},
158 {Message::Type::method_return, "method_return"},
159 {Message::Type::error, "error"}
160 };
161 Comma comma;154 Comma comma;
162 std::stringstream ss;155 std::stringstream ss;
163 if (d->type != Message::Type::invalid)156 if (d->type != Message::Type::invalid)
164 ss << "type='" << lut.at(d->type) << "'" << comma;157 ss << "type='" << d->type << "'" << comma;
165 if (!d->sender.empty())158 if (!d->sender.empty())
166 ss << comma << "sender='" << d->sender << "'" << comma;159 ss << comma << "sender='" << d->sender << "'" << comma;
167 if (!d->interface.empty())160 if (!d->interface.empty())
168161
=== modified file 'src/core/dbus/message.cpp'
--- src/core/dbus/message.cpp 2015-07-21 18:30:23 +0000
+++ src/core/dbus/message.cpp 2016-08-08 09:17:09 +0000
@@ -652,5 +652,24 @@
652{652{
653 return std::shared_ptr<Message>(new Message(d->clone()));653 return std::shared_ptr<Message>(new Message(d->clone()));
654}654}
655
656std::ostream& operator<<(std::ostream& out, Message::Type type)
657{
658 switch (type)
659 {
660 case Message::Type::error:
661 return out << "error";
662 case Message::Type::invalid:
663 return out << "invalid";
664 case Message::Type::method_call:
665 return out << "method_call";
666 case Message::Type::method_return:
667 return out << "method_return";
668 case Message::Type::signal:
669 return out << "signal";
670 }
671
672 return out;
673}
655}674}
656}675}
657676
=== modified file 'src/core/dbus/service.cpp'
--- src/core/dbus/service.cpp 2014-06-30 04:57:08 +0000
+++ src/core/dbus/service.cpp 2016-08-08 09:17:09 +0000
@@ -79,7 +79,7 @@
7979
80void Service::remove_match(const MatchRule& rule)80void Service::remove_match(const MatchRule& rule)
81{81{
82 connection->remove_match(rule);82 connection->remove_match(rule.sender(name));
83}83}
8484
85Service::Service(const Bus::Ptr& connection, const std::string& name)85Service::Service(const Bus::Ptr& connection, const std::string& name)
8686
=== modified file 'tests/async_execution_load_test.cpp'
--- tests/async_execution_load_test.cpp 2014-10-02 20:47:08 +0000
+++ tests/async_execution_load_test.cpp 2016-08-08 09:17:09 +0000
@@ -131,7 +131,7 @@
131 std::thread t4{[dbus, ec]() {invoke_list_names_n_times_and_update_event_collector(dbus, 100, ec);}};131 std::thread t4{[dbus, ec]() {invoke_list_names_n_times_and_update_event_collector(dbus, 100, ec);}};
132 std::thread t5{[dbus, ec]() {invoke_list_names_n_times_and_update_event_collector(dbus, 100, ec);}};132 std::thread t5{[dbus, ec]() {invoke_list_names_n_times_and_update_event_collector(dbus, 100, ec);}};
133133
134 EXPECT_TRUE(ec->wait_for(std::chrono::seconds{60}));134 EXPECT_TRUE(ec->wait_for(std::chrono::minutes{5}));
135135
136 bus->stop();136 bus->stop();
137137
138138
=== modified file 'tests/executor_test.cpp'
--- tests/executor_test.cpp 2014-09-28 21:27:09 +0000
+++ tests/executor_test.cpp 2016-08-08 09:17:09 +0000
@@ -33,6 +33,8 @@
33#include <boost/asio.hpp>33#include <boost/asio.hpp>
34#include <gtest/gtest.h>34#include <gtest/gtest.h>
3535
36#include <random>
37
36namespace dbus = core::dbus;38namespace dbus = core::dbus;
3739
38namespace40namespace
@@ -172,7 +174,7 @@
172 bus->send(reply);174 bus->send(reply);
173 });175 });
174176
175 cross_process_sync.try_signal_ready_for(std::chrono::milliseconds{500});177 cross_process_sync.try_signal_ready_for(std::chrono::seconds{20});
176178
177 std::thread w1([bus]() { bus->run(); });179 std::thread w1([bus]() { bus->run(); });
178 std::thread w2([bus]() { bus->run(); });180 std::thread w2([bus]() { bus->run(); });
@@ -201,7 +203,7 @@
201 // std::cout << "Invoke gdb with: sudo gdb -p " << getpid() << std::endl;203 // std::cout << "Invoke gdb with: sudo gdb -p " << getpid() << std::endl;
202 // sleep(10);204 // sleep(10);
203205
204 EXPECT_EQ(std::uint32_t(1), cross_process_sync.wait_for_signal_ready_for(std::chrono::milliseconds{500}));206 EXPECT_EQ(std::uint32_t(1), cross_process_sync.wait_for_signal_ready_for(std::chrono::seconds{20}));
205207
206 auto stub_service = dbus::Service::use_service(bus, dbus::traits::Service<test::Service>::interface_name());208 auto stub_service = dbus::Service::use_service(bus, dbus::traits::Service<test::Service>::interface_name());
207 auto stub = stub_service->object_for_path(dbus::types::ObjectPath("/this/is/unlikely/to/exist/Service"));209 auto stub = stub_service->object_for_path(dbus::types::ObjectPath("/this/is/unlikely/to/exist/Service"));
208210
=== modified file 'tests/message_test.cpp'
--- tests/message_test.cpp 2014-01-10 07:34:59 +0000
+++ tests/message_test.cpp 2016-08-08 09:17:09 +0000
@@ -175,3 +175,23 @@
175 }175 }
176 }176 }
177}177}
178
179namespace
180{
181class MessageType : public testing::TestWithParam<std::pair<core::dbus::Message::Type, std::string>>
182{
183};
184}
185
186TEST_P(MessageType, IsPrintedCorrectly)
187{
188 std::stringstream ss; ss << GetParam().first;
189 EXPECT_EQ(GetParam().second, ss.str());
190}
191
192INSTANTIATE_TEST_CASE_P(MessageType, MessageType, ::testing::Values(
193 std::make_pair(core::dbus::Message::Type::error, "error"),
194 std::make_pair(core::dbus::Message::Type::invalid, "invalid"),
195 std::make_pair(core::dbus::Message::Type::method_call, "method_call"),
196 std::make_pair(core::dbus::Message::Type::method_return, "method_return"),
197 std::make_pair(core::dbus::Message::Type::signal, "signal")));

Subscribers

People subscribed via source and target branches