summaryrefslogtreecommitdiff
path: root/cpp/src
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src')
-rw-r--r--cpp/src/Ice/Instance.cpp9
-rw-r--r--cpp/src/Ice/Instance.h2
-rw-r--r--cpp/src/Ice/Reference.cpp30
-rw-r--r--cpp/src/Ice/Reference.h14
-rw-r--r--cpp/src/Ice/ReferenceFactory.cpp1
-rw-r--r--cpp/src/Ice/ReferenceFactory.h3
6 files changed, 28 insertions, 31 deletions
diff --git a/cpp/src/Ice/Instance.cpp b/cpp/src/Ice/Instance.cpp
index 38837e462cf..3c6d9c3a42d 100644
--- a/cpp/src/Ice/Instance.cpp
+++ b/cpp/src/Ice/Instance.cpp
@@ -75,12 +75,6 @@ IceInternal::Instance::destroyed() const
return _state == StateDestroyed;
}
-CommunicatorPtr
-IceInternal::Instance::communicator() const
-{
- return _communicator;
-}
-
PropertiesPtr
IceInternal::Instance::properties() const
{
@@ -421,7 +415,6 @@ IceInternal::Instance::getDefaultContext() const
IceInternal::Instance::Instance(const CommunicatorPtr& communicator, const PropertiesPtr& properties) :
- _communicator(communicator.get()),
_state(StateActive),
_properties(properties),
_messageSizeMax(0),
@@ -628,7 +621,7 @@ IceInternal::Instance::Instance(const CommunicatorPtr& communicator, const Prope
_locatorManager = new LocatorManager;
- _referenceFactory = new ReferenceFactory(this);
+ _referenceFactory = new ReferenceFactory(this, communicator);
_proxyFactory = new ProxyFactory(this);
diff --git a/cpp/src/Ice/Instance.h b/cpp/src/Ice/Instance.h
index d54d838e1d3..6f6dedef17a 100644
--- a/cpp/src/Ice/Instance.h
+++ b/cpp/src/Ice/Instance.h
@@ -49,7 +49,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&);
@@ -87,7 +86,6 @@ private:
bool destroy();
friend class Ice::CommunicatorI;
- Ice::Communicator* _communicator; // Not a Ptr, to avoid having Instance and CommunicatorI point at each other.
enum State
{
StateActive,
diff --git a/cpp/src/Ice/Reference.cpp b/cpp/src/Ice/Reference.cpp
index 3c714335291..383befc7907 100644
--- a/cpp/src/Ice/Reference.cpp
+++ b/cpp/src/Ice/Reference.cpp
@@ -54,7 +54,7 @@ IceInternal::Reference::defaultContext() const
CommunicatorPtr
IceInternal::Reference::getCommunicator() const
{
- return _instance->communicator();
+ return _communicator;
}
ReferencePtr
@@ -400,9 +400,10 @@ public:
}
};
-IceInternal::Reference::Reference(const InstancePtr& inst, const Identity& ident, const Context& ctx,
- const string& fs, Mode md)
+IceInternal::Reference::Reference(const InstancePtr& inst, const CommunicatorPtr& com, const Identity& ident,
+ const Context& ctx, const string& fs, Mode md)
: _instance(inst),
+ _communicator(com),
_mode(md),
_identity(ident),
_hasContext(!ctx.empty()),
@@ -414,6 +415,7 @@ IceInternal::Reference::Reference(const InstancePtr& inst, const Identity& ident
IceInternal::Reference::Reference(const Reference& r)
: _instance(r._instance),
+ _communicator(r._communicator),
_mode(r._mode),
_identity(r._identity),
_hasContext(r._hasContext),
@@ -426,10 +428,10 @@ IceInternal::Reference::Reference(const Reference& r)
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<ConnectionIPtr>& fixedConns)
- : Reference(inst, ident, ctx, fs, md),
+ : Reference(inst, com, ident, ctx, fs, md),
_fixedConnections(fixedConns)
{
}
@@ -727,10 +729,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,
+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, bool collocationOpt)
- : Reference(inst, ident, ctx, fs, md),
+ : Reference(inst, com, ident, ctx, fs, md),
_secure(sec),
_routerInfo(rtrInfo),
_collocationOptimization(collocationOpt)
@@ -748,11 +750,11 @@ IceInternal::RoutableReference::RoutableReference(const RoutableReference& r)
void IceInternal::incRef(IceInternal::DirectReference* p) { p->__incRef(); }
void IceInternal::decRef(IceInternal::DirectReference* p) { p->__decRef(); }
-IceInternal::DirectReference::DirectReference(const InstancePtr& inst, const Identity& ident,
- const Context& ctx, const string& fs, Mode md,
+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, bool collocationOpt)
- : RoutableReference(inst, ident, ctx, fs, md, sec, rtrInfo, collocationOpt),
+ : RoutableReference(inst, com, ident, ctx, fs, md, sec, rtrInfo, collocationOpt),
_endpoints(endpts)
{
}
@@ -969,11 +971,11 @@ IceInternal::DirectReference::DirectReference(const DirectReference& r)
void IceInternal::incRef(IceInternal::IndirectReference* p) { p->__incRef(); }
void IceInternal::decRef(IceInternal::IndirectReference* p) { p->__decRef(); }
-IceInternal::IndirectReference::IndirectReference(const InstancePtr& inst, const Identity& ident,
- const Context& ctx, const string& fs, Mode md,
+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, bool collocationOpt)
- : RoutableReference(inst, ident, ctx, fs, md, sec, rtrInfo, collocationOpt),
+ : RoutableReference(inst, com, ident, ctx, fs, md, sec, rtrInfo, collocationOpt),
_adapterId(adptid),
_locatorInfo(locInfo)
{
diff --git a/cpp/src/Ice/Reference.h b/cpp/src/Ice/Reference.h
index 0ae8838dc2a..37441044bd4 100644
--- a/cpp/src/Ice/Reference.h
+++ b/cpp/src/Ice/Reference.h
@@ -104,12 +104,14 @@ public:
protected:
- Reference(const InstancePtr&, const Ice::Identity&, const Ice::Context&, const std::string&, Mode);
+ Reference(const InstancePtr&, const Ice::CommunicatorPtr&, const Ice::Identity&, const Ice::Context&,
+ const std::string&, Mode);
Reference(const Reference&);
private:
- InstancePtr _instance;
+ const InstancePtr _instance;
+ const Ice::CommunicatorPtr _communicator;
Mode _mode;
Ice::Identity _identity;
@@ -126,7 +128,7 @@ class FixedReference : public Reference
{
public:
- FixedReference(const InstancePtr&, const Ice::Identity&, const Ice::Context&, const std::string&, Mode,
+ FixedReference(const InstancePtr&, const Ice::CommunicatorPtr&, const Ice::Identity&, const Ice::Context&, const std::string&, Mode,
const std::vector<Ice::ConnectionIPtr>&);
const std::vector<Ice::ConnectionIPtr>& getFixedConnections() const;
@@ -188,7 +190,7 @@ public:
protected:
- RoutableReference(const InstancePtr&, const Ice::Identity&, const Ice::Context&, const std::string&,
+ RoutableReference(const InstancePtr&, const Ice::CommunicatorPtr&, const Ice::Identity&, const Ice::Context&, const std::string&,
Mode, bool, const RouterInfoPtr&, bool);
RoutableReference(const RoutableReference&);
@@ -204,7 +206,7 @@ class DirectReference : public RoutableReference
{
public:
- DirectReference(const InstancePtr&, const Ice::Identity&, const Ice::Context&, const std::string&, Mode, bool,
+ DirectReference(const InstancePtr&, const Ice::CommunicatorPtr&, const Ice::Identity&, const Ice::Context&, const std::string&, Mode, bool,
const std::vector<EndpointPtr>&, const RouterInfoPtr&, bool);
virtual std::vector<EndpointPtr> getEndpoints() const;
@@ -240,7 +242,7 @@ class IndirectReference : public RoutableReference
{
public:
- IndirectReference(const InstancePtr&, const Ice::Identity&, const Ice::Context&, const std::string&,
+ IndirectReference(const InstancePtr&, const Ice::CommunicatorPtr&, const Ice::Identity&, const Ice::Context&, const std::string&,
Mode, bool, const std::string&, const RouterInfoPtr&, const LocatorInfoPtr&, bool);
const std::string& getAdapterId() const { return _adapterId; }
diff --git a/cpp/src/Ice/ReferenceFactory.cpp b/cpp/src/Ice/ReferenceFactory.cpp
index cbfd96c3d61..8af9ceab456 100644
--- a/cpp/src/Ice/ReferenceFactory.cpp
+++ b/cpp/src/Ice/ReferenceFactory.cpp
@@ -621,6 +621,7 @@ IceInternal::ReferenceFactory::destroy()
}
_instance = 0;
+ _communicator = 0;
_defaultRouter = 0;
_defaultLocator = 0;
}
diff --git a/cpp/src/Ice/ReferenceFactory.h b/cpp/src/Ice/ReferenceFactory.h
index 5a444d2449e..9c8aed653c7 100644
--- a/cpp/src/Ice/ReferenceFactory.h
+++ b/cpp/src/Ice/ReferenceFactory.h
@@ -64,11 +64,12 @@ public:
private:
- ReferenceFactory(const InstancePtr&);
+ ReferenceFactory(const InstancePtr&, const ::Ice::CommunicatorPtr&);
void destroy();
friend class Instance;
InstancePtr _instance;
+ ::Ice::CommunicatorPtr _communicator;
::Ice::RouterPrx _defaultRouter;
::Ice::LocatorPrx _defaultLocator;
};