19 #include <pv/pvType.h> 20 #include <pv/pvData.h> 21 #include <pv/pvTimeStamp.h> 22 #include <pv/timeStamp.h> 23 #include <pv/rpcService.h> 24 #include <pv/pvAccess.h> 25 #include <pv/status.h> 26 #include <pv/serverContext.h> 29 #define epicsExportSharedSymbols 34 using std::tr1::static_pointer_cast;
39 namespace epics {
namespace pvDatabase {
42 std::string
const & recordName)
44 FieldCreatePtr fieldCreate = getFieldCreate();
45 PVDataCreatePtr pvDataCreate = getPVDataCreate();
46 StructureConstPtr topStructure = fieldCreate->createFieldBuilder()->
47 addNestedStructure(
"argument")->
48 add(
"recordName",pvString)->
50 addNestedStructure(
"result") ->
51 add(
"status",pvString) ->
54 PVStructurePtr pvStructure = pvDataCreate->createPVStructure(topStructure);
57 if(!pvRecord->init()) pvRecord.reset();
61 RemoveRecord::RemoveRecord(
62 std::string
const & recordName,
63 epics::pvData::PVStructurePtr
const & pvStructure)
68 bool RemoveRecord::init()
71 PVStructurePtr pvStructure = getPVStructure();
72 pvRecordName = pvStructure->getSubField<PVString>(
"argument.recordName");
73 if(!pvRecordName)
return false;
74 pvResult = pvStructure->getSubField<PVString>(
"result.status");
75 if(!pvResult)
return false;
79 void RemoveRecord::process()
81 string name = pvRecordName->get();
82 PVRecordPtr pvRecord = PVDatabase::getMaster()->findRecord(name);
84 pvResult->put(name +
" not found");
88 pvResult->put(
"success");
std::tr1::shared_ptr< RemoveRecord > RemoveRecordPtr
Base interface for a PVRecord.
std::tr1::shared_ptr< PVRecord > PVRecordPtr
Remove another record in the same database.