summaryrefslogtreecommitdiff
path: root/cpp/src/IceBT/Engine.cpp
diff options
context:
space:
mode:
authorJose <jose@zeroc.com>2015-12-29 18:04:48 +0100
committerJose <jose@zeroc.com>2015-12-29 18:04:48 +0100
commit5123e274ed974be732c7d9c65af34041281eb876 (patch)
tree1cab5b2f3de6b2fe00022d9cab58337bf3900d2d /cpp/src/IceBT/Engine.cpp
parentC++11 mapping: InterfaceByValue simplification (diff)
downloadice-5123e274ed974be732c7d9c65af34041281eb876.tar.bz2
ice-5123e274ed974be732c7d9c65af34041281eb876.tar.xz
ice-5123e274ed974be732c7d9c65af34041281eb876.zip
Fix IceBT C++11 build
Diffstat (limited to 'cpp/src/IceBT/Engine.cpp')
-rw-r--r--cpp/src/IceBT/Engine.cpp47
1 files changed, 46 insertions, 1 deletions
diff --git a/cpp/src/IceBT/Engine.cpp b/cpp/src/IceBT/Engine.cpp
index 308bb52f478..83995fb83bd 100644
--- a/cpp/src/IceBT/Engine.cpp
+++ b/cpp/src/IceBT/Engine.cpp
@@ -134,12 +134,19 @@ public:
VariantMap props;
extractProperties(values[1], props);
+#ifdef ICE_CPP11_MAPPING
+ vector<function<void (const string&, const PropertyMap&)>> callbacks;
+#else
vector<DiscoveryCallbackPtr> callbacks;
+#endif
{
IceUtil::Monitor<IceUtil::Mutex>::Lock lock(_lock);
-
+#ifdef ICE_CPP11_MAPPING
+ auto p = _discoveryCallbacks.find(msg->getPath());
+#else
map<string, vector<DiscoveryCallbackPtr> >::iterator p = _discoveryCallbacks.find(msg->getPath());
+#endif
if(p != _discoveryCallbacks.end())
{
callbacks = p->second;
@@ -153,6 +160,18 @@ public:
{
pm[p->first] = p->second->toString();
}
+#ifdef ICE_CPP11_MAPPING
+ for(const auto& discovered : callbacks)
+ {
+ try
+ {
+ discovered(addr->v, pm);
+ }
+ catch(...)
+ {
+ }
+ }
+#else
for(vector<DiscoveryCallbackPtr>::iterator p = callbacks.begin(); p != callbacks.end(); ++p)
{
try
@@ -163,6 +182,7 @@ public:
{
}
}
+#endif
}
return true;
@@ -189,7 +209,11 @@ public:
{
IceUtil::Monitor<IceUtil::Mutex>::Lock lock(_lock);
+#ifdef ICE_CPP11_MAPPING
+ auto p = _discoveryCallbacks.find(msg->getPath());
+#else
map<string, vector<DiscoveryCallbackPtr> >::iterator p = _discoveryCallbacks.find(msg->getPath());
+#endif
if(p != _discoveryCallbacks.end())
{
_discoveryCallbacks.erase(p);
@@ -319,7 +343,11 @@ public:
}
}
+#ifdef ICE_CPP11_MAPPING
+ void startDiscovery(const string& addr, function<void (const string&, const PropertyMap&)> cb)
+#else
void startDiscovery(const string& addr, const DiscoveryCallbackPtr& cb)
+#endif
{
string path;
if(addr.empty())
@@ -339,12 +367,21 @@ public:
{
IceUtil::Monitor<IceUtil::Mutex>::Lock lock(_lock);
+#ifdef ICE_CPP11_MAPPING
+ auto p = _discoveryCallbacks.find(path);
+ if(p == _discoveryCallbacks.end())
+ {
+ _discoveryCallbacks[path] = vector<function<void (const string&, const PropertyMap&)>>();
+ }
+ _discoveryCallbacks[path].push_back(move(cb));
+#else
map<string, vector<DiscoveryCallbackPtr> >::iterator p = _discoveryCallbacks.find(path);
if(p == _discoveryCallbacks.end())
{
_discoveryCallbacks[path] = vector<DiscoveryCallbackPtr>();
}
_discoveryCallbacks[path].push_back(cb);
+#endif
}
try
@@ -891,7 +928,11 @@ public:
bool _destroyed;
DBus::ConnectionPtr _dbusConnection;
vector<IceUtil::ThreadPtr> _threads;
+#ifdef ICE_CPP11_MAPPING
+ map<string, vector<function<void (const string&, const PropertyMap&)>>> _discoveryCallbacks;
+#else
map<string, vector<DiscoveryCallbackPtr> > _discoveryCallbacks;
+#endif
};
}
@@ -954,7 +995,11 @@ IceBT::Engine::removeService(const string& address, unsigned int handle)
}
void
+#ifdef ICE_CPP11_MAPPING
+IceBT::Engine::startDiscovery(const string& address, function<void (const string&, const PropertyMap&)> cb)
+#else
IceBT::Engine::startDiscovery(const string& address, const DiscoveryCallbackPtr& cb)
+#endif
{
_service->startDiscovery(address, cb);
}