void process() { helper->clearAggregate(aggy); input = inputs.item(0); startInput(input); processed = THORDATALINK_STARTED; try { while (!abortSoon) { OwnedConstThorRow row(input->ungroupedNextRow()); if (!row) break; helper->process(aggy, row); processed++; } ActPrintLog("DISTRIBUTION: processed %"RCPF"d records", processed & THORDATALINK_COUNT_MASK); } catch(CATCHALL) { ActPrintLog("DISTRIBUTION: exception"); throw; } CMessageBuffer msg; helper->serialize(aggy, msg); container.queryJob().queryJobComm().send(msg, 0, mpTag); }