initialize PVRecord with access security group/level

This commit is contained in:
Sinisa Veseli
2021-02-28 16:28:54 -06:00
parent b62b047f63
commit 5427311390
2 changed files with 34 additions and 6 deletions

View File

@ -37,9 +37,11 @@ namespace epics { namespace pvDatabase {
PVRecordPtr PVRecord::create( PVRecordPtr PVRecord::create(
string const &recordName, string const &recordName,
PVStructurePtr const & pvStructure) PVStructurePtr const & pvStructure,
int asLevel,
const std::string& asGroup)
{ {
PVRecordPtr pvRecord(new PVRecord(recordName,pvStructure)); PVRecordPtr pvRecord(new PVRecord(recordName,pvStructure,asLevel,asGroup));
if(!pvRecord->init()) { if(!pvRecord->init()) {
pvRecord.reset(); pvRecord.reset();
} }
@ -49,12 +51,16 @@ PVRecordPtr PVRecord::create(
PVRecord::PVRecord( PVRecord::PVRecord(
string const & recordName, string const & recordName,
PVStructurePtr const & pvStructure) PVStructurePtr const & pvStructure,
int asLevel_,
const std::string& asGroup_)
: recordName(recordName), : recordName(recordName),
pvStructure(pvStructure), pvStructure(pvStructure),
depthGroupPut(0), depthGroupPut(0),
traceLevel(0), traceLevel(0),
isAddListener(false) isAddListener(false),
asLevel(asLevel_),
asGroup(asGroup_)
{ {
} }

View File

@ -59,6 +59,7 @@ class epicsShareClass PVRecord :
{ {
public: public:
POINTER_DEFINITIONS(PVRecord); POINTER_DEFINITIONS(PVRecord);
/** /**
* The Destructor. * The Destructor.
*/ */
@ -112,11 +113,14 @@ public:
* *
* @param recordName The name of the record, which is also the channelName. * @param recordName The name of the record, which is also the channelName.
* @param pvStructure The top level structure. * @param pvStructure The top level structure.
* @param asLevel AS level (default: ASL0)
* @param asGroup AS group (default: DEFAULT)
* @return A shared pointer to the newly created record. * @return A shared pointer to the newly created record.
*/ */
static PVRecordPtr create( static PVRecordPtr create(
std::string const & recordName, std::string const & recordName,
epics::pvData::PVStructurePtr const & pvStructure); epics::pvData::PVStructurePtr const & pvStructure,
int asLevel = 0, const std::string& asGroup = "DEFAULT");
/** /**
* @brief Get the name of the record. * @brief Get the name of the record.
* *
@ -232,15 +236,30 @@ public:
* @param level The level * @param level The level
*/ */
void setTraceLevel(int level) {traceLevel = level;} void setTraceLevel(int level) {traceLevel = level;}
/**
* @brief Get the ASlevel
*
* @return The level.
*/
int getAsLevel() const {return asLevel;}
/**
* @brief Get the AS group name
*
* @return The name.
*/
std::string getAsGroup() const {return asGroup;}
protected: protected:
/** /**
* @brief Constructor * @brief Constructor
* @param recordName The name of the record * @param recordName The name of the record
* @param pvStructure The top level PVStructutre * @param pvStructure The top level PVStructutre
* @param asLevel AS level (default: ASL0)
* @param asGroup AS group (default: DEFAULT)
*/ */
PVRecord( PVRecord(
std::string const & recordName, std::string const & recordName,
epics::pvData::PVStructurePtr const & pvStructure); epics::pvData::PVStructurePtr const & pvStructure,
int asLevel = 0, const std::string& asGroup = "DEFAULT");
/** /**
* @brief Initializes the base class. * @brief Initializes the base class.
* *
@ -269,6 +288,9 @@ private:
epics::pvData::PVTimeStamp pvTimeStamp; epics::pvData::PVTimeStamp pvTimeStamp;
epics::pvData::TimeStamp timeStamp; epics::pvData::TimeStamp timeStamp;
int asLevel;
std::string asGroup;
}; };
epicsShareFunc std::ostream& operator<<(std::ostream& o, const PVRecord& record); epicsShareFunc std::ostream& operator<<(std::ostream& o, const PVRecord& record);