Beispiel #1
0
SaAisErrorT ntfsv_filter_alarm_alloc(SaNtfAlarmNotificationFilterT *filter,
	SaUint32T numProbableCauses,
	SaUint32T numPerceivedSeverities,
	SaUint32T numTrends)
{
	SaAisErrorT rc = SA_AIS_OK;

	filter->probableCauses = NULL;
	filter->perceivedSeverities = NULL;
	filter->trends = NULL;

	filter->numProbableCauses = numProbableCauses;
	filter->numPerceivedSeverities = numPerceivedSeverities;
	filter->numTrends = numTrends;

	/* Probable causes */
	if (numProbableCauses != 0) {
		filter->probableCauses = (SaNtfProbableCauseT *) malloc(numProbableCauses * sizeof(SaNtfProbableCauseT));
		if (filter->probableCauses == NULL) {
			TRACE_1("Out of memory in probableCauses field");
			rc = SA_AIS_ERR_NO_MEMORY;
			goto error_free;
		}
	}
	/* Percieved severities */
	if (numPerceivedSeverities != 0) {
		filter->perceivedSeverities = (SaNtfSeverityT *) malloc(numPerceivedSeverities * sizeof(SaNtfSeverityT));
		if (filter->perceivedSeverities == NULL) {
			TRACE_1("Out of memory in perceivedSeverities field");
			rc = SA_AIS_ERR_NO_MEMORY;
			goto error_free;
		}
	}
	/* Severity trends */
	if (numTrends != 0) {
		filter->trends = (SaNtfSeverityTrendT *) malloc(numTrends * sizeof(SaNtfSeverityTrendT));
		if (filter->trends == NULL) {
			TRACE_1("Out of memory in trends field");
			rc = SA_AIS_ERR_NO_MEMORY;
			goto error_free;
		}
	}
 done:
	return rc;
 error_free:
	ntfsv_filter_alarm_free(filter, false);
	goto done;
}
/**
 * 
 * @param instance
 */
void ntfa_filter_hdl_rec_destructor(ntfa_filter_hdl_rec_t *filter_rec)
{
	switch (filter_rec->ntfType) {
	case SA_NTF_TYPE_OBJECT_CREATE_DELETE:
		ntfsv_filter_obj_cr_del_free(&filter_rec->notificationFilter.objectCreateDeleteNotificationfilter);
		break;
	case SA_NTF_TYPE_ATTRIBUTE_CHANGE:
		ntfsv_filter_attr_ch_free(&filter_rec->notificationFilter.attributeChangeNotificationfilter);
		break;
	case SA_NTF_TYPE_STATE_CHANGE:
		ntfsv_filter_state_ch_free(&filter_rec->notificationFilter.stateChangeNotificationfilter);
		break;
	case SA_NTF_TYPE_SECURITY_ALARM:
		ntfsv_filter_sec_alarm_free(&filter_rec->notificationFilter.securityAlarmNotificationfilter);
		break;
	case SA_NTF_TYPE_ALARM:
		ntfsv_filter_alarm_free(&filter_rec->notificationFilter.alarmNotificationfilter);
		break;
	default:
		assert(0);
	}
}