Practical Use of ANSA RPC

ANSA RPC is used in a straightforward way to support the Interfaces exported by each of the servers described in section 2. The source code is divided into a set of sub-directories of a top-level source tree on a Unix development machine following normal ;SPM_quot;C and Unix;SPM_quot; software engineering practice. Each service is defined in a separate module, with the code that implements the service in one C module, the actual procedures in a second (separate from the bulk of the service just so that it might be possible later to cleanly replace on RPC mechanism with another). This latter module is in DPL. This is a form of annotated C that an ANSA pre-processor parses and replaces the annotated sections with: The definitions of the Interfaces (Global Types and Procedures) (OPERATIONS in ANSA Terminology) are in a separate IDL module in the same sub-directory as the service source and DPL. These are parsed by another pre-processor to generate: Since there are a number of types in common across all of the services, there is a sub-directory with both a C type definition module, and an IDL type definition. Each sub-directory has its own makefile [#make##1#] This leads to an initial pair of problem - makefiles for clients now have to reference IDL files in the server sub-directories. And many the dependencies are heavily entwined to and fro across the subdirectories.