diff options
author | Marc Laukien <marc@zeroc.com> | 2001-10-13 14:38:52 +0000 |
---|---|---|
committer | Marc Laukien <marc@zeroc.com> | 2001-10-13 14:38:52 +0000 |
commit | dbb73b11c029b64880c4a1f8bc2bc5eac208869e (patch) | |
tree | 771e1eb5328075ac323cf70bc6cf453626f86c26 /cpp/src/Ice/BasicStream.cpp | |
parent | error # in exceptions is now properly set (diff) | |
download | ice-dbb73b11c029b64880c4a1f8bc2bc5eac208869e.tar.bz2 ice-dbb73b11c029b64880c4a1f8bc2bc5eac208869e.tar.xz ice-dbb73b11c029b64880c4a1f8bc2bc5eac208869e.zip |
more exception cleanup
Diffstat (limited to 'cpp/src/Ice/BasicStream.cpp')
-rw-r--r-- | cpp/src/Ice/BasicStream.cpp | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/cpp/src/Ice/BasicStream.cpp b/cpp/src/Ice/BasicStream.cpp index a2cb118e5df..245b687e5e9 100644 --- a/cpp/src/Ice/BasicStream.cpp +++ b/cpp/src/Ice/BasicStream.cpp @@ -848,3 +848,69 @@ IceInternal::BasicStream::read(ObjectPtr& v, const string& type) throw ServantUnmarshalException(__FILE__, __LINE__); } + +void +IceInternal::BasicStream::write(const UserException& v) +{ + const string* exceptionIds = v._exceptionIds(); + Int sz = 0; + while (exceptionIds[sz] != "::Ice::UserException") + { + ++sz; + } + write(sz); + for (int i = 0; i < sz; i++) + { + write(exceptionIds[i]); + } + v.__write(this); +} + +void +IceInternal::BasicStream::read(UserException*& v, const string& type) +{ +/* + vector<string> exceptionIds; + read(exceptionIds); + exceptionIds.push_back("::Ice::UserException"); + vector<string>::const_iterator p; + for (p = exceptionIds.begin(); p != exceptionIds.end(); ++p) + { + UserExceptionFactoryPtr factory = _instance->userExceptionFactoryManager()->find(*p); + + if (factory) + { + v = factory->create(*p); + try + { + v->__read(this); + } + catch(...) + { + delete v; + throw; + } + + for (; p != exceptionIds.end(); ++p) + { + if (*p == type) + { + return; + } + } + + delete v; + throw UserExceptionUnmarshalException(__FILE__, __LINE__); + } + + if (*p == type) + { + return; + } + + skipEncaps(); + } + + throw UserExceptionUnmarshalException(__FILE__, __LINE__); +*/ +} |