C plug-in naming conventions
When you create a C plug-in, use the following naming conventions and memory management recommendations.
Do not free memory that the plug-in passes to your functions as arguments or that you return to the plug-in. Plug-ins can allocate and deallocate memory associated with the object argument for each call. The plug-in does not deallocate this memory.
Specifying input and return values
In a C API program, developers specify input values for the functions and receive return values. In a plug-in program, the plug-in provides the input values to the plug-ins, and the plug-ins provide return values.
If the AR System server returns AR_RETURN_WARN or AR_RETURN_OK to the arplugin log file after a call is issued, the plug-in considers that call successful. The plug-in considers the call unsuccessful if the server returns AR_RETURN_ERROR or AR_RETURN_FATAL.
If you do not implement a call, the plug-in performs a default action. The default action might be to proceed or to return an error message.
Protecting global information
To ensure thread safety, you must protect any global information or resources that you access through plug-in API calls with appropriate mutual exclusion locks. Global information and resource protection applies to all plug-in calls except ARPluginIdentify, ARPluginInitialization, ARPluginSetProperties, and ARPluginTermination, which are always called by one thread at a time.
At run time, the plug-in server reads the configuration file and creates the plug-ins that the file specifies. After the plug-in server creates the plug-ins, they remain active until a system failure or until you modify the plug-in configuration information and restart the plug-in server. For information about restarting the plug-in server, see Restarting the plug-in server using the Set Server Info command.