diff options
author | Marc Laukien <marc@zeroc.com> | 2001-10-14 22:07:51 +0000 |
---|---|---|
committer | Marc Laukien <marc@zeroc.com> | 2001-10-14 22:07:51 +0000 |
commit | e3391e10721a7bbe8c867d1c798fcf6d24a67308 (patch) | |
tree | dbab6b044338c6e7a920eb72e8c9d3b4cbd07f56 /cpp | |
parent | fixes (diff) | |
download | ice-e3391e10721a7bbe8c867d1c798fcf6d24a67308.tar.bz2 ice-e3391e10721a7bbe8c867d1c798fcf6d24a67308.tar.xz ice-e3391e10721a7bbe8c867d1c798fcf6d24a67308.zip |
win and other fixes
Diffstat (limited to 'cpp')
-rw-r--r-- | cpp/include/Ice/Outgoing.h | 9 | ||||
-rw-r--r-- | cpp/include/Ice/Proxy.h | 9 | ||||
-rw-r--r-- | cpp/include/IceUtil/Handle.h | 2 | ||||
-rw-r--r-- | cpp/include/Slice/CPlusPlusUtil.h | 26 | ||||
-rw-r--r-- | cpp/src/Ice/Collector.cpp | 32 | ||||
-rw-r--r-- | cpp/src/Ice/Collector.h | 13 | ||||
-rw-r--r-- | cpp/src/Ice/Emitter.cpp | 14 | ||||
-rw-r--r-- | cpp/src/Ice/Emitter.h | 9 | ||||
-rw-r--r-- | cpp/src/Ice/EventHandler.h | 9 | ||||
-rw-r--r-- | cpp/src/Ice/Incoming.cpp | 14 | ||||
-rw-r--r-- | cpp/src/Ice/Outgoing.cpp | 6 | ||||
-rw-r--r-- | cpp/src/Ice/ThreadPool.cpp | 6 | ||||
-rw-r--r-- | cpp/src/slice2cpp/Gen.cpp | 36 | ||||
-rw-r--r-- | cpp/src/slice2freeze/slice2freeze.dsp | 8 | ||||
-rw-r--r-- | cpp/test/Ice/exceptions/AllTests.cpp | 5 | ||||
-rw-r--r-- | cpp/test/Ice/operations/operationsCOL.dsp | 8 |
16 files changed, 98 insertions, 108 deletions
diff --git a/cpp/include/Ice/Outgoing.h b/cpp/include/Ice/Outgoing.h index 16791a10441..43a005ff43d 100644 --- a/cpp/include/Ice/Outgoing.h +++ b/cpp/include/Ice/Outgoing.h @@ -15,17 +15,10 @@ #include <Ice/ReferenceF.h> #include <Ice/BasicStream.h> -namespace IceUtil -{ - -class Exception; - -} - namespace Ice { -typedef IceUtil::Exception LocalException; +class LocalException; } diff --git a/cpp/include/Ice/Proxy.h b/cpp/include/Ice/Proxy.h index 075098bb082..f2efbdc7647 100644 --- a/cpp/include/Ice/Proxy.h +++ b/cpp/include/Ice/Proxy.h @@ -19,17 +19,10 @@ #include <Ice/ObjectAdapterF.h> #include <Ice/ReferenceF.h> -namespace IceUtil -{ - -class Exception; - -} - namespace Ice { -typedef IceUtil::Exception LocalException; +class LocalException; class LocationForward; }; diff --git a/cpp/include/IceUtil/Handle.h b/cpp/include/IceUtil/Handle.h index 6330d7f3d71..4b974b8099c 100644 --- a/cpp/include/IceUtil/Handle.h +++ b/cpp/include/IceUtil/Handle.h @@ -45,7 +45,7 @@ public: return "operation call on null handle"; } - virtual NullHandleException* _clone() const + virtual Exception* _clone() const { return new NullHandleException(*this); } diff --git a/cpp/include/Slice/CPlusPlusUtil.h b/cpp/include/Slice/CPlusPlusUtil.h index e81f32f0122..a313b34b76c 100644 --- a/cpp/include/Slice/CPlusPlusUtil.h +++ b/cpp/include/Slice/CPlusPlusUtil.h @@ -19,24 +19,24 @@ namespace Slice struct ToIfdef { - char operator()(char); + SLICE_API char operator()(char); }; -std::string changeInclude(const std::string&, const std::vector<std::string>&); -void printHeader(Output&); -void printVersionCheck(Output&); -void printDllExportStuff(Output&, const std::string&); +SLICE_API std::string changeInclude(const std::string&, const std::vector<std::string>&); +SLICE_API void printHeader(Output&); +SLICE_API void printVersionCheck(Output&); +SLICE_API void printDllExportStuff(Output&, const std::string&); -std::string typeToString(const TypePtr&); -std::string returnTypeToString(const TypePtr&); -std::string inputTypeToString(const TypePtr&); -std::string outputTypeToString(const TypePtr&); +SLICE_API std::string typeToString(const TypePtr&); +SLICE_API std::string returnTypeToString(const TypePtr&); +SLICE_API std::string inputTypeToString(const TypePtr&); +SLICE_API std::string outputTypeToString(const TypePtr&); -void writeMarshalUnmarshalCode(Output&, const TypePtr&, const std::string&, bool, const std::string& = "", +SLICE_API void writeMarshalUnmarshalCode(Output&, const TypePtr&, const std::string&, bool, const std::string& = "", bool = true); -void writeMarshalCode(Output&, const std::list<std::pair<TypePtr, std::string> >&, const TypePtr&); -void writeUnmarshalCode(Output&, const std::list<std::pair<TypePtr, std::string> >&, const TypePtr&); -void writeAllocateCode(Output&, const std::list<std::pair<TypePtr, std::string> >&, const TypePtr&); +SLICE_API void writeMarshalCode(Output&, const std::list<std::pair<TypePtr, std::string> >&, const TypePtr&); +SLICE_API void writeUnmarshalCode(Output&, const std::list<std::pair<TypePtr, std::string> >&, const TypePtr&); +SLICE_API void writeAllocateCode(Output&, const std::list<std::pair<TypePtr, std::string> >&, const TypePtr&); } diff --git a/cpp/src/Ice/Collector.cpp b/cpp/src/Ice/Collector.cpp index 9313d044540..38420dde166 100644 --- a/cpp/src/Ice/Collector.cpp +++ b/cpp/src/Ice/Collector.cpp @@ -187,12 +187,12 @@ IceInternal::Collector::message(BasicStream& stream) } } } - catch(const ConnectionLostException&) + catch (const ConnectionLostException&) { setState(StateClosed); // Connection drop from client is ok return; } - catch(const Exception& ex) + catch (const LocalException& ex) { warning(ex); setState(StateClosed); @@ -213,11 +213,15 @@ IceInternal::Collector::message(BasicStream& stream) stream.swap(*in.is()); } } - catch(const Exception& ex) + catch (const Exception& ex) { JTCSyncT<JTCRecursiveMutex> sync(*this); warning(ex); } + catch (...) + { + assert(false); // Should not happen + } } while (batch && stream.i < stream.b.end()); } @@ -253,12 +257,12 @@ IceInternal::Collector::message(BasicStream& stream) closeConnection(); } } - catch(const ConnectionLostException&) + catch (const ConnectionLostException&) { setState(StateClosed); // Connection drop from client is ok return; } - catch(const Exception& ex) + catch (const LocalException& ex) { warning(ex); setState(StateClosed); @@ -315,7 +319,7 @@ IceInternal::Collector::tryDestroy() { setState(StateClosing); } - catch(...) + catch (...) { unlock(); throw; @@ -399,12 +403,12 @@ IceInternal::Collector::setState(State state) { closeConnection(); } - catch(const ConnectionLostException&) + catch (const ConnectionLostException&) { state = StateClosed; setState(state); // Connection drop from client is ok } - catch(const Exception& ex) + catch (const LocalException& ex) { warning(ex); state = StateClosed; @@ -458,7 +462,7 @@ IceInternal::Collector::closeConnection() } void -IceInternal::Collector::warning(const LocalException& ex) const +IceInternal::Collector::warning(const Exception& ex) const { if (_warnAboutExceptions) { @@ -555,11 +559,11 @@ IceInternal::CollectorFactory::message(BasicStream&) collector->activate(); _collectors.push_back(collector); } - catch(const TimeoutException&) + catch (const TimeoutException&) { // Ignore timeouts } - catch(const Exception& ex) + catch (const LocalException& ex) { warning(ex); destroy(); @@ -628,7 +632,7 @@ IceInternal::CollectorFactory::CollectorFactory(const InstancePtr& instance, _threadPool = _instance->threadPool(); } } - catch(...) + catch (...) { setState(StateClosed); throw; @@ -725,7 +729,7 @@ IceInternal::CollectorFactory::clearBacklog() CollectorPtr collector = new Collector(_instance, _adapter, transceiver, _endpoint); collector->destroy(); } - catch(const Exception&) + catch (const Exception&) { break; } @@ -733,7 +737,7 @@ IceInternal::CollectorFactory::clearBacklog() } void -IceInternal::CollectorFactory::warning(const LocalException& ex) const +IceInternal::CollectorFactory::warning(const Exception& ex) const { if (_warnAboutExceptions) { diff --git a/cpp/src/Ice/Collector.h b/cpp/src/Ice/Collector.h index 891afdccae8..38b8cede96e 100644 --- a/cpp/src/Ice/Collector.h +++ b/cpp/src/Ice/Collector.h @@ -23,17 +23,10 @@ #include <Ice/EventHandler.h> #include <list> -namespace IceUtil -{ - -class Exception; - -} - namespace Ice { -typedef IceUtil::Exception LocalException; +class LocalException; class ObjectAdapterI; } @@ -81,7 +74,7 @@ private: void setState(State); void closeConnection(); - void warning(const ::Ice::LocalException&) const; + void warning(const ::Ice::Exception&) const; ::Ice::ObjectAdapterPtr _adapter; TransceiverPtr _transceiver; @@ -132,7 +125,7 @@ private: void setState(State); void clearBacklog(); - void warning(const ::Ice::LocalException&) const; + void warning(const ::Ice::Exception&) const; ::Ice::ObjectAdapterPtr _adapter; AcceptorPtr _acceptor; diff --git a/cpp/src/Ice/Emitter.cpp b/cpp/src/Ice/Emitter.cpp index a157323bc4a..34babb67a98 100644 --- a/cpp/src/Ice/Emitter.cpp +++ b/cpp/src/Ice/Emitter.cpp @@ -96,7 +96,7 @@ IceInternal::Emitter::sendRequest(Outgoing* out, bool oneway) traceRequest("sending request", *os, _logger, _traceLevels); _transceiver->write(*os, _endpoint->timeout()); } - catch(const Exception& ex) + catch(const LocalException& ex) { setState(StateClosed, ex); ex._throw(); @@ -203,7 +203,7 @@ IceInternal::Emitter::flushBatchRequest() _batchStream.swap(dummy); assert(_batchStream.b.empty()); } - catch(const Exception& ex) + catch(const LocalException& ex) { setState(StateClosed, ex); ex._throw(); @@ -307,7 +307,7 @@ IceInternal::Emitter::message(BasicStream& stream) } } } - catch(const Exception& ex) + catch(const LocalException& ex) { setState(StateClosed, ex); return; @@ -405,7 +405,7 @@ IceInternal::Emitter::setState(State state, const LocalException& ex) if (!_exception.get()) { - _exception = auto_ptr<LocalException>(ex._clone()); + _exception = auto_ptr<LocalException>(dynamic_cast<LocalException*>(ex._clone())); } for (std::map< ::Ice::Int, Outgoing*>::iterator p = _requests.begin(); p != _requests.end(); ++p) @@ -487,15 +487,15 @@ IceInternal::EmitterFactory::create(const vector<EndpointPtr>& endpoints) } catch (const SocketException& ex) { - exception = auto_ptr<LocalException>(ex._clone()); + exception = auto_ptr<LocalException>(dynamic_cast<LocalException*>(ex._clone())); } catch (const DNSException& ex) { - exception = auto_ptr<LocalException>(ex._clone()); + exception = auto_ptr<LocalException>(dynamic_cast<LocalException*>(ex._clone())); } catch (const TimeoutException& ex) { - exception = auto_ptr<LocalException>(ex._clone()); + exception = auto_ptr<LocalException>(dynamic_cast<LocalException*>(ex._clone())); } ++q; diff --git a/cpp/src/Ice/Emitter.h b/cpp/src/Ice/Emitter.h index d12c5330fc5..9330e7010bb 100644 --- a/cpp/src/Ice/Emitter.h +++ b/cpp/src/Ice/Emitter.h @@ -21,17 +21,10 @@ #include <Ice/LoggerF.h> #include <Ice/EventHandler.h> -namespace IceUtil -{ - -class Exception; - -} - namespace Ice { -typedef IceUtil::Exception LocalException; +class LocalException; } diff --git a/cpp/src/Ice/EventHandler.h b/cpp/src/Ice/EventHandler.h index 3b788daaee7..14190238004 100644 --- a/cpp/src/Ice/EventHandler.h +++ b/cpp/src/Ice/EventHandler.h @@ -17,17 +17,10 @@ #include <Ice/ThreadPoolF.h> #include <Ice/BasicStream.h> -namespace IceUtil -{ - -class Exception; - -} - namespace Ice { -typedef IceUtil::Exception LocalException; +class LocalException; } diff --git a/cpp/src/Ice/Incoming.cpp b/cpp/src/Ice/Incoming.cpp index c08382c2ed8..30e04169f23 100644 --- a/cpp/src/Ice/Incoming.cpp +++ b/cpp/src/Ice/Incoming.cpp @@ -86,7 +86,7 @@ IceInternal::Incoming::invoke(BasicStream& is) locator->finished(_adapter, identity, servant, operation, cookie); } } - catch(const LocationForward& p) + catch (const LocationForward& ex) { if (locator && servant) { @@ -94,10 +94,10 @@ IceInternal::Incoming::invoke(BasicStream& is) } _os.b.resize(statusPos); _os.write(static_cast<Byte>(DispatchLocationForward)); - _os.write(p._prx); + _os.write(ex._prx); return; } - catch(const LocalException&) + catch (const LocalException& ex) { if (locator && servant) { @@ -105,9 +105,9 @@ IceInternal::Incoming::invoke(BasicStream& is) } _os.b.resize(statusPos); _os.write(static_cast<Byte>(DispatchUnknownLocalException)); - throw; + ex._throw(); } - catch(const UserException&) + catch (const UserException& ex) { if (locator && servant) { @@ -115,9 +115,9 @@ IceInternal::Incoming::invoke(BasicStream& is) } _os.b.resize(statusPos); _os.write(static_cast<Byte>(DispatchUnknownUserException)); - throw; + ex._throw(); } - catch(...) + catch (...) { if (locator && servant) { diff --git a/cpp/src/Ice/Outgoing.cpp b/cpp/src/Ice/Outgoing.cpp index 2974197d876..f48b4b0c4d8 100644 --- a/cpp/src/Ice/Outgoing.cpp +++ b/cpp/src/Ice/Outgoing.cpp @@ -20,12 +20,12 @@ using namespace IceInternal; IceInternal::NonRepeatable::NonRepeatable(const NonRepeatable& ex) { - _ex = auto_ptr<LocalException>(ex.get()->_clone()); + _ex = auto_ptr<LocalException>(dynamic_cast<LocalException*>(ex.get()->_clone())); } IceInternal::NonRepeatable::NonRepeatable(const ::Ice::LocalException& ex) { - _ex = auto_ptr<LocalException>(ex._clone()); + _ex = auto_ptr<LocalException>(dynamic_cast<LocalException*>(ex._clone())); } const ::Ice::LocalException* @@ -265,7 +265,7 @@ IceInternal::Outgoing::finished(const LocalException& ex) if (_state == StateInProgress) { _state = StateLocalException; - _exception = auto_ptr<LocalException>(ex._clone()); + _exception = auto_ptr<LocalException>(dynamic_cast<LocalException*>(ex._clone())); notify(); } } diff --git a/cpp/src/Ice/ThreadPool.cpp b/cpp/src/Ice/ThreadPool.cpp index dbc24fa904c..533a7e8e61b 100644 --- a/cpp/src/Ice/ThreadPool.cpp +++ b/cpp/src/Ice/ThreadPool.cpp @@ -462,7 +462,7 @@ IceInternal::ThreadPool::run() goto repeatSelect; } } - catch (const LocalException& ex) + catch (const LocalException&) { // Ignore exeptions. } @@ -564,7 +564,7 @@ IceInternal::ThreadPool::EventHandlerThread::run() { _pool->run(); } - catch (const LocalException& ex) + catch (const Exception& ex) { ostringstream s; s << "exception in thread pool:\n" << ex; @@ -573,7 +573,7 @@ IceInternal::ThreadPool::EventHandlerThread::run() catch (const JTCException& ex) { ostringstream s; - s << "exception in thread pool:\n" << ex; + s << "JThreads/C++ exception in thread pool:\n" << ex; _pool->_instance->logger()->error(s.str()); } catch (...) diff --git a/cpp/src/slice2cpp/Gen.cpp b/cpp/src/slice2cpp/Gen.cpp index e61c0f838d9..8e3ab81235b 100644 --- a/cpp/src/slice2cpp/Gen.cpp +++ b/cpp/src/slice2cpp/Gen.cpp @@ -200,7 +200,7 @@ Slice::Gen::TypesVisitor::visitExceptionStart(const ExceptionPtr& p) string scoped = p->scoped(); ExceptionPtr base = p->base(); - H << sp << nl << "struct " << name << " : "; + H << sp << nl << "class " << name << " : "; H.useCurrentPosAsIndent(); if (!base) { @@ -220,6 +220,10 @@ Slice::Gen::TypesVisitor::visitExceptionStart(const ExceptionPtr& p) H.restoreIndent(); H << sb; + H.dec(); + H << nl << "public: "; + H.inc(); + if (p->isLocal()) { H << nl << _dllExport << name << "(const char*, int);"; @@ -1139,8 +1143,6 @@ Slice::Gen::DelegateMVisitor::visitOperation(const OperationPtr& p) C << sb; if (!throws.empty()) { - // TODO: pretty hacky, should be statically initialized, once - // per operation. ExceptionList::const_iterator r; C << nl << "static const char* __throws[] ="; C << sb; @@ -1341,6 +1343,8 @@ Slice::Gen::DelegateDVisitor::visitOperation(const OperationPtr& p) C << sb; C << nl << "throw ::Ice::OperationNotExistException(__FILE__, __LINE__);"; C << eb; + C << nl << "try"; + C << sb; C << nl; if (ret) { @@ -1348,6 +1352,30 @@ Slice::Gen::DelegateDVisitor::visitOperation(const OperationPtr& p) } C << "__servant->" << name << args << ';'; C << eb; + ExceptionList throws = p->throws(); + throws.sort(); + throws.unique(); + ExceptionList::const_iterator r; + for (r = throws.begin(); r != throws.end(); ++r) + { + C << nl << "catch (const " << (*r)->scoped() << "&)"; + C << sb; + C << nl << "throw;"; + C << eb; + } + C << nl << "catch (const ::Ice::LocalException&)"; + C << sb; + C << nl << "throw ::Ice::UnknownLocalException(__FILE__, __LINE__);"; + C << eb; + C << nl << "catch (const ::Ice::UserException&)"; + C << sb; + C << nl << "throw ::Ice::UnknownUserException(__FILE__, __LINE__);"; + C << eb; + C << nl << "catch (...)"; + C << sb; + C << nl << "throw ::Ice::UnknownException(__FILE__, __LINE__);"; + C << eb; + C << eb; } Slice::Gen::ObjectDeclVisitor::ObjectDeclVisitor(Output& h, Output& c, const string& dllExport) : @@ -1864,7 +1892,7 @@ Slice::Gen::ObjectVisitor::visitOperation(const OperationPtr& p) ExceptionList::const_iterator r; for (r = throws.begin(); r != throws.end(); ++r) { - C << nl << "catch(const " << (*r)->scoped() << "& __ex)"; + C << nl << "catch (const " << (*r)->scoped() << "& __ex)"; C << sb; C << nl << "__os->write(__ex);"; C << nl << "return ::IceInternal::DispatchUserException;"; diff --git a/cpp/src/slice2freeze/slice2freeze.dsp b/cpp/src/slice2freeze/slice2freeze.dsp index 121436a9f2e..4f19630e7dc 100644 --- a/cpp/src/slice2freeze/slice2freeze.dsp +++ b/cpp/src/slice2freeze/slice2freeze.dsp @@ -89,20 +89,12 @@ LINK32=link.exe # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
# Begin Source File
-SOURCE=.\GenUtil.cpp
-# End Source File
-# Begin Source File
-
SOURCE=.\Main.cpp
# End Source File
# End Group
# Begin Group "Header Files"
# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# Begin Source File
-
-SOURCE=.\GenUtil.h
-# End Source File
# End Group
# Begin Group "Resource Files"
diff --git a/cpp/test/Ice/exceptions/AllTests.cpp b/cpp/test/Ice/exceptions/AllTests.cpp index e19b456ecab..041b3bbe147 100644 --- a/cpp/test/Ice/exceptions/AllTests.cpp +++ b/cpp/test/Ice/exceptions/AllTests.cpp @@ -284,6 +284,11 @@ allTests(const Ice::CommunicatorPtr& communicator) catch (const Ice::UnknownUserException&) { } + catch (const Ice::Exception& ex) + { + cout << ex << endl; + test(false); + } catch (...) { test(false); diff --git a/cpp/test/Ice/operations/operationsCOL.dsp b/cpp/test/Ice/operations/operationsCOL.dsp index 26652098a96..70aa1a5f2d8 100644 --- a/cpp/test/Ice/operations/operationsCOL.dsp +++ b/cpp/test/Ice/operations/operationsCOL.dsp @@ -42,7 +42,7 @@ RSC=rc.exe # PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MD /Ze /W3 /GR /GX /O2 /I "." /I "../../../include" /I "../../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /YX /FD /c
+# ADD CPP /nologo /MD /W3 /GR /GX /O2 /I "." /I "../../../include" /I "../../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /YX /FD /c
# SUBTRACT CPP /Fr
# ADD BASE RSC /l 0x409 /d "NDEBUG"
# ADD RSC /l 0x409 /d "NDEBUG"
@@ -67,7 +67,7 @@ LINK32=link.exe # PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD CPP /nologo /MDd /Ze /W3 /Gm /GR /GX /Zi /Od /I "." /I "../../../include" /I "../../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /YX /FD /GZ /c
+# ADD CPP /nologo /MDd /W3 /Gm /GR /GX /Zi /Od /I "." /I "../../../include" /I "../../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /YX /FD /GZ /c
# SUBTRACT CPP /Fr
# ADD BASE RSC /l 0x409 /d "_DEBUG"
# ADD RSC /l 0x409 /d "_DEBUG"
@@ -97,10 +97,6 @@ SOURCE=.\Collocated.cpp # End Source File
# Begin Source File
-SOURCE=.\Exceptions.cpp
-# End Source File
-# Begin Source File
-
SOURCE=.\Test.cpp
# End Source File
# Begin Source File
|