diff options
author | Jose <jose@zeroc.com> | 2015-12-29 18:04:48 +0100 |
---|---|---|
committer | Jose <jose@zeroc.com> | 2015-12-29 18:04:48 +0100 |
commit | 5123e274ed974be732c7d9c65af34041281eb876 (patch) | |
tree | 1cab5b2f3de6b2fe00022d9cab58337bf3900d2d /cpp/src/IceBT/Engine.cpp | |
parent | C++11 mapping: InterfaceByValue simplification (diff) | |
download | ice-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.cpp | 47 |
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); } |