diff options
author | Mark Spruiell <mes@zeroc.com> | 2004-09-16 20:50:30 +0000 |
---|---|---|
committer | Mark Spruiell <mes@zeroc.com> | 2004-09-16 20:50:30 +0000 |
commit | 8bbe1b8910eb8cde03b29e7d056f05ebe13b0256 (patch) | |
tree | 341d2d90f042146cf988e8053b9accea1bf9f5cd /py/modules/IcePy/Util.cpp | |
parent | replace __str__ for SyscallException (diff) | |
download | ice-8bbe1b8910eb8cde03b29e7d056f05ebe13b0256.tar.bz2 ice-8bbe1b8910eb8cde03b29e7d056f05ebe13b0256.tar.xz ice-8bbe1b8910eb8cde03b29e7d056f05ebe13b0256.zip |
transfer data members of more local exceptions
Diffstat (limited to 'py/modules/IcePy/Util.cpp')
-rw-r--r-- | py/modules/IcePy/Util.cpp | 203 |
1 files changed, 139 insertions, 64 deletions
diff --git a/py/modules/IcePy/Util.cpp b/py/modules/IcePy/Util.cpp index b09edcc63ba..d3e3cc626ce 100644 --- a/py/modules/IcePy/Util.cpp +++ b/py/modules/IcePy/Util.cpp @@ -259,86 +259,160 @@ IcePy::createExceptionInstance(PyObject* type) return PyEval_CallObject(type, args.get()); } -PyObject* -IcePy::convertException(const Ice::Exception& ex) +static void +convertLocalException(const Ice::LocalException& ex, PyObject* p) { - PyObjectHandle p; - PyObject* type; - - ostringstream ostr; - ostr << ex; - string str = ostr.str(); - + // + // Transfer data members from Ice exception to Python exception. + // try { ex.ice_throw(); } - catch(const Ice::AlreadyRegisteredException& e) + catch(const Ice::UnknownException& e) { - type = lookupType("Ice.AlreadyRegisteredException"); - assert(type != NULL); - p = createExceptionInstance(type); - if(p.get() != NULL) - { - PyObjectHandle s; - s = PyString_FromString(const_cast<char*>(e.kindOfObject.c_str())); - PyObject_SetAttrString(p.get(), "kindOfObject", s.get()); - s = PyString_FromString(const_cast<char*>(e.id.c_str())); - PyObject_SetAttrString(p.get(), "id", s.get()); - } + IcePy::PyObjectHandle m = PyString_FromString(const_cast<char*>(e.unknown.c_str())); + PyObject_SetAttrString(p, "unknown", m.get()); } - catch(const Ice::NotRegisteredException& e) + catch(const Ice::ObjectAdapterDeactivatedException& e) { - type = lookupType("Ice.NotRegisteredException"); - assert(type != NULL); - p = createExceptionInstance(type); - if(p.get() != NULL) - { - PyObjectHandle s; - s = PyString_FromString(const_cast<char*>(e.kindOfObject.c_str())); - PyObject_SetAttrString(p.get(), "kindOfObject", s.get()); - s = PyString_FromString(const_cast<char*>(e.id.c_str())); - PyObject_SetAttrString(p.get(), "id", s.get()); - } + IcePy::PyObjectHandle m = PyString_FromString(const_cast<char*>(e.name.c_str())); + PyObject_SetAttrString(p, "name", m.get()); + } + catch(const Ice::ObjectAdapterIdInUseException& e) + { + IcePy::PyObjectHandle m = PyString_FromString(const_cast<char*>(e.id.c_str())); + PyObject_SetAttrString(p, "id", m.get()); + } + catch(const Ice::NoEndpointException& e) + { + IcePy::PyObjectHandle m = PyString_FromString(const_cast<char*>(e.proxy.c_str())); + PyObject_SetAttrString(p, "proxy", m.get()); + } + catch(const Ice::EndpointParseException& e) + { + IcePy::PyObjectHandle m = PyString_FromString(const_cast<char*>(e.str.c_str())); + PyObject_SetAttrString(p, "str", m.get()); + } + catch(const Ice::IdentityParseException& e) + { + IcePy::PyObjectHandle m = PyString_FromString(const_cast<char*>(e.str.c_str())); + PyObject_SetAttrString(p, "str", m.get()); + } + catch(const Ice::ProxyParseException& e) + { + IcePy::PyObjectHandle m = PyString_FromString(const_cast<char*>(e.str.c_str())); + PyObject_SetAttrString(p, "str", m.get()); + } + catch(const Ice::IllegalIdentityException& e) + { + IcePy::PyObjectHandle m = IcePy::createIdentity(e.id); + PyObject_SetAttrString(p, "id", m.get()); } catch(const Ice::RequestFailedException& e) { - type = lookupType(scopedToName(e.ice_name())); - assert(type != NULL); - p = createExceptionInstance(type); - if(p.get() != NULL) - { - PyObjectHandle m; - m = createIdentity(e.id); - PyObject_SetAttrString(p.get(), "id", m.get()); - m = PyString_FromString(const_cast<char*>(e.facet.c_str())); - PyObject_SetAttrString(p.get(), "facet", m.get()); - m = PyString_FromString(const_cast<char*>(e.operation.c_str())); - PyObject_SetAttrString(p.get(), "operation", m.get()); - } + IcePy::PyObjectHandle m; + m = IcePy::createIdentity(e.id); + PyObject_SetAttrString(p, "id", m.get()); + m = PyString_FromString(const_cast<char*>(e.facet.c_str())); + PyObject_SetAttrString(p, "facet", m.get()); + m = PyString_FromString(const_cast<char*>(e.operation.c_str())); + PyObject_SetAttrString(p, "operation", m.get()); } - catch(const Ice::UnknownException& e) + catch(const Ice::SyscallException& e) { - type = lookupType(scopedToName(e.ice_name())); - assert(type != NULL); - p = createExceptionInstance(type); - if(p.get() != NULL) - { - PyObjectHandle s = PyString_FromString(const_cast<char*>(e.unknown.c_str())); - PyObject_SetAttrString(p.get(), "unknown", s.get()); - } + IcePy::PyObjectHandle m = PyInt_FromLong(e.error); + PyObject_SetAttrString(p, "error", m.get()); + } + catch(const Ice::DNSException& e) + { + IcePy::PyObjectHandle m; + m = PyInt_FromLong(e.error); + PyObject_SetAttrString(p, "error", m.get()); + m = PyString_FromString(const_cast<char*>(e.host.c_str())); + PyObject_SetAttrString(p, "host", m.get()); + } + catch(const Ice::UnsupportedProtocolException& e) + { + IcePy::PyObjectHandle m; + m = PyInt_FromLong(e.badMajor); + PyObject_SetAttrString(p, "badMajor", m.get()); + m = PyInt_FromLong(e.badMinor); + PyObject_SetAttrString(p, "badMinor", m.get()); + m = PyInt_FromLong(e.major); + PyObject_SetAttrString(p, "major", m.get()); + m = PyInt_FromLong(e.minor); + PyObject_SetAttrString(p, "minor", m.get()); + } + catch(const Ice::UnsupportedEncodingException& e) + { + IcePy::PyObjectHandle m; + m = PyInt_FromLong(e.badMajor); + PyObject_SetAttrString(p, "badMajor", m.get()); + m = PyInt_FromLong(e.badMinor); + PyObject_SetAttrString(p, "badMinor", m.get()); + m = PyInt_FromLong(e.major); + PyObject_SetAttrString(p, "major", m.get()); + m = PyInt_FromLong(e.minor); + PyObject_SetAttrString(p, "minor", m.get()); + } + catch(const Ice::CompressionException& e) + { + IcePy::PyObjectHandle m = PyString_FromString(const_cast<char*>(e.reason.c_str())); + PyObject_SetAttrString(p, "reason", m.get()); + } + catch(const Ice::PluginInitializationException& e) + { + IcePy::PyObjectHandle m = PyString_FromString(const_cast<char*>(e.reason.c_str())); + PyObject_SetAttrString(p, "reason", m.get()); } catch(const Ice::NoObjectFactoryException& e) { - type = lookupType(scopedToName(e.ice_name())); - assert(type != NULL); - p = createExceptionInstance(type); - if(p.get() != NULL) - { - PyObjectHandle m; - m = PyString_FromString(const_cast<char*>(e.type.c_str())); - PyObject_SetAttrString(p.get(), "type", m.get()); - } + IcePy::PyObjectHandle m = PyString_FromString(const_cast<char*>(e.type.c_str())); + PyObject_SetAttrString(p, "type", m.get()); + } + catch(const Ice::AlreadyRegisteredException& e) + { + IcePy::PyObjectHandle m; + m = PyString_FromString(const_cast<char*>(e.kindOfObject.c_str())); + PyObject_SetAttrString(p, "kindOfObject", m.get()); + m = PyString_FromString(const_cast<char*>(e.id.c_str())); + PyObject_SetAttrString(p, "id", m.get()); + } + catch(const Ice::NotRegisteredException& e) + { + IcePy::PyObjectHandle m; + m = PyString_FromString(const_cast<char*>(e.kindOfObject.c_str())); + PyObject_SetAttrString(p, "kindOfObject", m.get()); + m = PyString_FromString(const_cast<char*>(e.id.c_str())); + PyObject_SetAttrString(p, "id", m.get()); + } + catch(const Ice::TwowayOnlyException& e) + { + IcePy::PyObjectHandle m = PyString_FromString(const_cast<char*>(e.operation.c_str())); + PyObject_SetAttrString(p, "operation", m.get()); + } + catch(const Ice::LocalException& e) + { + // + // Nothing to do. + // + } +} + +PyObject* +IcePy::convertException(const Ice::Exception& ex) +{ + PyObjectHandle p; + PyObject* type; + + ostringstream ostr; + ostr << ex; + string str = ostr.str(); + + try + { + ex.ice_throw(); } catch(const Ice::LocalException& e) { @@ -346,6 +420,7 @@ IcePy::convertException(const Ice::Exception& ex) if(type != NULL) { p = createExceptionInstance(type); + convertLocalException(e, p.get()); } else { |