const void *nextRow() { if (eoi || activity.abortSoon) return false; try { while (xmlParser->next()) { if (lastMatch) { RtlDynamicRowBuilder row(allocator); size32_t sz = xmlTransformer->transform(row, lastMatch, this); lastMatch.clear(); if (sz) { localOffset = 0; ++progress; return row.finalizeRowClear(sz); } } } } catch (IXMLReadException *e) { if (XmlRead_syntax != e->errorCode()) throw; Owned<IException> _e = e; offset_t localFPos = makeLocalFposOffset(activity.queryContainer().queryJob().queryMyRank()-1, e->queryOffset()); StringBuffer context; context.append("Logical filename = ").append(activity.logicalFilename).newline(); context.append("Local fileposition = "); _WINREV8(localFPos); context.append("0x"); appendDataAsHex(context, sizeof(localFPos), &localFPos); context.newline(); context.append(e->queryContext()); throw createXmlReadException(e->errorCode(), e->queryDescription(), context.str(), e->queryLine(), e->queryOffset()); } catch (IOutOfMemException *e) { StringBuffer s("XMLRead actId("); s.append(activity.queryContainer().queryId()).append(") out of memory.").newline(); s.append("INTERNAL ERROR ").append(e->errorCode()); Owned<IException> e2 = MakeActivityException(&activity, e, "%s", s.str()); e->Release(); throw e2.getClear(); } catch (IException *e) { StringBuffer s("XMLRead actId("); s.append(activity.queryContainer().queryId()); s.append(") INTERNAL ERROR ").append(e->errorCode()); Owned<IException> e2 = MakeActivityException(&activity, e, "%s", s.str()); e->Release(); throw e2.getClear(); } eoi = true; return NULL; }
unsigned __int64 CDiskPartHandlerBase::getLocalFilePosition(const void * row) { return makeLocalFposOffset(partDesc->queryPartIndex(), getLocalOffset()); }