summaryrefslogtreecommitdiff
path: root/cpp/src/Ice/Reference.cpp
diff options
context:
space:
mode:
authorMichi Henning <michi@zeroc.com>2003-08-27 08:59:34 +0000
committerMichi Henning <michi@zeroc.com>2003-08-27 08:59:34 +0000
commit3e55486ea753901101bed6974e872d0002c8aaed (patch)
treea615409a0cf6472a00162709cd007ff045b690c8 /cpp/src/Ice/Reference.cpp
parentAdded test for ice_getContext(). (diff)
downloadice-3e55486ea753901101bed6974e872d0002c8aaed.tar.bz2
ice-3e55486ea753901101bed6974e872d0002c8aaed.tar.xz
ice-3e55486ea753901101bed6974e872d0002c8aaed.zip
Added per-proxy contexts to icej. For ice, added context to operator== and
the hash function for proxies.
Diffstat (limited to 'cpp/src/Ice/Reference.cpp')
-rw-r--r--cpp/src/Ice/Reference.cpp33
1 files changed, 30 insertions, 3 deletions
diff --git a/cpp/src/Ice/Reference.cpp b/cpp/src/Ice/Reference.cpp
index 0f7da04d1c0..407a3f9524d 100644
--- a/cpp/src/Ice/Reference.cpp
+++ b/cpp/src/Ice/Reference.cpp
@@ -45,6 +45,11 @@ IceInternal::Reference::operator==(const Reference& r) const
return false;
}
+ if(context != r.context)
+ {
+ return false;
+ }
+
if(facet != r.facet)
{
return false;
@@ -115,6 +120,15 @@ IceInternal::Reference::operator<(const Reference& r) const
{
return false;
}
+
+ if(context < r.context)
+ {
+ return true;
+ }
+ else if(r.context < context)
+ {
+ return false;
+ }
if(facet < r.facet)
{
@@ -655,7 +669,8 @@ IceInternal::Reference::Reference(const InstancePtr& inst,
Int h = 0;
string::const_iterator p;
- FacetPath::const_iterator q;
+ Context::const_iterator q;
+ FacetPath::const_iterator r;
for(p = identity.name.begin(); p != identity.name.end(); ++p)
{
@@ -667,9 +682,21 @@ IceInternal::Reference::Reference(const InstancePtr& inst,
h = 5 * h + *p;
}
- for(q = facet.begin(); q != facet.end(); ++q)
+ for(q = context.begin(); q != context.end(); ++q)
+ {
+ for(p = q->first.begin(); p != q->first.end(); ++p)
+ {
+ h = 5 * h + *p;
+ }
+ for(p = q->second.begin(); p != q->second.end(); ++p)
+ {
+ h = 5 * h + *p;
+ }
+ }
+
+ for(r = facet.begin(); r != facet.end(); ++r)
{
- for(p = q->begin(); p != q->end(); ++p)
+ for(p = r->begin(); p != r->end(); ++p)
{
h = 5 * h + *p;
}