KCMS CMM Developer's Guide

External Entry Points

The KCMS framework uses external entry points to load your derivative as an executable. The mandatory and optional entry points are described.

Mandatory

When you derive from a KcsIO class, the mandatory external entry points are:

extern

long KcsDLOpenIOCount; KcsIO *KcsCreateIO(KcsStatus *aStat,  	const

KcsProfileDesc *aDesc);

The KcsCreateIO()() method creates an instance of a KcsIO derivative. The instance is determined by aDesc->type, which contains the derivative portion of the class identifier (see "Creating OWconfig File Entries" ).

Optional

When you derive from a KcsIO class, the optional external entry points are:

KcsStatusId

KcsInitIO(); KcsStatusId

KcsCleanupIO();

Example

The following example shows you how to use the entry points when creating a KcsIO derivative.


Example 4-1 KcsIO Class Entry Points Example

/* External loadable

interface */ extern "C" 	extern long				KcsDLOpenIOCount;

	KcsStatus				KcsInitIO(); 	KcsIO				*KcsCreateIO(KcsStatus *aStatus, 

						const KcsProfileDesc *aDesc); 	KcsStatus				KcsCleanupIO(); //Loadable

stuff //external DL open count to support runtime derivation extern long

KcsDLOpenIOCount = 0;  /* Runtime derivable routine */ KcsIO *

KcsCreateIO(KcsStatus *aStat, const KcsProfileDesc *Desc) { 	//Create the new

derivative 	return(new KcsSolarisFile(aStat,

aDesc->desc.solarisFile.fileName,  		aDesc->desc.solarisFile.hostName, 

		aDesc->desc.solarisFile.oflag, aDesc->desc.solarisFile.mode); } 

KcsStatus KcsInitIO(long libMajor, long libMinor, long *myMajor, long

*myMinor) { 	// Set up the return values 	*myMajor = KCS_MAJOR_VERSION;

	*myMinor = KCS_MINOR_VERSION;  	//Check the major version 	if (libMajor !=

KCS_MAJOR_VERSION) 		return (KCS_CMM_MAJOR_VERSION_MISMATCH);  	//Currently,

if minor version of library is less than the KCMS  	// minor version, return

an error. 	if (libMinor != KCS_MINOR_VERSION) 		return

(KCS_CMM_MINOR_VERSION_MISMATCH);  	//Library guarantees if your minor version

number is greater than 	//KCMS minor version number, it will handle it. No

more init. 	return(KCS_SUCCESS); }  KcsStatus KcsCleanupIO() { 	/* Clean up is

performed in the destructor */ 	return (KCS_SUCCESS);

}