With the release of IDL 5.0, IDL’s Remote Procedure Call functionality has been completely reworked. While RPC code built for older versions of IDL can still be used with IDL 5.0 and later, the new RPC functionality has the following advantages:
- The new API mirrors the Callable IDL API.
- The RPC client-side library is provided as a pre-built sharable library, eliminating the need to build the library on your system.
- The RPC server-side executable, idlrpc, is built using Callable IDL, providing an example of how Callable IDL can be used.
- Source code is provided for both the Server and Client side programs, allowing you to enhance IDL’s RPC functionality.
RPC code built for versions of IDL prior to version 5.0 can be linked with IDL version 5 and later using a compatibility layer. This layer is contained in the files idl_rpc_obsolete.c and idl_rpc_obsolete.h.
To use the compatibility routines, include the file lib_rpc_obsolete.h in your application and use the following link statement as a template:
% cc -o old_example $(PRE_FLAGS) old_example.o \
idl_rpc_obsolete.o -lidl_rpc $(POST_FLAGS)
where the macros PRE_FLAGS and POST_FLAGS are the same as those described in Linking to the Client Library.
While the compatibility layer covers most of the old IDL RPC functionality, some of the more obscure operations have either been modified or are no longer supported. The features which have changed are as follows:
- idl_server_interactive: This function is no longer supported.
- get_idl_variable: The following return values are no longer supported:
Value |
Description |
-2 |
Illegal variable name (for example, “213xyz”, “#a”, “!DEVICE”)
|
-3 |
Variable not transportable (for example, the variable is a structure or associated variable)
|
- set_idl_timeout: the tv_usec field of the timeval struct is ignored.
- idl_set_verbosity(): This function is no longer supported. All other functionality is supported.