summaryrefslogtreecommitdiff
path: root/cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cpp')
-rw-r--r--cpp/CHANGES104
-rw-r--r--cpp/include/Ice/FactoryTable.h1
-rw-r--r--cpp/include/Ice/FactoryTableDef.h2
-rw-r--r--cpp/include/Ice/Object.h3
-rw-r--r--cpp/src/Ice/Incoming.cpp11
-rw-r--r--cpp/src/Ice/Object.cpp18
-rw-r--r--cpp/src/slice2cpp/Gen.cpp2
-rw-r--r--cpp/src/slice2java/Gen.cpp2
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;
}