summaryrefslogtreecommitdiff
path: root/cpp
diff options
context:
space:
mode:
authorMarc Laukien <marc@zeroc.com>2001-09-18 03:29:48 +0000
committerMarc Laukien <marc@zeroc.com>2001-09-18 03:29:48 +0000
commit1f0761d9fd4df501fb63b914f4ba4a5a621aee29 (patch)
treec5894af76d3d8e7717647ba2c0f1788ae98b4ed6 /cpp
parentwin fixes (diff)
downloadice-1f0761d9fd4df501fb63b914f4ba4a5a621aee29.tar.bz2
ice-1f0761d9fd4df501fb63b914f4ba4a5a621aee29.tar.xz
ice-1f0761d9fd4df501fb63b914f4ba4a5a621aee29.zip
fixes
Diffstat (limited to 'cpp')
-rw-r--r--cpp/include/Ice/Proxy.h10
-rw-r--r--cpp/src/Ice/Proxy.cpp4
-rw-r--r--cpp/src/slice2cpp/Gen.cpp1
3 files changed, 9 insertions, 6 deletions
diff --git a/cpp/include/Ice/Proxy.h b/cpp/include/Ice/Proxy.h
index d81f0169fd4..662128f3fc0 100644
--- a/cpp/include/Ice/Proxy.h
+++ b/cpp/include/Ice/Proxy.h
@@ -77,18 +77,18 @@ protected:
Object();
virtual ~Object();
+ friend class ::IceInternal::ProxyFactory;
::IceInternal::Handle< ::IceDelegate::Ice::Object> __getDelegate();
virtual ::IceInternal::Handle< ::IceDelegateM::Ice::Object> __createDelegateM();
+ ::IceInternal::Handle< ::IceDelegate::Ice::Object> _delegate;
+
private:
void setup(const ::IceInternal::ReferencePtr&);
::IceInternal::ReferencePtr _reference;
- ::IceInternal::Handle< ::IceDelegate::Ice::Object> _delegate;
-
- friend class ::IceInternal::ProxyFactory;
};
} }
@@ -108,11 +108,11 @@ protected:
Object();
virtual ~Object();
+ friend class ::IceProxy::Ice::Object;
private:
virtual void setup(const ::IceInternal::ReferencePtr&);
- friend class ::IceProxy::Ice::Object;
};
} }
@@ -132,6 +132,7 @@ protected:
Object();
virtual ~Object();
+ friend class ::IceProxy::Ice::Object;
const ::IceInternal::EmitterPtr& __emitter(); // const...& for performance
const ::IceInternal::ReferencePtr& __reference(); // const...& for performance
@@ -142,7 +143,6 @@ private:
::IceInternal::ReferencePtr _reference;
virtual void setup(const ::IceInternal::ReferencePtr&);
- friend class ::IceProxy::Ice::Object;
};
} }
diff --git a/cpp/src/Ice/Proxy.cpp b/cpp/src/Ice/Proxy.cpp
index a096a2a08cf..52fb90a671a 100644
--- a/cpp/src/Ice/Proxy.cpp
+++ b/cpp/src/Ice/Proxy.cpp
@@ -303,6 +303,7 @@ IceProxy::Ice::Object::__handleException(const LocalException& ex, int& cnt)
JTCSyncT<JTCMutex> sync(*this);
_delegate = 0;
+
static const int max = 1; // TODO: Make number of retries configurable
try
@@ -364,12 +365,13 @@ IceProxy::Ice::Object::__locationForward(const LocationForward& ex)
{
JTCSyncT<JTCMutex> sync(*this);
+ _delegate = 0;
+
if (_reference->identity != ex._prx->_reference->identity)
{
throw ReferenceIdentityException(__FILE__, __LINE__);
}
- _delegate = 0;
_reference = _reference->changeEndpoints(ex._prx->_reference->endpoints);
/*
diff --git a/cpp/src/slice2cpp/Gen.cpp b/cpp/src/slice2cpp/Gen.cpp
index a27b87f263f..28326387ee8 100644
--- a/cpp/src/slice2cpp/Gen.cpp
+++ b/cpp/src/slice2cpp/Gen.cpp
@@ -803,6 +803,7 @@ Slice::Gen::ProxyVisitor::visitOperation(const OperationPtr& p)
}
else
{
+ C << nl << "_delegate = 0;";
C << nl << "__ex.raise();";
}
C << eb;