CacheService Object

Introduction

The CacheService object creates and handles a thread that helps update the Controller’s status cache. The CacheService object is a convenient way to have a program periodically update the Controller’s status cache, allowing the MPI methods to avoid the occasional performance penalty of explicitly updating the cache.

Thread handling is implemented differently on every operating system. CacheService objects may therefore have different behaviors on different operating systems. Programmers experienced in multi-threaded application programming will probably want to program their own threads that will call mpiControlStatusCacheRefresh(…).

Note: The CacheService object is not part of the standard MPI. In order to use the CacheService Object, the apputil.h header file needs to be included by your code and the apputil library linked to your application.

Methods

Create, Delete, Validate Methods
  cacheServiceCreate Creates a Cache Service thread
  cacheServiceDelete Deletes a Cache Service thread

Configuration and Information Methods
  cacheServiceConfigGet Gets the configuration of a CacheService object
  cacheServiceConfigSet Sets the configuration of a CacheService object
  cacheServiceEnable Enables or disables the thread belonging to a Cache Service.
  cacheServiceStatus Returns status structure for a CacheService object.
  cacheServiceErrorCountReset Resets a CacheService object’s error count

Data Types

  CacheService Type define for the CacheService handle
  CacheServiceConfig Configuration structure used to configure CacheService objects
  CacheServiceConfigDEFAULT Default configuration values for the CacheService configuration structure.
  CacheServiceErrorHandler Type define for a CacheService object error handler function
  CacheServiceErrorParams Error structure used when CacheService encounters an MPI error
  CacheServiceStatus Structure that holds the status information for a CacheService object

Sample Code

/* Create and initialize MPI objects */
void programInit(MPIControl         *control,
                 MPIControlType      controlType,
                 MPIControlAddress  *controlAddress,
                 CacheService       *cacheService)
{
    CacheServiceConfig cacheServiceConfig = CacheServiceConfigDEFAULT;
    long			        returnValue;
 
    /* Create motion controller object */
    *control =
        mpiControlCreate(controlType, controlAddress);
    msgCHECK(mpiControlValidate(*control));
 
    /* Initialize motion controller */
    returnValue =
        mpiControlInit(*control);
    msgCHECK(returnValue);
 
       /* Set the MPIControl object's client connection count */
       returnValue =
           mpiControlClientCountSet(*control, 2);
       msgCHECK(returnValue);

    /* Create CacheService thread */
    cacheServiceConfig.sleepTime = 20; /* milliseconds */

    *cacheService =
        cacheServiceCreate(*control, &cacheServiceConfig);
    if (*cacheService == NULL)
    {
        msgCHECK(MPIMessageHANDLE_INVALID);
    }
}
 
/* Perform certain cleanup actions and delete MPI objects */
void programCleanup(MPIControl   *control,
                    CacheService *cacheService)
{
    long            returnValue; 
 
    /* Delete service thread */
    returnValue =
        cacheServiceDelete(*cacheService);
    msgCHECK(returnValue);
    *cacheService = MPIHandleVOID;
 
    /* Delete motion controller object */
    returnValue =
        mpiControlDelete(*control);
    msgCHECK(returnValue);
    *control = MPIHandleVOID;
}