summaryrefslogtreecommitdiff
path: root/cppe
diff options
context:
space:
mode:
Diffstat (limited to 'cppe')
-rw-r--r--cppe/src/IceE/Instance.cpp9
-rw-r--r--cppe/src/IceE/Instance.h2
-rw-r--r--cppe/src/IceE/Reference.cpp98
-rw-r--r--cppe/src/IceE/Reference.h22
-rw-r--r--cppe/src/IceE/ReferenceFactory.cpp18
-rw-r--r--cppe/src/IceE/ReferenceFactory.h3
6 files changed, 77 insertions, 75 deletions
diff --git a/cppe/src/IceE/Instance.cpp b/cppe/src/IceE/Instance.cpp
index 5009ed783af..8b088291025 100644
--- a/cppe/src/IceE/Instance.cpp
+++ b/cppe/src/IceE/Instance.cpp
@@ -65,12 +65,6 @@ IceInternal::Instance::destroyed() const
return _state == StateDestroyed;
}
-CommunicatorPtr
-IceInternal::Instance::communicator() const
-{
- return _communicator;
-}
-
PropertiesPtr
IceInternal::Instance::properties() const
{
@@ -294,7 +288,6 @@ IceInternal::Instance::getDefaultContext() const
}
IceInternal::Instance::Instance(const CommunicatorPtr& communicator, const PropertiesPtr& properties) :
- _communicator(communicator.get()),
_state(StateActive),
_properties(properties),
_messageSizeMax(0),
@@ -462,7 +455,7 @@ IceInternal::Instance::Instance(const CommunicatorPtr& communicator, const Prope
_locatorManager = new LocatorManager;
#endif
- _referenceFactory = new ReferenceFactory(this);
+ _referenceFactory = new ReferenceFactory(this, communicator);
_proxyFactory = new ProxyFactory(this);
diff --git a/cppe/src/IceE/Instance.h b/cppe/src/IceE/Instance.h
index e7a68f230c4..16e1bbc1c33 100644
--- a/cppe/src/IceE/Instance.h
+++ b/cppe/src/IceE/Instance.h
@@ -36,7 +36,6 @@ class Instance : public IceUtil::Shared, public IceUtil::RecMutex
public:
bool destroyed() const;
- Ice::CommunicatorPtr communicator() const;
Ice::PropertiesPtr properties() const;
Ice::LoggerPtr logger() const;
void logger(const Ice::LoggerPtr&);
@@ -74,7 +73,6 @@ private:
void destroy();
friend class Ice::Communicator;
- Ice::Communicator* _communicator; // Not a Ptr, to avoid having Instance and Communicator point at each other.
enum State
{
StateActive,
diff --git a/cppe/src/IceE/Reference.cpp b/cppe/src/IceE/Reference.cpp
index e470a334fee..f45c1f95dad 100644
--- a/cppe/src/IceE/Reference.cpp
+++ b/cppe/src/IceE/Reference.cpp
@@ -61,7 +61,7 @@ IceInternal::Reference::defaultContext() const
CommunicatorPtr
IceInternal::Reference::getCommunicator() const
{
- return _instance->communicator();
+ return _communicator;
}
ReferencePtr
@@ -404,38 +404,40 @@ IceInternal::Reference::operator<(const Reference& r) const
return false;
}
-IceInternal::Reference::Reference(const InstancePtr& inst, const Identity& ident, const Context& ctx,
- const string& fs, Mode md, bool sec)
- : _instance(inst),
- _mode(md),
- _secure(sec),
- _identity(ident),
- _hasContext(!ctx.empty()),
- _context(ctx),
- _facet(fs),
- _hashInitialized(false)
+IceInternal::Reference::Reference(const InstancePtr& inst, const CommunicatorPtr& com, const Identity& ident,
+ const Context& ctx, const string& fs, Mode md, bool sec) :
+ _instance(inst),
+ _communicator(com),
+ _mode(md),
+ _secure(sec),
+ _identity(ident),
+ _hasContext(!ctx.empty()),
+ _context(ctx),
+ _facet(fs),
+ _hashInitialized(false)
{
}
-IceInternal::Reference::Reference(const Reference& r)
- : _instance(r._instance),
- _mode(r._mode),
- _secure(r._secure),
- _identity(r._identity),
- _hasContext(r._hasContext),
- _context(r._context),
- _facet(r._facet),
- _hashInitialized(false)
+IceInternal::Reference::Reference(const Reference& r) :
+ _instance(r._instance),
+ _communicator(r._communicator),
+ _mode(r._mode),
+ _secure(r._secure),
+ _identity(r._identity),
+ _hasContext(r._hasContext),
+ _context(r._context),
+ _facet(r._facet),
+ _hashInitialized(false)
{
}
void IceInternal::incRef(IceInternal::FixedReference* p) { p->__incRef(); }
void IceInternal::decRef(IceInternal::FixedReference* p) { p->__decRef(); }
-IceInternal::FixedReference::FixedReference(const InstancePtr& inst, const Identity& ident,
+IceInternal::FixedReference::FixedReference(const InstancePtr& inst, const CommunicatorPtr& com, const Identity& ident,
const Context& ctx, const string& fs, Mode md,
const vector<ConnectionPtr>& fixedConns)
- : Reference(inst, ident, ctx, fs, md, false),
+ : Reference(inst, com, ident, ctx, fs, md, false),
_fixedConnections(fixedConns)
{
}
@@ -683,10 +685,10 @@ IceInternal::RoutableReference::operator<(const Reference& r) const
return false;
}
-IceInternal::RoutableReference::RoutableReference(const InstancePtr& inst, const Identity& ident,
- const Context& ctx, const string& fs, Mode md,
- bool sec, const RouterInfoPtr& rtrInfo)
- : Reference(inst, ident, ctx, fs, md, sec), _routerInfo(rtrInfo)
+IceInternal::RoutableReference::RoutableReference(const InstancePtr& inst, const CommunicatorPtr& com,
+ const Identity& ident, const Context& ctx, const string& fs,
+ Mode md, bool sec, const RouterInfoPtr& rtrInfo)
+ : Reference(inst, com, ident, ctx, fs, md, sec), _routerInfo(rtrInfo)
{
}
@@ -701,19 +703,20 @@ void IceInternal::decRef(IceInternal::DirectReference* p) { p->__decRef(); }
#ifdef ICEE_HAS_ROUTER
-IceInternal::DirectReference::DirectReference(const InstancePtr& inst, const Identity& ident,
- const Context& ctx, const string& fs, Mode md, bool sec,
- const vector<EndpointPtr>& endpts, const RouterInfoPtr& rtrInfo) :
+IceInternal::DirectReference::DirectReference(const InstancePtr& inst, const CommunicatorPtr& com,
+ const Identity& ident, const Context& ctx, const string& fs, Mode md,
+ bool sec, const vector<EndpointPtr>& endpts,
+ const RouterInfoPtr& rtrInfo) :
- RoutableReference(inst, ident, ctx, fs, md, sec, rtrInfo),
+ RoutableReference(inst, com, ident, ctx, fs, md, sec, rtrInfo),
_endpoints(endpts)
{
}
#else
-IceInternal::DirectReference::DirectReference(const InstancePtr& inst, const Identity& ident,
- const Context& ctx, const string& fs, Mode md, bool sec,
- const vector<EndpointPtr>& endpts) :
- Reference(inst, ident, ctx, fs, md, sec),
+IceInternal::DirectReference::DirectReference(const InstancePtr& inst, const CommunicatorPtr& com,
+ const Identity& ident, const Context& ctx, const string& fs, Mode md,
+ bool sec, const vector<EndpointPtr>& endpts) :
+ Reference(inst, com, ident, ctx, fs, md, sec),
_endpoints(endpts)
{
}
@@ -939,22 +942,23 @@ void IceInternal::incRef(IceInternal::IndirectReference* p) { p->__incRef(); }
void IceInternal::decRef(IceInternal::IndirectReference* p) { p->__decRef(); }
#ifdef ICEE_HAS_ROUTER
-IceInternal::IndirectReference::IndirectReference(const InstancePtr& inst, const Identity& ident,
- const Context& ctx, const string& fs, Mode md, bool sec,
- const string& adptid, const RouterInfoPtr& rtrInfo,
- const LocatorInfoPtr& locInfo)
- : RoutableReference(inst, ident, ctx, fs, md, sec, rtrInfo),
- _adapterId(adptid),
- _locatorInfo(locInfo)
+IceInternal::IndirectReference::IndirectReference(const InstancePtr& inst, const CommunicatorPtr& com,
+ const Identity& ident, const Context& ctx, const string& fs,
+ Mode md, bool sec, const string& adptid,
+ const RouterInfoPtr& rtrInfo, const LocatorInfoPtr& locInfo) :
+ RoutableReference(inst, com ident, ctx, fs, md, sec, rtrInfo),
+ _adapterId(adptid),
+ _locatorInfo(locInfo)
{
}
#else
-IceInternal::IndirectReference::IndirectReference(const InstancePtr& inst, const Identity& ident,
- const Context& ctx, const string& fs, Mode md, bool sec,
- const string& adptid, const LocatorInfoPtr& locInfo)
- : Reference(inst, ident, ctx, fs, md, sec),
- _adapterId(adptid),
- _locatorInfo(locInfo)
+IceInternal::IndirectReference::IndirectReference(const InstancePtr& inst, const CommunicatorPtr& com,
+ const Identity& ident, const Context& ctx, const string& fs,
+ Mode md, bool sec, const string& adptid,
+ const LocatorInfoPtr& locInfo) :
+ Reference(inst, com, ident, ctx, fs, md, sec),
+ _adapterId(adptid),
+ _locatorInfo(locInfo)
{
}
#endif
diff --git a/cppe/src/IceE/Reference.h b/cppe/src/IceE/Reference.h
index 74c70073adc..2b4d00393c5 100644
--- a/cppe/src/IceE/Reference.h
+++ b/cppe/src/IceE/Reference.h
@@ -108,12 +108,14 @@ public:
protected:
- Reference(const InstancePtr&, const Ice::Identity&, const Ice::Context&, const std::string&, Mode, bool);
+ Reference(const InstancePtr&, const Ice::CommunicatorPtr&, const Ice::Identity&, const Ice::Context&,
+ const std::string&, Mode, bool);
Reference(const Reference&);
private:
- InstancePtr _instance;
+ const InstancePtr _instance;
+ const Ice::CommunicatorPtr _communicator;
Mode _mode;
bool _secure;
@@ -131,8 +133,8 @@ class FixedReference : public Reference
{
public:
- FixedReference(const InstancePtr&, const Ice::Identity&, const Ice::Context&, const std::string&, Mode,
- const std::vector<Ice::ConnectionPtr>&);
+ FixedReference(const InstancePtr&, const Ice::CommunicatorPtr&, const Ice::Identity&, const Ice::Context&,
+ const std::string&, Mode, const std::vector<Ice::ConnectionPtr>&);
const std::vector<Ice::ConnectionPtr>& getFixedConnections() const;
@@ -188,8 +190,8 @@ public:
protected:
- RoutableReference(const InstancePtr&, const Ice::Identity&, const Ice::Context&, const std::string&,
- Mode, bool, const RouterInfoPtr&);
+ RoutableReference(const InstancePtr&, const Ice::CommunicatorPtr&, const Ice::Identity&, const Ice::Context&,
+ const std::string&, Mode, bool, const RouterInfoPtr&);
RoutableReference(const RoutableReference&);
@@ -208,8 +210,8 @@ class DirectReference :
{
public:
- DirectReference(const InstancePtr&, const Ice::Identity&, const Ice::Context&, const std::string&, Mode,
- bool, const std::vector<EndpointPtr>&
+ DirectReference(const InstancePtr&, const Ice::CommunicatorPtr&, const Ice::Identity&, const Ice::Context&,
+ const std::string&, Mode, bool, const std::vector<EndpointPtr>&
#ifdef ICEE_HAS_ROUTER
, const RouterInfoPtr&
#endif
@@ -262,8 +264,8 @@ class IndirectReference :
{
public:
- IndirectReference(const InstancePtr&, const Ice::Identity&, const Ice::Context&, const std::string&,
- Mode, bool, const std::string&
+ IndirectReference(const InstancePtr&, const Ice::CommunicatorPtr&, const Ice::Identity&, const Ice::Context&,
+ const std::string&, Mode, bool, const std::string&
#ifdef ICEE_HAS_ROUTER
, const RouterInfoPtr&
#endif
diff --git a/cppe/src/IceE/ReferenceFactory.cpp b/cppe/src/IceE/ReferenceFactory.cpp
index 8be846b2f01..36282a05c26 100644
--- a/cppe/src/IceE/ReferenceFactory.cpp
+++ b/cppe/src/IceE/ReferenceFactory.cpp
@@ -77,9 +77,9 @@ IceInternal::ReferenceFactory::create(const Identity& ident,
// Create new reference
//
#ifdef ICEE_HAS_ROUTER
- return new DirectReference(_instance, ident, context, facet, mode, secure, endpoints, routerInfo);
+ return new DirectReference(_instance, _communicator, ident, context, facet, mode, secure, endpoints, routerInfo);
#else
- return new DirectReference(_instance, ident, context, facet, mode, secure, endpoints);
+ return new DirectReference(_instance, _communicator, ident, context, facet, mode, secure, endpoints);
#endif
}
@@ -113,9 +113,10 @@ IceInternal::ReferenceFactory::create(const Identity& ident,
// Create new reference
//
#ifdef ICEE_HAS_ROUTER
- return new IndirectReference(_instance, ident, context, facet, mode, secure, adapterId, routerInfo, locatorInfo);
+ return new IndirectReference(_instance, _communicator, ident, context, facet, mode, secure, adapterId, routerInfo,
+ locatorInfo);
#else
- return new IndirectReference(_instance, ident, context, facet, mode, secure, adapterId, locatorInfo);
+ return new IndirectReference(_instance, _communicator, ident, context, facet, mode, secure, adapterId, locatorInfo);
#endif
}
@@ -143,7 +144,7 @@ IceInternal::ReferenceFactory::create(const Identity& ident,
//
// Create new reference
//
- return new FixedReference(_instance, ident, context, facet, mode, fixedConnections);
+ return new FixedReference(_instance, _communicator, ident, context, facet, mode, fixedConnections);
}
ReferencePtr
@@ -667,8 +668,10 @@ IceInternal::ReferenceFactory::getDefaultLocator() const
#endif
-IceInternal::ReferenceFactory::ReferenceFactory(const InstancePtr& instance) :
- _instance(instance)
+IceInternal::ReferenceFactory::ReferenceFactory(const InstancePtr& instance,
+ const CommunicatorPtr& communicator) :
+ _instance(instance),
+ _communicator(communicator)
{
}
@@ -683,6 +686,7 @@ IceInternal::ReferenceFactory::destroy()
}
_instance = 0;
+ _communicator = 0;
#ifdef ICEE_HAS_ROUTER
_defaultRouter = 0;
#endif
diff --git a/cppe/src/IceE/ReferenceFactory.h b/cppe/src/IceE/ReferenceFactory.h
index d2c4c4482ae..f8ea02964f1 100644
--- a/cppe/src/IceE/ReferenceFactory.h
+++ b/cppe/src/IceE/ReferenceFactory.h
@@ -76,11 +76,12 @@ public:
private:
- ReferenceFactory(const InstancePtr&);
+ ReferenceFactory(const InstancePtr&, const Ice::CommunicatorPtr&);
void destroy();
friend class Instance;
InstancePtr _instance;
+ Ice::CommunicatorPtr _communicator;
#ifdef ICEE_HAS_ROUTER
::Ice::RouterPrx _defaultRouter;
#endif