summaryrefslogtreecommitdiff
path: root/cpp/src
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
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')
-rw-r--r--cpp/src/IceBT/EndpointI.cpp38
-rw-r--r--cpp/src/IceBT/EndpointI.h7
-rw-r--r--cpp/src/IceBT/Engine.cpp47
-rw-r--r--cpp/src/IceBT/Engine.h4
-rw-r--r--cpp/src/IceBT/InstanceF.h4
-rw-r--r--cpp/src/IceBT/PluginI.cpp4
-rw-r--r--cpp/src/IceBT/PluginI.h4
-rw-r--r--cpp/src/IceBT/TransceiverI.cpp2
-rw-r--r--cpp/src/Makefile1
-rw-r--r--cpp/src/Makefile.mak1
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 \