void event_callback( SaEvtSubscriptionIdT subscription_id, const SaEvtEventHandleT event_handle, const SaSizeT event_data_size) { SaAisErrorT result; SaUint8T priority; SaTimeT retention_time; SaNameT publisher_name = {0, {0}}; SaTimeT publish_time; SaEvtEventIdT event_id; int i; printf("event_callback called\n"); printf("sub ID: %x\n", subscription_id); printf("event_handle %llx\n", (unsigned long long)event_handle); printf("event data size %llu\n", (unsigned long long)event_data_size); evt_pat_get_array.patternsNumber = 4; result = saEvtEventAttributesGet(event_handle, &evt_pat_get_array, /* patterns */ &priority, /* priority */ &retention_time, /* retention time */ &publisher_name, /* publisher name */ &publish_time, /* publish time */ &event_id /* event_id */ ); if (result != SA_AIS_OK) { printf("event get attr result(2): %d\n", result); goto evt_free; } printf("pattern array count: %llu\n", (unsigned long long)evt_pat_get_array.patternsNumber); for (i = 0; i < evt_pat_get_array.patternsNumber; i++) { printf( "pattern %d =\"%s\"\n", i, evt_pat_get_array.patterns[i].pattern); } printf("priority: 0x%x\n", priority); printf("retention: %llx\n", (unsigned long long)retention_time); printf("publisher name content: \"%s\"\n", publisher_name.value); printf("event id: %llx\n", (unsigned long long)event_id); evt_free: result = saEvtEventFree(event_handle); printf("event free result: %d\n", result); }
void tet_saEvtEventAttributesGet(SaEvtEventHandleT *ptrEventHandle) { static int try_again_count; int character,length=0,pCount=0; SaEvtEventPatternArrayT *ptrPatternArray= (SaEvtEventPatternArrayT *)malloc(sizeof(SaEvtEventPatternArrayT)); memset(ptrPatternArray,'\0',(sizeof(SaEvtEventPatternArrayT))); SaNameT *getPublishName=(SaNameT *)malloc(sizeof(SaNameT)); memset(getPublishName,'\0',(sizeof(SaNameT))); ptrPatternArray->allocatedNumber=gl_allocatedNumber; ptrPatternArray->patterns= (SaEvtEventPatternT *)malloc((sizeof(SaEvtEventPatternT))*gl_allocatedNumber); memset(ptrPatternArray->patterns,'\0', sizeof(SaEvtEventPatternT)*gl_allocatedNumber); printf("\n\n******************************\n"); printf("\nEvent Patterns\n"); while(pCount<gl_allocatedNumber) { ptrPatternArray->patterns[pCount].allocatedSize=gl_patternLength; ptrPatternArray->patterns[pCount].patternSize=gl_patternLength; ptrPatternArray->patterns[pCount].pattern= (SaUint8T *)malloc(gl_patternLength); memset(ptrPatternArray->patterns[pCount].pattern,'\0', sizeof(gl_patternLength)); pCount++; } gl_rc=saEvtEventAttributesGet(*ptrEventHandle,ptrPatternArray,&gl_priority, &gl_retentionTime,getPublishName, &gl_publishTime,&gl_evtId); WHILE_TRY_AGAIN(gl_rc) { ++try_again_count; if(try_again_count==MAX_NUM_TRY_AGAINS) { printf("\n Attributes Get API Crossed Max Try Agains: exiting \n"); break; } RETRY_SLEEP; gl_rc=saEvtEventAttributesGet(*ptrEventHandle,ptrPatternArray, &gl_priority, &gl_retentionTime,getPublishName, &gl_publishTime,&gl_evtId); if(gl_rc==SA_AIS_OK) printf("\n EventAttibute Get Try Again Count = %d\n",try_again_count); } /*resultSuccess("saEvtEventAttributesGet() invoked",gl_rc);*/ if(gl_rc==1) { printf("\nNumber of patterns retrieved : %llu\n\n", ptrPatternArray->allocatedNumber); pCount=0; while(pCount<ptrPatternArray->allocatedNumber) { printf("Pattern Size: %llu\n", ptrPatternArray->patterns[pCount].patternSize); character=ptrPatternArray->patterns[pCount].pattern[length]; printf("Pattern: "); while(((character>=65&&character<=91) ||(character>=97&&character<=123)) &&length<ptrPatternArray->patterns[pCount].patternSize) { printf("%c",ptrPatternArray->patterns[pCount].pattern[length]); length++; if(length<ptrPatternArray->patterns[pCount].patternSize) { character=ptrPatternArray->patterns[pCount].pattern[length]; } } length=0; pCount++; printf("\n\n"); } } printf("\nEvent Attributes retrieved : \n"); printf("\nPriority: %d",gl_priority); printf("\nRetention Time: %llu",gl_retentionTime); printf("\nPublisher Name: %s",getPublishName->value); printf("\nPublish Time: %llu",gl_publishTime); printf("\nEvent Id: %llu\n",gl_evtId); printf("\n******************************\n"); if(gl_b03_flag) { gl_rc = saEvtEventPatternFree(*ptrEventHandle,ptrPatternArray->patterns); result("saEvtEventPatternFree() from a DeliverCallback()", SA_AIS_OK); } }