General changes

There is one new feature, which is provided by the IPC library in this release. It is possible now to write custom plugin libraries to be used as both server and client interceptors for the remote methods invocation. There are already five different plugins, which are included into release:
In order to activate a specific plugin user has to specify it in one of the TDAQ_IPC_CLIENT_INTERCEPTORS or TDAQ_IPC_SERVER_INTERCEPTORS environment variables. Each variable can contain a list of plugins, separated by colons. For example default values for this variables look like:
>export TDAQ_IPC_CLIENT_INTERCEPTORS=ipcclicp:AMInterceptor
This means that by default for any remote invocation the IPC default plugin will be called before the Access Manager one on the client side.
>export TDAQ_IPC_SERVER_INTERCEPTORS=ipcsrvicp
This means that by default for any remote invocation the IPC default plugin will be called before any remote invocation on the server side.
If a user set his own values for one of the interceptor environment variables, then the default values will be overridden and default plugins will never be called unless been explicitly mentioned in the new environment values.

Changes in API

The old API stays unchanged. However there is a new API, which provides two abstract classes, which can be used as base ones for the user specific server and client plugins. In order to implement the server side interceptor, one has to do the following:
#include <ipc/interceptors.h>
class IPCServerTrace : public IPCServerInterceptor
{
void receiveRequest( const char * interface_id, const char * operation_id, IOP::ServiceContextList & )
{
std::cout << " IPC server trace :: " << interface_id << " : " << operation_id << std::endl;
}
};
extern "C" void * create_ipcsrvtrace()
{
return new IPCServerTrace;
}
> export TDAQ_IPC_SERVER_INTERCEPTORS=ipcsrvicp:ipcsrvtrace

To be implemented