MonitorPtr MonitorFactory::createMonitor( PVRecordPtr const & pvRecord, MonitorRequester::shared_pointer const & monitorRequester, PVStructurePtr const & pvRequest) { Lock xx(mutex); if(isDestroyed) { monitorRequester->message("MonitorFactory is destroyed",errorMessage); return nullMonitor; } MonitorLocalPtr monitor(new MonitorLocal( monitorRequester,pvRecord)); bool result = monitor->init(pvRequest); if(!result) { MonitorPtr monitor; StructureConstPtr structure; monitorRequester->monitorConnect(failedToCreateMonitorStatus,monitor,structure); return nullMonitor; } if(pvRecord->getTraceLevel()>0) { cout << "MonitorFactory::createMonitor"; cout << " recordName " << pvRecord->getRecordName() << endl; } return monitor; }
Monitor::shared_pointer ChannelBase::createMonitor( MonitorRequester::shared_pointer const &monitorRequester, PVStructure::shared_pointer const &pvRequest) { Status status(Status::STATUSTYPE_ERROR, String("ChannelMonitor not supported")); Monitor::shared_pointer thisPointer = dynamic_pointer_cast<Monitor>(getPtrSelf()); monitorRequester->monitorConnect( status, thisPointer, StructureConstPtr()); return Monitor::shared_pointer(); }
Monitor::shared_pointer DbPv::createMonitor( MonitorRequester::shared_pointer const &monitorRequester, PVStructure::shared_pointer const &pvRequest) { DbPvMonitor::shared_pointer dbPvMonitor( new DbPvMonitor(getPtrSelf(),monitorRequester)); if(!dbPvMonitor->init(pvRequest)) { Status createFailed(Status::STATUSTYPE_ERROR, "create dbPvMonitor failed"); StructureConstPtr xxx; monitorRequester->monitorConnect( createFailed, dbPvMonitor, xxx); } return dbPvMonitor; }