diff options
Diffstat (limited to 'cpp')
-rw-r--r-- | cpp/CHANGES | 104 | ||||
-rw-r--r-- | cpp/include/Ice/FactoryTable.h | 1 | ||||
-rw-r--r-- | cpp/include/Ice/FactoryTableDef.h | 2 | ||||
-rw-r--r-- | cpp/include/Ice/Object.h | 3 | ||||
-rw-r--r-- | cpp/src/Ice/Incoming.cpp | 11 | ||||
-rw-r--r-- | cpp/src/Ice/Object.cpp | 18 | ||||
-rw-r--r-- | cpp/src/slice2cpp/Gen.cpp | 2 | ||||
-rw-r--r-- | cpp/src/slice2java/Gen.cpp | 2 |
8 files changed, 72 insertions, 71 deletions
diff --git a/cpp/CHANGES b/cpp/CHANGES index 21bfacacec5..fd028aab1fd 100644 --- a/cpp/CHANGES +++ b/cpp/CHANGES @@ -3,25 +3,24 @@ Changes since version 1.0.1 - Added support for Visual Studio .NET 2003 aka VC 7.1 -- In IceUtil, all "try" and "timed" functions now return false when the - resource could not be acquired (i.e., an expected failure). The "Try" - from "timedTry" functions was removed, and for consistency the - functions trylock, readlock and writelock were renamed to tryLock, - readLock and writeLock. +- In IceUtil, all "try" and "timed" functions now return false when + the resource could not be acquired (i.e., an expected failure). The + "Try" from "timedTry" functions was removed, and for consistency the + functions trylock, readlock and writelock were renamed to tryLock, + readLock and writeLock. - Update to the library versioning scheme: - On Windows, only the major and minor version are now used, for - example: ice11d.dll (11d means 1.1 debug). In 1.0.x, the patch level + On Windows, only the major and minor version are now used, for + example: ice11d.dll (11d means 1.1 debug). In 1.0.x, the patch level was included in the version string, for example ice101d.dll. On Unix, the internal name (soname) is now constructed as lib<name>.so.<major version><minor version>, for example libIce.so.11 (for Ice 1.1.x). This internal name identifies a symbolic link to lib<name>.so.<full version>, for example: - libIce.so.11 -> libIce.so.1.1.0. In 1.0.x, the internal name - was set to the actual shared library file name, - lib<name>.so.<full version>. + libIce.so.11 -> libIce.so.1.1.0. In 1.0.x, the internal name was set + to the actual shared library file name, lib<name>.so.<full version>. - Ice now implements slicing for exceptions and classes: if a process receives an exception or class that is of a more derived type than @@ -30,22 +29,22 @@ Changes since version 1.0.1 - Class factories are no longer necessary for non-abstract classes (that is, for classes that do not have operations). For non-abstract - classes, the necessary factories are automatically installed by - the Ice run time. If you have existing code that implements - factories for non-abstract classes, you can simply delete that code. - Note that for abstract classes (that is, classes with operations), - it is necessary to install a factory for each abstract class, exactly - as in version 1.0.x. - -- User exception factories and user exception factory - managers no longer exist. The factories for user exceptions - are now automatically installed by the Ice run time. - If you have existing code that implements user exception factories, - you can simply delete it. - -- Fixed a bug in the Slice parser: the semantic check to see - whether an identifier introduced into a scope has changed - meaning was too stringent. + classes, the necessary factories are automatically installed by the + Ice run time. If you have existing code that implements factories + for non-abstract classes, you can simply delete that code. Note + that for abstract classes (that is, classes with operations), it is + necessary to install a factory for each abstract class, exactly as + in version 1.0.x. + +- User exception factories and user exception factory managers no + longer exist. The factories for user exceptions are now + automatically installed by the Ice run time. If you have existing + code that implements user exception factories, you can simply delete + it. + +- Fixed a bug in the Slice parser: the semantic check to see whether + an identifier introduced into a scope has changed meaning was too + stringent. - If a client receives a derived exception for which it does not have a user exception factory installed, the client receives the @@ -56,43 +55,45 @@ Changes since version 1.0.1 - Fixed a bug with connections being closed even though they have outstanding batch requests. -- Fixed bug in the WIN32 icepatch client. The removal of orphaned files - didn't take into account that WIN32 file names are not case +- Fixed bug in the WIN32 icepatch client. The removal of orphaned + files didn't take into account that WIN32 file names are not case sensitive. - New Ice.Nohup property: when its value is >0, shutdownOnInterrupt() - in Application will ignore SIGHUP on Unix and CTRL_LOGOFF_EVENT on + in Application will ignore SIGHUP on Unix and CTRL_LOGOFF_EVENT on Windows. -- Updated Application: - - the default behavior is now shutdownOnInterrupt(). - - removed the member function defaultInterrupt(). +- Updated Application class: + + * The default behavior is now shutdownOnInterrupt(). + + * Removed the member function defaultInterrupt(). -- Removed Communicator::signalShutdown(): Ice is not using signal +- Removed Communicator::signalShutdown(): Ice is not using signal handlers anymore, so Communicator::shutdown() can be used all the time. -- Added IceUtil::CtrlCHandler: a class that provides portable handling +- Added IceUtil::CtrlCHandler: a class that provides portable handling of CTRL+C and CTRL+C-like signals, -- Added IceUtil::StaticMutex, for simple, non-recursive, statically +- Added IceUtil::StaticMutex, for simple, non-recursive, statically allocated and initialized mutexes. -- Updated Mutex, RecMutex and RWRecMutex APIs: lock and unlock now - return void, and trylock returns a bool that indicates whether the +- Updated Mutex, RecMutex and RWRecMutex APIs: lock and unlock now + return void, and trylock returns a bool that indicates whether the mutex was acquired or not. Also added new member functions to LockT, - TryLockT, RLockT, TryLockT, WLockT, TryWLockT: acquire(), + TryLockT, RLockT, TryLockT, WLockT, TryWLockT: acquire(), tryAcquire(), release(), acquired() and more. -- Removed dependency on E2FSPROGS for UUID generation. On Unix, - UUIDs are now generated directly with /dev/urandom. +- Removed dependency on E2FSPROGS for UUID generation. On Unix, UUIDs + are now generated directly with /dev/urandom. - Added support for `env' XML element in IcePack descriptors to allow setting environment variables. -- Fixed a bug in the Slice parser: the semantic check to see - whether an identifier introduced into a scope has changed - meaning was too stringent. +- Fixed a bug in the Slice parser: the semantic check to see whether + an identifier introduced into a scope has changed meaning was too + stringent. - Fixed integer parsing bugs in the C++ XML stream class. @@ -133,10 +134,9 @@ Changes since version 1.0.1 CommunicatorDestroyedException is raised. - A monitor now holds the mutex lock while signaling a condition - variable. Otherwise it's possible that the condition variable - is destroyed before the signaling call returns, resulting in - undefined behavior. The performance difference is minimal, hardly - measurable. + variable. Otherwise it's possible that the condition variable is + destroyed before the signaling call returns, resulting in undefined + behavior. The performance difference is minimal, hardly measurable. - Further performance improvements with respect to latency. @@ -156,8 +156,8 @@ Changes since version 1.0.1 - Added IceUtil::ThreadControl::id() member function. - The scope of IceUtil::Thread::ThreadId has been changed to - IceUtil::ThreadId. This is the type returned by both Thread::id() and - ThreadControl::id(). + IceUtil::ThreadId. This is the type returned by both Thread::id() + and ThreadControl::id(). - Joining with a thread more than once, joining with a detached thread, or detaching a detached thread now have undefined @@ -178,9 +178,9 @@ Changes since version 1.0.1 stopping a service and destroying its communicator, services are now all stopped first and then their communicators are destroyed. -- Modified the Ice protocol to marshal sizes more efficiently. - Sizes less than 255 now require a single byte whereas - previously, sizes between 127 and 254 required five bytes. +- Modified the Ice protocol to marshal sizes more efficiently. Sizes + less than 255 now require a single byte whereas previously, sizes + between 127 and 254 required five bytes. - Modified the Ice protocol to fix a problem with compression. The compressed message types have been removed, and a field has been diff --git a/cpp/include/Ice/FactoryTable.h b/cpp/include/Ice/FactoryTable.h index 9e0e9ba400b..83fc7636c84 100644 --- a/cpp/include/Ice/FactoryTable.h +++ b/cpp/include/Ice/FactoryTable.h @@ -31,6 +31,7 @@ public: static FactoryTable factoryTableInitializer; // Dummy variable to force initialization of factoryTable extern ICE_API FactoryTableDef* factoryTable; + } #endif diff --git a/cpp/include/Ice/FactoryTableDef.h b/cpp/include/Ice/FactoryTableDef.h index 9cccab25945..65a7aba2a49 100644 --- a/cpp/include/Ice/FactoryTableDef.h +++ b/cpp/include/Ice/FactoryTableDef.h @@ -15,7 +15,7 @@ #ifndef ICE_FACTORYTABLEDEF_H #define ICE_FACTORYTABLEDEF_H -#include <IceUtil/StaticMutex.h>
+#include <IceUtil/StaticMutex.h> #include <IceUtil/Mutex.h> #include <Ice/UserExceptionFactory.h> #include <Ice/ObjectFactory.h> diff --git a/cpp/include/Ice/Object.h b/cpp/include/Ice/Object.h index 6998b667594..0128b141526 100644 --- a/cpp/include/Ice/Object.h +++ b/cpp/include/Ice/Object.h @@ -38,7 +38,8 @@ enum DispatchStatus DispatchOperationNotExist, DispatchUnknownLocalException, DispatchUnknownUserException, - DispatchUnknownException + DispatchUnknownException, + DispatchAsync // "Pseudo dispatch status", used internally only to indicate async dispatch. }; } diff --git a/cpp/src/Ice/Incoming.cpp b/cpp/src/Ice/Incoming.cpp index 8ee0c45e08c..edb0882ea61 100644 --- a/cpp/src/Ice/Incoming.cpp +++ b/cpp/src/Ice/Incoming.cpp @@ -215,17 +215,16 @@ IceInternal::Incoming::invoke(const ServantManagerPtr& servantManager) } // - // In case of an asynchronous dispatch, _is is now empty, - // because an IncomingAsync has adopted this Incoming. + // DispatchAsync is "pseudo dispatch status", used + // internally only to indicate async dispatch. // - if(_is.b.empty()) + if(status == DispatchAsync) { // // If this was an asynchronous dispatch, we're done - // here. We do *not* call __finishInvoke(), because the - // call is not finished yet. + // here. We do *not* call __finishInvoke(), because + // the call is not finished yet. // - assert(status == DispatchOK); return; } } diff --git a/cpp/src/Ice/Object.cpp b/cpp/src/Ice/Object.cpp index 6e6330682e0..660bb636dcd 100644 --- a/cpp/src/Ice/Object.cpp +++ b/cpp/src/Ice/Object.cpp @@ -133,8 +133,8 @@ Ice::Object::___ice_ids(Incoming& __in, const Current& __current) return DispatchOK; } -::IceInternal::DispatchStatus -Ice::Object::___ice_id(::IceInternal::Incoming& __in, const Current& __current) +DispatchStatus +Ice::Object::___ice_id(Incoming& __in, const Current& __current) { BasicStream* __os = __in.os(); string __ret = ice_id(__current); @@ -142,8 +142,8 @@ Ice::Object::___ice_id(::IceInternal::Incoming& __in, const Current& __current) return DispatchOK; } -::IceInternal::DispatchStatus -Ice::Object::___ice_facets(::IceInternal::Incoming& __in, const Current& __current) +DispatchStatus +Ice::Object::___ice_facets(Incoming& __in, const Current& __current) { BasicStream* __os = __in.os(); vector<string> __ret = ice_facets(__current); @@ -201,7 +201,7 @@ Ice::Object::__dispatch(Incoming& in, const Current& current) } void -Ice::Object::__write(::IceInternal::BasicStream* __os) const +Ice::Object::__write(BasicStream* __os) const { IceUtil::Mutex::Lock sync(_activeFacetMapMutex); @@ -217,7 +217,7 @@ Ice::Object::__write(::IceInternal::BasicStream* __os) const } void -Ice::Object::__read(::IceInternal::BasicStream* __is, bool __rid) +Ice::Object::__read(BasicStream* __is, bool __rid) { IceUtil::Mutex::Lock sync(_activeFacetMapMutex); @@ -443,11 +443,11 @@ Ice::Blobject::__dispatch(Incoming& in, const Current& current) in.os()->writeBlob(outParams); if(ok) { - return ::IceInternal::DispatchOK; + return DispatchOK; } else { - return ::IceInternal::DispatchUserException; + return DispatchUserException; } } @@ -474,5 +474,5 @@ Ice::BlobjectAsync::__dispatch(Incoming& in, const Current& current) { cb->ice_exception(); } - return ::IceInternal::DispatchOK; + return DispatchAsync; } diff --git a/cpp/src/slice2cpp/Gen.cpp b/cpp/src/slice2cpp/Gen.cpp index 0489018e9d9..db026b60b0f 100644 --- a/cpp/src/slice2cpp/Gen.cpp +++ b/cpp/src/slice2cpp/Gen.cpp @@ -2686,7 +2686,7 @@ Slice::Gen::ObjectVisitor::visitOperation(const OperationPtr& p) C << sb; C << nl << "__cb->ice_exception();"; C << eb; - C << nl << "return ::IceInternal::DispatchOK;"; + C << nl << "return ::IceInternal::DispatchAsync;"; } C << eb; } diff --git a/cpp/src/slice2java/Gen.cpp b/cpp/src/slice2java/Gen.cpp index 139524917b2..eeb9cc8c537 100644 --- a/cpp/src/slice2java/Gen.cpp +++ b/cpp/src/slice2java/Gen.cpp @@ -664,7 +664,7 @@ Slice::JavaVisitor::writeDispatch(Output& out, const ClassDefPtr& p) out << sb; out << nl << "__cb.ice_exception(ex);"; out << eb; - out << nl << "return IceInternal.DispatchStatus.DispatchOK;"; + out << nl << "return IceInternal.DispatchStatus.DispatchAsync;"; out << eb; } |