u_waitsetEvent u_waitsetHistoryRequestEventNew( u_entity e, c_ulong k, v_handle source, c_char* filter, c_array filterParams, struct v_resourcePolicy resourceLimits, c_time minSourceTimestamp, c_time maxSourceTimestamp) { u_waitsetEvent event; u_waitsetHistoryRequestEvent hrEvent; c_long i; event = (u_waitsetEvent)os_malloc(C_SIZEOF(u_waitsetHistoryRequestEvent)); if (event) { hrEvent = u_waitsetHistoryRequestEvent(event); event->entity = e; event->events = k; event->kind = U_WAITSET_EVENT_HISTORY_REQUEST; if(filter){ hrEvent->filter = os_strdup(filter); } else { hrEvent->filter = NULL; } hrEvent->source.server = source.server; hrEvent->source.index = source.index; hrEvent->source.serial = source.serial; hrEvent->resourceLimits = resourceLimits; hrEvent->minSourceTimestamp = minSourceTimestamp; hrEvent->maxSourceTimestamp = maxSourceTimestamp; hrEvent->filterParamsCount = c_arraySize(filterParams); if(hrEvent->filterParamsCount > 0){ hrEvent->filterParams = (c_char**)(os_malloc( hrEvent->filterParamsCount*sizeof(c_char*))); for(i=0; i<hrEvent->filterParamsCount; i++){ hrEvent->filterParams[i] = os_strdup(filterParams[i]); } } else { hrEvent->filterParams = NULL; } } return event; }
void u_waitsetEventFree( u_waitsetEvent event) { c_long i; if (event) { switch(event->kind){ case U_WAITSET_EVENT: /*Do nothing*/ break; case U_WAITSET_EVENT_HISTORY_DELETE: os_free(u_waitsetHistoryDeleteEvent(event)->partitionExpr); os_free(u_waitsetHistoryDeleteEvent(event)->topicExpr); break; case U_WAITSET_EVENT_HISTORY_REQUEST: if(u_waitsetHistoryRequestEvent(event)->filter){ os_free(u_waitsetHistoryRequestEvent(event)->filter); } for(i=0; i<u_waitsetHistoryRequestEvent(event)->filterParamsCount; i++){ os_free(u_waitsetHistoryRequestEvent(event)->filterParams[i]); } if(u_waitsetHistoryRequestEvent(event)->filterParams){ os_free(u_waitsetHistoryRequestEvent(event)->filterParams); } break; case U_WAITSET_EVENT_PERSISTENT_SNAPSHOT: if(u_waitsetPersistentSnapshotEvent(event)->partitionExpr) { os_free(u_waitsetPersistentSnapshotEvent(event)->partitionExpr); } if(u_waitsetPersistentSnapshotEvent(event)->topicExpr) { os_free(u_waitsetPersistentSnapshotEvent(event)->topicExpr); } if(u_waitsetPersistentSnapshotEvent(event)->uri) { os_free(u_waitsetPersistentSnapshotEvent(event)->uri); } break; case U_WAITSET_EVENT_CONNECT_WRITER: break; default: break; } os_free(event); } }