Developing a CARMA client
CARMA clients can be designed to work specifically with a RAM, can provide a generic interface for any RAM to use, or can do a combination of the two. A good example of a generic client that can also be modified to work specifically with certain RAMs is Developer for z/OS®. Developer for z/OS was designed to support the basic functions all RAMs have in common, so a RAM fitting perfectly into the CARMA RAM API specification would work with Developer for z/OS right out of the box. Developer for z/OS also provides extension points with which RAM developers can customize the client for their RAM(s). On the other end of the spectrum, a very specific, non-interactive client could be written to simply run maintenance operations through a RAM.
CARMA clients can make use of some or all of the basic CARMA API
functions. The only functions that are required to be implemented
are initCarma
, initRAM
, and terminateCarma
.
terminateRAM
is not required because terminateCarma
will
take care of cleaning up the RAMs if it is called and CARMA still
has RAMs loaded. However, special care should be taken with the memory
that is passed to and from CARMA. Often, the RAM will allocate memory
that the client is required to free. Please read through Storing results for later use and Memory allocation carefully,
as memory leaks and abnormal program termination can easily result
from not following the recommendations on handling memory for each
function.