The Sun Cluster developer support package (SUNWscdev) provides two sets of interfaces for coding data service methods:
The Resource Management API (RMAPI), a set of low-level routines (in the libscha.so library)
The Data Services Development Library (DSDL), a set of higher level functions (in the libdsdev.so library) that encapsulate the functionality of the RMAPI and provides some additional functionality
Also included in the Sun Cluster developer support package is SunPlex Agent Builder, a tool that automates the creation of a data service.
The recommended approach to developing a data service is:
Decide whether to code in C or the Korn shell. If you decide to use the Korn shell, you cannot use the DSDL, which provides a C interface only.
Run Agent Builder, specify the requested inputs, and generate a data service, which includes source and executable code, an RTR file, and a package.
If the generated data service requires customizing, you can add DSDL code to the generated source files. Agent Builder indicates, with comments, specific places in the source files where you can add your own code.
If the code requires further customizing to support the target application, you can add RMAPI functions to the existing source code.
In practice, you could take numerous approaches to creating a data service. For example, rather than add your own code to specific places in the code generated by Agent Builder, you could replace entirely one of the generated methods or the generated monitor program with a program you write from scratch using DSDL or RMAPI functions. However, regardless of the manner you proceed, in almost every case, starting with Agent Builder makes sense, for the following reasons:
The code generated by Agent Builder, while generic in nature, has been tested in numerous data services.
Agent Builder generates an RTR file, a make file, a package for the resource, and other support files for the data service. Even if you use none of the data service code, using these other files can save you a considerable amount of work.
You can modify the generated code.
Unlike the RMAPI, which provides a set of C functions and a set of commands for use in scripts, the DSDL provides a C function interface only. Therefore, if you specify Korn shell (ksh) output in Agent Builder, the generated source code makes calls to RMAPI because there are no DSDL ksh commands.