#include "mp_utils.h"
MP_STATUS
MP_RegisterForObjectPropertyChangesPlugin(MP_OBJECT_PROPERTY_FN pClientFn,
MP_OBJECT_TYPE objectType,
void *pCallerData)
{
MP_BOOL hasFunc = MP_FALSE;
log(LOG_INFO, "MP_RegisterForObjectPropertyChangesPlugin()",
" - enter");
if (objectType > MP_OBJECT_TYPE_MAX) {
log(LOG_INFO, "MP_RegisterForObjectPropertyChangesPlugin()",
" - objectType is invalid");
log(LOG_INFO, "MP_RegisterForObjectPropertyChangesPlugin()",
" - error exit");
return (MP_STATUS_INVALID_PARAMETER);
}
if (objectType < 1) {
log(LOG_INFO, "MP_RegisterForObjectPropertyChangesPlugin()",
" - objectType is invalid");
log(LOG_INFO, "MP_RegisterForObjectPropertyChangesPlugin()",
" - error exit");
return (MP_STATUS_INVALID_PARAMETER);
}
if (g_SysEventHandle == NULL) {
if (init_sysevents() != MP_STATUS_SUCCESS)
return (MP_STATUS_FAILED);
}
(void) pthread_mutex_lock(&g_prop_mutex);
if (g_Property_Callback_List[objectType].pClientFn != NULL) {
hasFunc = MP_TRUE;
}
g_Property_Callback_List[objectType].pClientFn = pClientFn;
g_Property_Callback_List[objectType].pCallerData = pCallerData;
(void) pthread_mutex_unlock(&g_prop_mutex);
if (hasFunc) {
log(LOG_INFO, "MP_RegisterForObjectPropertyChangesPlugin()",
" - returning MP_STATUS_FN_REPLACED");
return (MP_STATUS_FN_REPLACED);
}
log(LOG_INFO, "MP_RegisterForObjectPropertyChangesPlugin()",
" - exit");
return (MP_STATUS_SUCCESS);
}