ChannelGetLocalPtr ChannelGetLocal::create( ChannelLocalPtr const &channelLocal, ChannelGetRequester::shared_pointer const & channelGetRequester, PVStructurePtr const & pvRequest, PVRecordPtr const &pvRecord) { PVCopyPtr pvCopy = PVCopy::create( pvRecord->getPVRecordStructure()->getPVStructure(), pvRequest, ""); if(!pvCopy) { Status status( Status::STATUSTYPE_ERROR, "invalid pvRequest"); ChannelGet::shared_pointer channelGet; channelGetRequester->channelGetConnect( status, channelGet, nullStructure); ChannelGetLocalPtr localGet; return localGet; } PVStructurePtr pvStructure = pvCopy->createPVStructure(); BitSetPtr bitSet(new BitSet(pvStructure->getNumberFields())); ChannelGetLocalPtr get(new ChannelGetLocal( getProcess(pvRequest,false), channelLocal, channelGetRequester, pvCopy, pvStructure, bitSet, pvRecord)); if(pvRecord->getTraceLevel()>0) { cout << "ChannelGetLocal::create"; cout << " recordName " << pvRecord->getRecordName() << endl; } channelGetRequester->channelGetConnect( Status::Ok,get,pvStructure->getStructure()); return get; }
ChannelGet::shared_pointer ChannelBase::createChannelGet( ChannelGetRequester::shared_pointer const &channelGetRequester, PVStructure::shared_pointer const &pvRequest) { Status status(Status::STATUSTYPE_ERROR, String("ChannelGet not supported")); channelGetRequester->channelGetConnect( status, ChannelGet::shared_pointer(), PVStructure::shared_pointer(), BitSet::shared_pointer()); return ChannelGet::shared_pointer(); }
ChannelGet::shared_pointer DbPv::createChannelGet( ChannelGetRequester::shared_pointer const &channelGetRequester, PVStructure::shared_pointer const &pvRequest) { DbPvGet::shared_pointer dbPvGet( new DbPvGet(getPtrSelf(),channelGetRequester)); if(!dbPvGet->init(pvRequest)) { Status createFailed(Status::STATUSTYPE_ERROR, "create dbPvGet failed"); channelGetRequester->channelGetConnect( createFailed, dbPvGet, nullStructure); } return dbPvGet; }