void ChannelProcessLocal::process() { ChannelProcessRequester::shared_pointer requester = channelProcessRequester.lock(); if(!requester) return; if(isDestroyed) { requester->processDone(channelDestroyedStatus,getPtrSelf()); return; } if(pvRecord->getTraceLevel()>1) { cout << "ChannelProcessLocal::process"; cout << " nProcess " << nProcess << endl; } try { for(int i=0; i< nProcess; i++) { epicsGuard <PVRecord> guard(*pvRecord); pvRecord->beginGroupPut(); pvRecord->process(); pvRecord->endGroupPut(); } requester->processDone(Status::Ok,getPtrSelf()); } catch(std::exception& ex) { Status status = Status(Status::STATUSTYPE_FATAL, ex.what()); requester->processDone(status,getPtrSelf()); } }