General changes
- The IPCNamedObject class
has now another template parameter which defines whether the object
should use the ipc::persistent
or ipc::transient
policy. Default value for this parameter is ipc::transient
which is backward compatible with previous versions of IPC. The
ipc::persistent policy should be used only if one wants to have a
stringified reference to a remote IPC object which will be valid across
different incarnations of that object.
- The ipc::CacheExpired
exception has been removed from the IPC. Before this exception might
have been thrown by any remote method invocation. It was used to
indicate that the reference to remote object (stored in the internal
IPC cache) does not represent anymore the remote object. In order to
handle this exception it was necessary to call the IPCPartition::lookup
function to obtain the new reference to the same remote object and
invoke the same remote method again. This was necessary to handle a
situation when the remote object was reincarnated between two
subsequent calls to it. Now this recovery procedure is done
automatically completely transparently for the calling applications.
This applyes to both C++ and Java IPC APIs.
- IPC has been fully migrated to the Error
Reporting Service (ERS). Now all the errors which appear during IPC
functions invocations are reported as C++ exceptions. Any IPC function
which may throw exceptions has this exceptions declared as part of its
signature. All IPC exceptions are defined in the two nested namespaces daq::ipc and
inherit from the same daq::ipc::Exception
exception which in turn inherits from the ers::Issue
exception. This way IPC exceptions can be handled either individually
or all at once. Doxygen documentation for the new
IPC API is available from the IPC
home page.