void ChannelPutGetLocal::getGet() { ChannelPutGetRequester::shared_pointer requester = channelPutGetRequester.lock(); if(!requester) return; if(isDestroyed) { requester->getGetDone( channelDestroyedStatus,getPtrSelf(),nullPVStructure,nullBitSet); return; } try { getBitSet->clear(); { epicsGuard <PVRecord> guard(*pvRecord); pvGetCopy->updateCopySetBitSet(pvGetStructure, getBitSet); } requester->getGetDone( Status::Ok,getPtrSelf(),pvGetStructure,getBitSet); if(pvRecord->getTraceLevel()>1) { cout << "ChannelPutGetLocal::getGet" << endl; } } catch(std::exception& ex) { Status status = Status(Status::STATUSTYPE_FATAL, ex.what()); PVStructurePtr pvPutStructure; BitSetPtr putBitSet; requester->getGetDone(status,getPtrSelf(),pvGetStructure,getBitSet); } }
ChannelPutGetLocalPtr ChannelPutGetLocal::create( ChannelLocalPtr const &channelLocal, ChannelPutGetRequester::shared_pointer const & channelPutGetRequester, PVStructurePtr const & pvRequest, PVRecordPtr const &pvRecord) { PVCopyPtr pvPutCopy = PVCopy::create( pvRecord->getPVRecordStructure()->getPVStructure(), pvRequest, "putField"); PVCopyPtr pvGetCopy = PVCopy::create( pvRecord->getPVRecordStructure()->getPVStructure(), pvRequest, "getField"); if(!pvPutCopy || !pvGetCopy) { Status status( Status::STATUSTYPE_ERROR, "invalid pvRequest"); ChannelPutGet::shared_pointer channelPutGet; channelPutGetRequester->channelPutGetConnect( status, channelPutGet, nullStructure, nullStructure); ChannelPutGetLocalPtr localPutGet; return localPutGet; } PVStructurePtr pvGetStructure = pvGetCopy->createPVStructure(); BitSetPtr getBitSet(new BitSet(pvGetStructure->getNumberFields())); ChannelPutGetLocalPtr putGet(new ChannelPutGetLocal( getProcess(pvRequest,true), channelLocal, channelPutGetRequester, pvPutCopy, pvGetCopy, pvGetStructure, getBitSet, pvRecord)); if(pvRecord->getTraceLevel()>0) { cout << "ChannelPutGetLocal::create"; cout << " recordName " << pvRecord->getRecordName() << endl; } channelPutGetRequester->channelPutGetConnect( Status::Ok, putGet, pvPutCopy->getStructure(),pvGetCopy->getStructure()); return putGet; }
ChannelPutGet::shared_pointer CAChannel::createChannelPutGet( ChannelPutGetRequester::shared_pointer const & channelPutGetRequester, epics::pvData::PVStructure::shared_pointer const & /*pvRequest*/) { Status errorStatus(Status::STATUSTYPE_ERROR, "not supported"); ChannelPutGet::shared_pointer nullChannelPutGet; EXCEPTION_GUARD(channelPutGetRequester->channelPutGetConnect(errorStatus, nullChannelPutGet, Structure::const_shared_pointer(), Structure::const_shared_pointer())); return nullChannelPutGet; }
ChannelPutGet::shared_pointer ChannelBase::createChannelPutGet( ChannelPutGetRequester::shared_pointer const &channelPutGetRequester, PVStructure::shared_pointer const &pvRequest) { Status status(Status::STATUSTYPE_ERROR, String("ChannelPutGet not supported")); channelPutGetRequester->channelPutGetConnect( status, ChannelPutGet::shared_pointer(), PVStructure::shared_pointer(), PVStructure::shared_pointer()); return ChannelPutGet::shared_pointer(); }