summaryrefslogtreecommitdiff
path: root/cpp/src/Ice/BasicStream.cpp
diff options
context:
space:
mode:
authorMarc Laukien <marc@zeroc.com>2001-10-14 17:58:55 +0000
committerMarc Laukien <marc@zeroc.com>2001-10-14 17:58:55 +0000
commit5c872d29b6223e23daea5b510a2bcb4d43fa08eb (patch)
treee4e7f5a7f43a76c7cee0a52626b2a1c294763bb9 /cpp/src/Ice/BasicStream.cpp
parentfixes (diff)
downloadice-5c872d29b6223e23daea5b510a2bcb4d43fa08eb.tar.bz2
ice-5c872d29b6223e23daea5b510a2bcb4d43fa08eb.tar.xz
ice-5c872d29b6223e23daea5b510a2bcb4d43fa08eb.zip
user exceptin factories
Diffstat (limited to 'cpp/src/Ice/BasicStream.cpp')
-rw-r--r--cpp/src/Ice/BasicStream.cpp27
1 files changed, 12 insertions, 15 deletions
diff --git a/cpp/src/Ice/BasicStream.cpp b/cpp/src/Ice/BasicStream.cpp
index 9ed7c55d533..9ed6f60f00a 100644
--- a/cpp/src/Ice/BasicStream.cpp
+++ b/cpp/src/Ice/BasicStream.cpp
@@ -15,6 +15,8 @@
#include <Ice/ProxyFactory.h>
#include <Ice/ServantFactory.h>
#include <Ice/ServantFactoryManager.h>
+#include <Ice/UserExceptionFactory.h>
+#include <Ice/UserExceptionFactoryManager.h>
#include <Ice/Exception.h>
using namespace std;
@@ -871,35 +873,30 @@ IceInternal::BasicStream::throwException(const char** typesBegin, const char** t
read(exceptionIds);
for (vector<string>::const_iterator p = exceptionIds.begin(); p != exceptionIds.end(); ++p)
{
-/*
UserExceptionFactoryPtr factory = _instance->userExceptionFactoryManager()->find(*p);
if (factory)
{
- v = factory->create(*p);
try
{
- v->__read(this);
+ factory->createAndThrow(*p);
}
- catch(...)
+ catch (UserException& ex)
{
- delete v;
- throw;
- }
-
- for (; p != exceptionIds.end(); ++p)
- {
- pair<const char**, const char**> q = equal_range(typesBegin, types.end, *p);
- if (q.first != q.second)
+ ex.__read(this);
+ for (; p != exceptionIds.end(); ++p)
{
- v->_throw();
+ pair<const char**, const char**> q = equal_range(typesBegin, typesEnd, *p);
+ if (q.first != q.second)
+ {
+ ex._throw();
+ }
}
}
- delete v;
throw UserExceptionUnmarshalException(__FILE__, __LINE__);
}
-*/
+
pair<const char**, const char**> q = equal_range(typesBegin, typesEnd, *p);
if (q.first != q.second)
{