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 | |
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')
-rw-r--r-- | cpp/src/IceBT/EndpointI.cpp | 38 | ||||
-rw-r--r-- | cpp/src/IceBT/EndpointI.h | 7 | ||||
-rw-r--r-- | cpp/src/IceBT/Engine.cpp | 47 | ||||
-rw-r--r-- | cpp/src/IceBT/Engine.h | 4 | ||||
-rw-r--r-- | cpp/src/IceBT/InstanceF.h | 4 | ||||
-rw-r--r-- | cpp/src/IceBT/PluginI.cpp | 4 | ||||
-rw-r--r-- | cpp/src/IceBT/PluginI.h | 4 | ||||
-rw-r--r-- | cpp/src/IceBT/TransceiverI.cpp | 2 | ||||
-rw-r--r-- | cpp/src/Makefile | 1 | ||||
-rw-r--r-- | cpp/src/Makefile.mak | 1 |
10 files changed, 95 insertions, 17 deletions
diff --git a/cpp/src/IceBT/EndpointI.cpp b/cpp/src/IceBT/EndpointI.cpp index d69f8c0ac34..eb79425fce3 100644 --- a/cpp/src/IceBT/EndpointI.cpp +++ b/cpp/src/IceBT/EndpointI.cpp @@ -29,7 +29,9 @@ using namespace std; using namespace Ice; using namespace IceBT; +#ifndef ICE_CPP11_MAPPING IceUtil::Shared* IceBT::upCast(EndpointI* p) { return p; } +#endif namespace { @@ -125,11 +127,11 @@ IceBT::EndpointI::timeout(Int timeout) const { if(timeout == _timeout) { - return const_cast<EndpointI*>(this); + return shared_from_this(); } else { - return new EndpointI(_instance, _addr, _uuid, _name, _channel, timeout, _connectionId, _compress); + return ICE_MAKE_SHARED(EndpointI, _instance, _addr, _uuid, _name, _channel, timeout, _connectionId, _compress); } } @@ -144,11 +146,11 @@ IceBT::EndpointI::connectionId(const string& connectionId) const { if(connectionId == _connectionId) { - return const_cast<EndpointI*>(this); + return shared_from_this(); } else { - return new EndpointI(_instance, _addr, _uuid, _name, _channel, _timeout, connectionId, _compress); + return ICE_MAKE_SHARED(EndpointI, _instance, _addr, _uuid, _name, _channel, _timeout, connectionId, _compress); } } @@ -163,11 +165,11 @@ IceBT::EndpointI::compress(bool compress) const { if(compress == _compress) { - return const_cast<EndpointI*>(this); + return shared_from_this(); } else { - return new EndpointI(_instance, _addr, _uuid, _name, _channel, _timeout, _connectionId, compress); + return ICE_MAKE_SHARED(EndpointI, _instance, _addr, _uuid, _name, _channel, _timeout, _connectionId, compress); } } @@ -204,7 +206,7 @@ IceBT::EndpointI::connectors_async(EndpointSelectionType selType, const IceInter ostr << "searching for service " << _uuid << " at " << _addr; _instance->logger()->trace(_instance->traceCategory(), ostr.str()); } - _instance->engine()->findService(_addr, _uuid, new FindCallbackI(const_cast<EndpointI*>(this), selType)); + _instance->engine()->findService(_addr, _uuid, new FindCallbackI(shared_from_this(), selType)); } const_cast<vector<IceInternal::EndpointI_connectorsPtr>&>(_callbacks).push_back(cb); @@ -213,7 +215,7 @@ IceBT::EndpointI::connectors_async(EndpointSelectionType selType, const IceInter IceInternal::AcceptorPtr IceBT::EndpointI::acceptor(const string& adapterName) const { - return new AcceptorI(const_cast<EndpointI*>(this), _instance, adapterName, _addr, _uuid, _name, _channel); + return new AcceptorI(shared_from_this(), _instance, adapterName, _addr, _uuid, _name, _channel); } vector<IceInternal::EndpointIPtr> @@ -223,7 +225,7 @@ IceBT::EndpointI::expand() const // Nothing to do here. // vector<IceInternal::EndpointIPtr> endps; - endps.push_back(const_cast<EndpointI*>(this)); + endps.push_back(shared_from_this()); return endps; } @@ -239,7 +241,11 @@ IceBT::EndpointI::equivalent(const IceInternal::EndpointIPtr& endpoint) const } bool +#ifdef ICE_CPP11_MAPPING +IceBT::EndpointI::operator==(const Ice::Endpoint& r) const +#else IceBT::EndpointI::operator==(const Ice::LocalObject& r) const +#endif { const EndpointI* p = dynamic_cast<const EndpointI*>(&r); if(!p) @@ -286,7 +292,11 @@ IceBT::EndpointI::operator==(const Ice::LocalObject& r) const } bool +#ifdef ICE_CPP11_MAPPING +IceBT::EndpointI::operator<(const Ice::Endpoint& r) const +#else IceBT::EndpointI::operator<(const Ice::LocalObject& r) const +#endif { const EndpointI* p = dynamic_cast<const EndpointI*>(&r); if(!p) @@ -443,7 +453,7 @@ IceBT::EndpointI::options() const Ice::EndpointInfoPtr IceBT::EndpointI::getInfo() const { - EndpointInfoPtr info = new EndpointInfoI(const_cast<EndpointI*>(this)); + EndpointInfoPtr info = ICE_MAKE_SHARED(EndpointInfoI, shared_from_this()); info->addr = _addr; info->uuid = _uuid; return info; @@ -516,8 +526,8 @@ IceBT::EndpointI::initWithOptions(vector<string>& args, bool oaEndpoint) IceBT::EndpointIPtr IceBT::EndpointI::endpoint(const AcceptorIPtr& acceptor) const { - return new EndpointI(_instance, _addr, _uuid, _name, acceptor->effectiveChannel(), _timeout, _connectionId, - _compress); + return ICE_MAKE_SHARED(EndpointI, _instance, _addr, _uuid, _name, acceptor->effectiveChannel(), _timeout, _connectionId, + _compress); } void @@ -729,7 +739,7 @@ IceBT::EndpointFactoryI::protocol() const IceInternal::EndpointIPtr IceBT::EndpointFactoryI::create(vector<string>& args, bool oaEndpoint) const { - EndpointIPtr endpt = new EndpointI(_instance); + EndpointIPtr endpt = ICE_MAKE_SHARED(EndpointI, _instance); endpt->initWithOptions(args, oaEndpoint); return endpt; } @@ -737,7 +747,7 @@ IceBT::EndpointFactoryI::create(vector<string>& args, bool oaEndpoint) const IceInternal::EndpointIPtr IceBT::EndpointFactoryI::read(IceInternal::BasicStream* s) const { - return new EndpointI(_instance, s); + return ICE_MAKE_SHARED(EndpointI, _instance, s); } void diff --git a/cpp/src/IceBT/EndpointI.h b/cpp/src/IceBT/EndpointI.h index d26bdb04a98..6e83f29df3f 100644 --- a/cpp/src/IceBT/EndpointI.h +++ b/cpp/src/IceBT/EndpointI.h @@ -21,7 +21,7 @@ namespace IceBT { -class EndpointI : public IceInternal::EndpointI +class EndpointI : public IceInternal::EndpointI, public Ice::EnableSharedFromThis<EndpointI> { public: @@ -47,8 +47,13 @@ public: virtual std::vector<IceInternal::EndpointIPtr> expand() const; virtual bool equivalent(const IceInternal::EndpointIPtr&) const; +#ifdef ICE_CPP11_MAPPING + virtual bool operator==(const Ice::Endpoint&) const; + virtual bool operator<(const Ice::Endpoint&) const; +#else virtual bool operator==(const Ice::LocalObject&) const; virtual bool operator<(const Ice::LocalObject&) const; +#endif virtual Ice::Int hash() const; 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); } diff --git a/cpp/src/IceBT/Engine.h b/cpp/src/IceBT/Engine.h index 8c557f42dbb..ca307928b4d 100644 --- a/cpp/src/IceBT/Engine.h +++ b/cpp/src/IceBT/Engine.h @@ -61,7 +61,11 @@ public: // void removeService(const std::string&, unsigned int); +#ifdef ICE_CPP11_MAPPING + void startDiscovery(const std::string&, std::function<void (const std::string&, const PropertyMap&)>); +#else void startDiscovery(const std::string&, const DiscoveryCallbackPtr&); +#endif void stopDiscovery(const std::string&); void destroy(); diff --git a/cpp/src/IceBT/InstanceF.h b/cpp/src/IceBT/InstanceF.h index a5ae9844e69..63513ec69c9 100644 --- a/cpp/src/IceBT/InstanceF.h +++ b/cpp/src/IceBT/InstanceF.h @@ -21,8 +21,12 @@ IceUtil::Shared* upCast(Instance*); typedef IceInternal::Handle<Instance> InstancePtr; class EndpointI; +#ifdef ICE_CPP11_MAPPING +typedef std::shared_ptr<EndpointI> EndpointIPtr; +#else IceUtil::Shared* upCast(EndpointI*); typedef IceInternal::Handle<EndpointI> EndpointIPtr; +#endif class AcceptorI; IceUtil::Shared* upCast(AcceptorI*); diff --git a/cpp/src/IceBT/PluginI.cpp b/cpp/src/IceBT/PluginI.cpp index 2fdde0c5276..59cf5dce360 100644 --- a/cpp/src/IceBT/PluginI.cpp +++ b/cpp/src/IceBT/PluginI.cpp @@ -81,7 +81,11 @@ IceBT::PluginI::destroy() } void +#ifdef ICE_CPP11_MAPPING +IceBT::PluginI::startDiscovery(const string& address, function<void (const string&, const PropertyMap&)> cb) +#else IceBT::PluginI::startDiscovery(const string& address, const DiscoveryCallbackPtr& cb) +#endif { _engine->startDiscovery(address, cb); } diff --git a/cpp/src/IceBT/PluginI.h b/cpp/src/IceBT/PluginI.h index 859672cf16b..1f340cbc822 100644 --- a/cpp/src/IceBT/PluginI.h +++ b/cpp/src/IceBT/PluginI.h @@ -32,7 +32,11 @@ public: // // From IceBT::Plugin. // +#ifdef ICE_CPP11_MAPPING + virtual void startDiscovery(const std::string&, std::function<void (const std::string&, const PropertyMap&)>); +#else virtual void startDiscovery(const std::string&, const DiscoveryCallbackPtr&); +#endif virtual void stopDiscovery(const std::string&); private: diff --git a/cpp/src/IceBT/TransceiverI.cpp b/cpp/src/IceBT/TransceiverI.cpp index a528fb9386f..ef0863ddcf1 100644 --- a/cpp/src/IceBT/TransceiverI.cpp +++ b/cpp/src/IceBT/TransceiverI.cpp @@ -83,7 +83,7 @@ IceBT::TransceiverI::toDetailedString() const Ice::ConnectionInfoPtr IceBT::TransceiverI::getInfo() const { - IceBT::ConnectionInfoPtr info = new IceBT::ConnectionInfo(); + IceBT::ConnectionInfoPtr info = ICE_MAKE_SHARED(IceBT::ConnectionInfo); fdToAddressAndChannel(_stream->fd(), info->localAddress, info->localChannel, info->remoteAddress, info->remoteChannel); info->uuid = _uuid; diff --git a/cpp/src/Makefile b/cpp/src/Makefile index 24411dd40f5..1279e2a3fdc 100644 --- a/cpp/src/Makefile +++ b/cpp/src/Makefile @@ -18,6 +18,7 @@ ifeq ($(CPP11_MAPPING),yes) Ice \ IceSSL \ IceDiscovery \ + IceBT \ Glacier2Lib \ IceStormLib \ IceGridLib \ diff --git a/cpp/src/Makefile.mak b/cpp/src/Makefile.mak index b9f70020345..1c1c6642054 100644 --- a/cpp/src/Makefile.mak +++ b/cpp/src/Makefile.mak @@ -25,6 +25,7 @@ SUBDIRS = IceUtil \ Ice \ IceSSL \ IceDiscovery \ + IceBT \ Glacier2Lib \ IceStormLib \ IceGridLib \ |