bool ExampleLink::init() { initPVRecord(); PVStructurePtr pvStructure = getPVRecordStructure()->getPVStructure(); pvValue = pvStructure->getSubField<PVDoubleArray>("value"); if(!pvValue) { return false; } ChannelProvider::shared_pointer provider = getChannelProviderRegistry()->getProvider(providerName); if(!provider) { cout << getRecordName() << " provider " << providerName << " does not exist" << endl; return false; } ChannelRequester::shared_pointer channelRequester = dynamic_pointer_cast<ChannelRequester>(getPtrSelf()); channel = provider->createChannel(channelName,channelRequester); event.wait(); if(!status.isOK()) { cout << getRecordName() << " createChannel failed " << status.getMessage() << endl; return false; } PVStructurePtr pvRequest = CreateRequest::create()->createRequest( "value"); MonitorRequester::shared_pointer monitorRequester = dynamic_pointer_cast<MonitorRequester>(getPtrSelf()); monitor = channel->createMonitor(monitorRequester,pvRequest); return true; }
bool ExampleGetLinkRecord::init(PvaClientPtr const & pva,string const & channelName,string const & providerName) { initPVRecord(); PVStructurePtr pvStructure = getPVRecordStructure()->getPVStructure(); pvValue = pvStructure->getSubField<PVDoubleArray>("value"); if(!pvValue) { return false; } pvaClientGet = pva->channel(channelName,providerName)->createGet(); return true; }
bool ExampleMonitorLinkRecord::init(PvaClientPtr const & pva,string const & channelName,string const & providerName) { initPVRecord(); PVStructurePtr pvStructure = getPVRecordStructure()->getPVStructure(); pvValue = pvStructure->getSubField<PVDoubleArray>("value"); if(!pvValue) { return false; } PvaClientChannelPtr pvaClientChannel = pva->channel(channelName,providerName,0.0); monitorRequester = dynamic_pointer_cast<PvaClientMonitorRequester>(getPtrSelf()); pvaClientMonitor = pvaClientChannel->monitor("value",monitorRequester); return true; }
bool ExampleLink::init() { initPVRecord(); PVStructurePtr pvStructure = getPVRecordStructure()->getPVStructure(); pvTimeStamp.attach(pvStructure->getSubField("timeStamp")); pvAlarm.attach(pvStructure->getSubField("alarm")); pvValue = static_pointer_cast<PVDoubleArray>( pvStructure->getScalarArrayField("value",pvDouble)); if(!pvValue) { return false; } ChannelProvider::shared_pointer provider = getChannelProviderRegistry()->getProvider(providerName); if(!provider) { cout << getRecordName() << " provider " << providerName << " does not exist" << endl; return false; } ChannelRequester::shared_pointer channelRequester = dynamic_pointer_cast<ChannelRequester>(getPtrSelf()); channel = provider->createChannel(channelName,channelRequester); event.wait(); if(!status.isOK()) { cout << getRecordName() << " createChannel failed " << status.getMessage() << endl; return false; } ChannelGetRequester::shared_pointer channelGetRequester = dynamic_pointer_cast<ChannelGetRequester>(getPtrSelf()); PVStructurePtr pvRequest = CreateRequest::create()->createRequest( "value,alarm,timeStamp"); channelGet = channel->createChannelGet(channelGetRequester,pvRequest); event.wait(); if(!status.isOK()) { cout << getRecordName() << " createChannelGet failed " << status.getMessage() << endl; return false; } getPVValue = static_pointer_cast<PVDoubleArray>( getPVStructure->getScalarArrayField("value",pvDouble)); if(!getPVValue) { cout << getRecordName() << " get value not PVDoubleArray" << endl; return false; } return true; }