c_bool d_readerListenerCopy( c_object object, c_voidp copyArg) { d_readerListener listener; d_message message; v_message readerMessage; c_bool result = FALSE; if(object != NULL) { if (v_stateTest(v_readerSampleState(object), L_VALIDDATA)) { listener = d_readerListener(copyArg); readerMessage = v_message(v_dataReaderSampleTemplate(object)->message); message = C_DISPLACE(readerMessage, listener->fieldOffset); listener->lastInsertTime = v_dataReaderSample(object)->insertTime; listener->lastSourceTime = readerMessage->writeTime; listener->value = c_keep(object); if(listener->value){ listener->message = message; } listener->processMessage = TRUE; } else { /* Ignore data that is not valid but continue with the read action */ result = TRUE; } } return result; }
v_actionResult cmx_readerReadCopy( c_object o, c_voidp args) { sd_serializer ser; sd_serializedData data; v_dataReaderSample sample, newer; struct cmx_readerArg *arg; v_actionResult result; result = 0; if(o != NULL){ sample = v_dataReaderSample(o); if(v_stateTest(v_readerSampleState(sample), L_READ)){ v_actionResultSet(result, V_PROCEED); } else { sample = v_dataReaderSample(o); newer = sample->newer; sample->newer = NULL; arg = (struct cmx_readerArg *)args; ser = sd_serializerXMLNewTyped(c_getType(o)); data = sd_serializerSerialize(ser, o); arg->result = sd_serializerToString(ser, data); sd_serializedDataFree(data); sd_serializerFree(ser); sample->newer = newer; } } return result; }
c_bool cmx_readerReadCopy( c_object o, c_voidp args) { sd_serializer ser; sd_serializedData data; v_dataReaderSample sample, prev; struct cmx_readerArg *arg; c_bool result; result = FALSE; if(o != NULL){ sample = v_dataReaderSample(o); if(v_stateTest(v_readerSampleState(sample), L_READ)){ result = TRUE; } else { sample = v_dataReaderSample(o); prev = sample->prev; sample->prev = NULL; arg = (struct cmx_readerArg *)args; ser = sd_serializerXMLNewTyped(c_getType(o)); data = sd_serializerSerialize(ser, o); arg->result = sd_serializerToString(ser, data); sd_serializedDataFree(data); sd_serializerFree(ser); sample->prev = prev; } } return result; }