ClRcT clComponentEventInit() { ClRcT rc = CL_OK; rc = clAlarmEventSubscribe(clCompAlarmEvtCallbackFunc); if(CL_OK != rc) { clLogError("UT1","INT", "Subscribing for the event failed. rc[0x%x]", rc); return rc; } clOsalPrintf("################ Successfully subscribed for the alarm events ############## \n"); #if 0 rc = clAlarmEventUnsubscribe(); if(CL_OK != rc) { clLogError("UT1", "INT", "Unsubscribing the event failed. rc[0x%x]", rc); return rc; } rc = clAlarmEventSubscribe(clCompAlarmEvtCallbackFunc); if(CL_OK != rc) { clLogError("UT1","INT", "Subscribing for the event failed. rc[0x%x]", rc); return rc; } #endif return rc; }
void clCompAppAMFCSISet(SaInvocationT invocation, const SaNameT *compName, SaAmfHAStateT haState, SaAmfCSIDescriptorT csiDescriptor) { ClRcT rc = CL_OK; /* * Print information about the CSI Set */ clprintf (CL_LOG_SEV_INFO, "Component [%.*s] : PID [%d]. CSI Set Received\n", compName->length, compName->value, mypid); clCompAppAMFPrintCSI(csiDescriptor, haState); /* * Take appropriate action based on state */ switch ( haState ) { case SA_AMF_HA_ACTIVE: { /* * AMF has requested application to take the active HA state * for the CSI. */ saAmfResponse(amfHandle, invocation, SA_AIS_OK); rc = clAlarmEventSubscribe(&alarm_event_subscribe_callback); if (CL_OK != rc) { clprintf(CL_LOG_SEV_ERROR,"%s: Failed while subscribing for the alarm events. rc[0x%x]", appname, rc); return; } break; } case SA_AMF_HA_STANDBY: { /* * AMF has requested application to take the standby HA state * for this CSI. */ saAmfResponse(amfHandle, invocation, SA_AIS_OK); break; } case SA_AMF_HA_QUIESCED: { /* * AMF has requested application to quiesce the CSI currently * assigned the active or quiescing HA state. The application * must stop work associated with the CSI immediately. */ saAmfResponse(amfHandle, invocation, SA_AIS_OK); rc = clAlarmEventUnsubscribe(); if (CL_OK != rc) { clprintf(CL_LOG_SEV_ERROR,"%s: Failed while un-subscribing for the alarm evnets. rc[0x%x] ", appname, rc); return; } break; } case SA_AMF_HA_QUIESCING: { /* * AMF has requested application to quiesce the CSI currently * assigned the active HA state. The application must stop work * associated with the CSI gracefully and not accept any new * workloads while the work is being terminated. */ saAmfCSIQuiescingComplete(amfHandle, invocation, SA_AIS_OK); break; } default: { assert(0); break; } } return; }
ClRcT clCompAppAMFCSISet( ClInvocationT invocation, const ClNameT *compName, ClAmsHAStateT haState, ClAmsCSIDescriptorT csiDescriptor) { /* * ---BEGIN_APPLICATION_CODE--- */ ClRcT rc = CL_OK; /* * ---END_APPLICATION_CODE--- */ /* * Print information about the CSI Set */ clprintf (CL_LOG_SEV_INFO, "Component [%s] : PID [%ld]. CSI Set Received", compName->value, mypid); clCompAppAMFPrintCSI(csiDescriptor, haState); /* * Take appropriate action based on state */ switch ( haState ) { case CL_AMS_HA_STATE_ACTIVE: { /* * AMF has requested application to take the active HA state * for the CSI. */ /* * ---BEGIN_APPLICATION_CODE--- */ // ... /* * ---END_APPLICATION_CODE--- */ clCpmResponse(cpmHandle, invocation, CL_OK); rc = clAlarmEventSubscribe(&alarm_event_subscribe_callback); if (CL_OK != rc) { clprintf(CL_LOG_SEV_ERROR,"%s: Failed while subscribing for the alarm events. rc[0x%x]", appname, rc); return rc; } break; } case CL_AMS_HA_STATE_STANDBY: { /* * AMF has requested application to take the standby HA state * for this CSI. */ /* * ---BEGIN_APPLICATION_CODE--- */ // ... /* * ---END_APPLICATION_CODE--- */ clCpmResponse(cpmHandle, invocation, CL_OK); break; } case CL_AMS_HA_STATE_QUIESCED: { /* * AMF has requested application to quiesce the CSI currently * assigned the active or quiescing HA state. The application * must stop work associated with the CSI immediately. */ /* * ---BEGIN_APPLICATION_CODE--- */ // ... /* * ---END_APPLICATION_CODE--- */ clCpmResponse(cpmHandle, invocation, CL_OK); rc = clAlarmEventUnsubscribe(); if (CL_OK != rc) { clprintf(CL_LOG_SEV_ERROR,"%s: Failed while un-subscribing for the alarm evnets. rc[0x%x] ", appname, rc); return rc; } break; } case CL_AMS_HA_STATE_QUIESCING: { /* * AMF has requested application to quiesce the CSI currently * assigned the active HA state. The application must stop work * associated with the CSI gracefully and not accept any new * workloads while the work is being terminated. */ /* * ---BEGIN_APPLICATION_CODE--- */ // ... /* * ---END_APPLICATION_CODE--- */ clCpmCSIQuiescingComplete(cpmHandle, invocation, CL_OK); break; } default: { /* * Should never happen. Ignore. */ } } return CL_OK; }