summaryrefslogtreecommitdiff
path: root/cpp/src
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src')
-rw-r--r--cpp/src/Ice/Reference.cpp40
-rw-r--r--cpp/src/Ice/Reference.h7
2 files changed, 24 insertions, 23 deletions
diff --git a/cpp/src/Ice/Reference.cpp b/cpp/src/Ice/Reference.cpp
index ec01c77192c..3c77087b837 100644
--- a/cpp/src/Ice/Reference.cpp
+++ b/cpp/src/Ice/Reference.cpp
@@ -32,59 +32,59 @@ using namespace IceInternal;
void IceInternal::incRef(IceInternal::Reference* p) { p->__incRef(); }
void IceInternal::decRef(IceInternal::Reference* p) { p->__decRef(); }
+const Context&
+IceInternal::Reference::getContext() const
+{
+ return _hasContext ? _context : _instance->getDefaultContext();
+}
+
ReferencePtr
-IceInternal::Reference::changeMode(Mode newMode) const
+IceInternal::Reference::defaultContext() const
{
- if(newMode == _mode)
+ if(!_hasContext)
{
return ReferencePtr(const_cast<Reference*>(this));
}
ReferencePtr r = _instance->referenceFactory()->copy(this);
- r->_mode = newMode;
+ r->_hasContext = false;
+ r->_context.clear();
return r;
}
ReferencePtr
-IceInternal::Reference::changeIdentity(const Identity& newIdentity) const
+IceInternal::Reference::changeContext(const Context& newContext) const
{
- if(newIdentity == _identity)
+ if(_hasContext && newContext == _context)
{
return ReferencePtr(const_cast<Reference*>(this));
}
ReferencePtr r = _instance->referenceFactory()->copy(this);
- r->_identity = newIdentity;
+ r->_hasContext = true;
+ r->_context = newContext;
return r;
}
-const Context&
-IceInternal::Reference::getContext() const
-{
- return _hasContext ? _context : _instance->getDefaultContext();
-}
-
ReferencePtr
-IceInternal::Reference::changeContext(const Context& newContext) const
+IceInternal::Reference::changeMode(Mode newMode) const
{
- if(_hasContext && newContext == _context)
+ if(newMode == _mode)
{
return ReferencePtr(const_cast<Reference*>(this));
}
ReferencePtr r = _instance->referenceFactory()->copy(this);
- r->_hasContext = true;
- r->_context = newContext;
+ r->_mode = newMode;
return r;
}
ReferencePtr
-IceInternal::Reference::defaultContext() const
+IceInternal::Reference::changeIdentity(const Identity& newIdentity) const
{
- if(!_hasContext)
+ if(newIdentity == _identity)
{
return ReferencePtr(const_cast<Reference*>(this));
}
ReferencePtr r = _instance->referenceFactory()->copy(this);
- r->_hasContext = false;
- r->_context.clear();
+ r->_identity = newIdentity;
return r;
}
diff --git a/cpp/src/Ice/Reference.h b/cpp/src/Ice/Reference.h
index 733e3ed1989..b4bbc14c9c3 100644
--- a/cpp/src/Ice/Reference.h
+++ b/cpp/src/Ice/Reference.h
@@ -47,6 +47,9 @@ public:
const std::string& getFacet() const { return _facet; }
bool getSecure() const { return _secure; }
const InstancePtr& getInstance() const { return _instance; }
+ const Ice::Context& getContext() const;
+
+ ReferencePtr defaultContext() const;
virtual std::vector<EndpointPtr> getEndpoints() const = 0;
virtual bool getCollocationOptimization() const = 0;
@@ -56,11 +59,9 @@ public:
// a new reference based on the existing one, with the
// corresponding value changed.
//
+ ReferencePtr changeContext(const Ice::Context&) const;
ReferencePtr changeMode(Mode) const;
ReferencePtr changeIdentity(const Ice::Identity&) const;
- const Ice::Context& getContext() const;
- ReferencePtr changeContext(const Ice::Context&) const;
- ReferencePtr defaultContext() const;
bool hasContext() const { return _hasContext; }
ReferencePtr changeFacet(const std::string&) const;
ReferencePtr changeSecure(bool) const;