DefaultBeaconServerStatusProvider avoid unnecessary ServerContext ref

breaks loop ServerContext -> beaconEmitter -> BSSP -> ServerContext
This commit is contained in:
Michael Davidsaver
2018-04-02 12:39:46 -07:00
parent abed887d87
commit a3d820cf57
2 changed files with 12 additions and 42 deletions
+12 -33
View File
@@ -13,40 +13,19 @@ using namespace epics::pvData;
namespace epics {
namespace pvAccess {
DefaultBeaconServerStatusProvider::DefaultBeaconServerStatusProvider(ServerContext::shared_pointer const & context): _context(context)
{
initialize();
}
DefaultBeaconServerStatusProvider::DefaultBeaconServerStatusProvider(ServerContext::shared_pointer const & context)
:_status(getPVDataCreate()->createPVStructure(getFieldCreate()->createFieldBuilder()
->add("connections", pvInt)
->add("connections", pvInt)
->add("allocatedMemory", pvLong)
->add("freeMemory", pvLong)
->add("threads", pvInt)
->add("deadlocks", pvInt)
->add("averageSystemLoad", pvDouble)
->createStructure()))
{}
DefaultBeaconServerStatusProvider::~DefaultBeaconServerStatusProvider()
{
}
void DefaultBeaconServerStatusProvider::initialize()
{
FieldCreatePtr fieldCreate = getFieldCreate();
StringArray fieldNames;
fieldNames.resize(6);
fieldNames[0] = "connections";
fieldNames[1] = "allocatedMemory";
fieldNames[2] = "freeMemory";
fieldNames[3] = "threads";
fieldNames[4] = "deadlocks";
fieldNames[5] = "averageSystemLoad";
FieldConstPtrArray fields;
fields.resize(6);
// TODO hierarchy can be used...
fields[0] = fieldCreate->createScalar(pvInt);
fields[1] = fieldCreate->createScalar(pvLong);
fields[2] = fieldCreate->createScalar(pvLong);
fields[3] = fieldCreate->createScalar(pvInt);
fields[4] = fieldCreate->createScalar(pvInt);
fields[5] = fieldCreate->createScalar(pvDouble);
_status = getPVDataCreate()->createPVStructure(fieldCreate->createStructure(fieldNames, fields));
}
DefaultBeaconServerStatusProvider::~DefaultBeaconServerStatusProvider() {}
PVField::shared_pointer DefaultBeaconServerStatusProvider::getServerStatusData()
{
@@ -63,17 +63,8 @@ public:
virtual epics::pvData::PVField::shared_pointer getServerStatusData();
private:
/**
* Initialize
*/
void initialize();
private:
epics::pvData::PVStructure::shared_pointer _status;
std::tr1::shared_ptr<ServerContext> _context;
//ServerContext::shared_pointer _context;
};
}