summaryrefslogtreecommitdiff
path: root/cpp/src
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src')
-rw-r--r--cpp/src/Ice/Reference.cpp160
-rw-r--r--cpp/src/Ice/Reference.h20
2 files changed, 110 insertions, 70 deletions
diff --git a/cpp/src/Ice/Reference.cpp b/cpp/src/Ice/Reference.cpp
index 02d63007d3d..4a1773865bf 100644
--- a/cpp/src/Ice/Reference.cpp
+++ b/cpp/src/Ice/Reference.cpp
@@ -91,30 +91,6 @@ IceInternal::Reference::changeFacet(const string& newFacet) const
return r;
}
-ReferencePtr
-IceInternal::Reference::changeCacheConnection(bool newCache) const
-{
- if(newCache == _cacheConnection)
- {
- return ReferencePtr(const_cast<Reference*>(this));
- }
- ReferencePtr r = _instance->referenceFactory()->copy(this);
- r->_cacheConnection = newCache;
- return r;
-}
-
-ReferencePtr
-IceInternal::Reference::changeEndpointSelection(EndpointSelectionType newType) const
-{
- if(newType == _endpointSelection)
- {
- return ReferencePtr(const_cast<Reference*>(this));
- }
- ReferencePtr r = _instance->referenceFactory()->copy(this);
- r->_endpointSelection = newType;
- return r;
-}
-
Int
Reference::hash() const
{
@@ -302,16 +278,6 @@ IceInternal::Reference::operator==(const Reference& r) const
return false;
}
- if(_cacheConnection != r._cacheConnection)
- {
- return false;
- }
-
- if(_endpointSelection != r._endpointSelection)
- {
- return false;
- }
-
return true;
}
@@ -364,24 +330,6 @@ IceInternal::Reference::operator<(const Reference& r) const
return false;
}
- if(!_cacheConnection && r._cacheConnection)
- {
- return true;
- }
- else if(r._cacheConnection < _cacheConnection)
- {
- return false;
- }
-
- if(_endpointSelection < r._endpointSelection)
- {
- return true;
- }
- else if(r._endpointSelection < _endpointSelection)
- {
- return false;
- }
-
return false;
}
@@ -415,9 +363,7 @@ IceInternal::Reference::Reference(const InstancePtr& inst, const CommunicatorPtr
_mode(md),
_identity(ident),
_context(ctx),
- _facet(fs),
- _cacheConnection(true),
- _endpointSelection(Random)
+ _facet(fs)
{
}
@@ -428,9 +374,7 @@ IceInternal::Reference::Reference(const Reference& r) :
_mode(r._mode),
_identity(r._identity),
_context(r._context),
- _facet(r._facet),
- _cacheConnection(r._cacheConnection),
- _endpointSelection(r._endpointSelection)
+ _facet(r._facet)
{
}
@@ -457,6 +401,12 @@ IceInternal::FixedReference::getSecure() const
return false;
}
+int
+IceInternal::FixedReference::getLocatorCacheTimeout() const
+{
+ return 0;
+}
+
string
IceInternal::FixedReference::getAdapterId() const
{
@@ -475,10 +425,16 @@ IceInternal::FixedReference::getCollocationOptimization() const
return false;
}
-int
-IceInternal::FixedReference::getLocatorCacheTimeout() const
+bool
+IceInternal::FixedReference::getCacheConnection() const
{
- return 0;
+ return false;
+}
+
+Ice::EndpointSelectionType
+IceInternal::FixedReference::getEndpointSelection() const
+{
+ return Random;
}
ReferencePtr
@@ -527,6 +483,12 @@ IceInternal::FixedReference::changeConnectionId(const string&) const
}
ReferencePtr
+IceInternal::FixedReference::changeLocatorCacheTimeout(int) const
+{
+ return FixedReferencePtr(const_cast<FixedReference*>(this));
+}
+
+ReferencePtr
IceInternal::FixedReference::changeAdapterId(const string& newAdapterId) const
{
return FixedReferencePtr(const_cast<FixedReference*>(this));
@@ -539,7 +501,13 @@ IceInternal::FixedReference::changeEndpoints(const vector<EndpointIPtr>& newEndp
}
ReferencePtr
-IceInternal::FixedReference::changeLocatorCacheTimeout(int) const
+IceInternal::FixedReference::changeCacheConnection(bool) const
+{
+ return FixedReferencePtr(const_cast<FixedReference*>(this));
+}
+
+ReferencePtr
+IceInternal::FixedReference::changeEndpointSelection(EndpointSelectionType) const
{
return FixedReferencePtr(const_cast<FixedReference*>(this));
}
@@ -723,6 +691,18 @@ IceInternal::RoutableReference::getCollocationOptimization() const
return _collocationOptimization;
}
+bool
+IceInternal::RoutableReference::getCacheConnection() const
+{
+ return _cacheConnection;
+}
+
+Ice::EndpointSelectionType
+IceInternal::RoutableReference::getEndpointSelection() const
+{
+ return _endpointSelection;
+}
+
ReferencePtr
IceInternal::RoutableReference::changeSecure(bool newSecure) const
{
@@ -760,6 +740,30 @@ IceInternal::RoutableReference::changeCollocationOptimization(bool newCollocatio
return r;
}
+ReferencePtr
+IceInternal::RoutableReference::changeCacheConnection(bool newCache) const
+{
+ if(newCache == _cacheConnection)
+ {
+ return RoutableReferencePtr(const_cast<RoutableReference*>(this));
+ }
+ RoutableReferencePtr r = RoutableReferencePtr::dynamicCast(getInstance()->referenceFactory()->copy(this));
+ r->_cacheConnection = newCache;
+ return r;
+}
+
+ReferencePtr
+IceInternal::RoutableReference::changeEndpointSelection(EndpointSelectionType newType) const
+{
+ if(newType == _endpointSelection)
+ {
+ return RoutableReferencePtr(const_cast<RoutableReference*>(this));
+ }
+ RoutableReferencePtr r = RoutableReferencePtr::dynamicCast(getInstance()->referenceFactory()->copy(this));
+ r->_endpointSelection = newType;
+ return r;
+}
+
int
IceInternal::RoutableReference::hash() const
{
@@ -786,6 +790,14 @@ IceInternal::RoutableReference::operator==(const Reference& r) const
{
return false;
}
+ if(_cacheConnection != rhs->_cacheConnection)
+ {
+ return false;
+ }
+ if(_endpointSelection != rhs->_endpointSelection)
+ {
+ return false;
+ }
return _routerInfo == rhs->_routerInfo;
}
@@ -827,6 +839,22 @@ IceInternal::RoutableReference::operator<(const Reference& r) const
{
return false;
}
+ if(!_cacheConnection && rhs->_cacheConnection)
+ {
+ return true;
+ }
+ else if(rhs->_cacheConnection < _cacheConnection)
+ {
+ return false;
+ }
+ if(_endpointSelection < rhs->_endpointSelection)
+ {
+ return true;
+ }
+ else if(rhs->_endpointSelection < _endpointSelection)
+ {
+ return false;
+ }
return _routerInfo < rhs->_routerInfo;
}
}
@@ -839,7 +867,9 @@ IceInternal::RoutableReference::RoutableReference(const InstancePtr& inst, const
Reference(inst, com, ident, ctx, fs, md),
_secure(sec),
_routerInfo(rtrInfo),
- _collocationOptimization(collocationOpt)
+ _collocationOptimization(collocationOpt),
+ _cacheConnection(true),
+ _endpointSelection(Random)
{
}
@@ -847,7 +877,9 @@ IceInternal::RoutableReference::RoutableReference(const RoutableReference& r) :
Reference(r),
_secure(r._secure),
_routerInfo(r._routerInfo),
- _collocationOptimization(r._collocationOptimization)
+ _collocationOptimization(r._collocationOptimization),
+ _cacheConnection(r._cacheConnection),
+ _endpointSelection(r._endpointSelection)
{
}
diff --git a/cpp/src/Ice/Reference.h b/cpp/src/Ice/Reference.h
index 7f67f2aa41c..a359f600977 100644
--- a/cpp/src/Ice/Reference.h
+++ b/cpp/src/Ice/Reference.h
@@ -47,8 +47,6 @@ public:
const std::string& getFacet() const { return _facet; }
const InstancePtr& getInstance() const { return _instance; }
const Ice::Context& getContext() const { return _context; }
- const bool getCacheConnection() const { return _cacheConnection; }
- const Ice::EndpointSelectionType getEndpointSelection() const { return _endpointSelection; }
ReferencePtr defaultContext() const;
@@ -59,6 +57,8 @@ public:
virtual std::vector<EndpointIPtr> getEndpoints() const = 0;
virtual bool getCollocationOptimization() const = 0;
virtual int getLocatorCacheTimeout() const = 0;
+ virtual bool getCacheConnection() const = 0;
+ virtual Ice::EndpointSelectionType getEndpointSelection() const = 0;
//
// The change* methods (here and in derived classes) create
@@ -69,8 +69,6 @@ public:
ReferencePtr changeMode(Mode) const;
ReferencePtr changeIdentity(const Ice::Identity&) const;
ReferencePtr changeFacet(const std::string&) const;
- ReferencePtr changeCacheConnection(bool) const;
- ReferencePtr changeEndpointSelection(Ice::EndpointSelectionType) const;
virtual ReferencePtr changeSecure(bool) const = 0;
virtual ReferencePtr changeRouter(const Ice::RouterPrx&) const = 0;
@@ -82,6 +80,8 @@ public:
virtual ReferencePtr changeAdapterId(const std::string&) const = 0;
virtual ReferencePtr changeEndpoints(const std::vector<EndpointIPtr>&) const = 0;
virtual ReferencePtr changeLocatorCacheTimeout(int) const = 0;
+ virtual ReferencePtr changeCacheConnection(bool) const = 0;
+ virtual ReferencePtr changeEndpointSelection(Ice::EndpointSelectionType) const = 0;
virtual int hash() const; // Conceptually const.
@@ -125,8 +125,6 @@ private:
Ice::Identity _identity;
Ice::Context _context;
std::string _facet;
- bool _cacheConnection;
- Ice::EndpointSelectionType _endpointSelection;
};
class FixedReference : public Reference
@@ -143,6 +141,8 @@ public:
virtual std::string getAdapterId() const;
virtual std::vector<EndpointIPtr> getEndpoints() const;
virtual bool getCollocationOptimization() const;
+ virtual bool getCacheConnection() const;
+ virtual Ice::EndpointSelectionType getEndpointSelection() const;
virtual ReferencePtr changeSecure(bool) const;
virtual ReferencePtr changeRouter(const Ice::RouterPrx&) const;
@@ -154,6 +154,8 @@ public:
virtual ReferencePtr changeLocatorCacheTimeout(int) const;
virtual ReferencePtr changeAdapterId(const std::string&) const;
virtual ReferencePtr changeEndpoints(const std::vector<EndpointIPtr>&) const;
+ virtual ReferencePtr changeCacheConnection(bool) const;
+ virtual ReferencePtr changeEndpointSelection(Ice::EndpointSelectionType) const;
virtual void streamWrite(BasicStream*) const;
virtual std::string toString() const;
@@ -186,10 +188,14 @@ public:
virtual bool getSecure() const;
virtual bool getCollocationOptimization() const;
+ virtual bool getCacheConnection() const;
+ virtual Ice::EndpointSelectionType getEndpointSelection() const;
virtual ReferencePtr changeSecure(bool) const;
virtual ReferencePtr changeRouter(const Ice::RouterPrx&) const;
virtual ReferencePtr changeCollocationOptimization(bool) const;
+ virtual ReferencePtr changeCacheConnection(bool) const;
+ virtual ReferencePtr changeEndpointSelection(Ice::EndpointSelectionType) const;
virtual Ice::ConnectionIPtr getConnection(bool&) const = 0;
@@ -214,6 +220,8 @@ private:
bool _secure;
RouterInfoPtr _routerInfo; // Null if no router is used.
bool _collocationOptimization;
+ bool _cacheConnection;
+ Ice::EndpointSelectionType _endpointSelection;
};
class DirectReference : public RoutableReference