monitorfifo better default config handling
This commit is contained in:
@ -22,7 +22,12 @@ typedef epicsGuardRelease<epicsMutex> UnGuard;
|
||||
|
||||
namespace epics {namespace pvAccess {
|
||||
|
||||
static const MonitorFIFO::Config default_conf = {4, 4, 0, false};
|
||||
MonitorFIFO::Config::Config()
|
||||
:maxCount(4)
|
||||
,defCount(4)
|
||||
,actualCount(0) // readback
|
||||
,ignoreRequestMask(false)
|
||||
{}
|
||||
|
||||
size_t MonitorFIFO::num_instances;
|
||||
|
||||
@ -31,7 +36,7 @@ MonitorFIFO::Source::~Source() {}
|
||||
MonitorFIFO::MonitorFIFO(const std::tr1::shared_ptr<MonitorRequester> &requester,
|
||||
const pvData::PVStructure::const_shared_pointer &pvRequest,
|
||||
const Source::shared_pointer &source, Config *inconf)
|
||||
:conf(inconf ? *inconf : default_conf)
|
||||
:conf(inconf ? *inconf : Config())
|
||||
,requester(requester)
|
||||
,pvRequest(pvRequest)
|
||||
,upstream(source)
|
||||
|
@ -270,11 +270,12 @@ public:
|
||||
//! @param numEmpty The number of empty slots in the FIFO.
|
||||
virtual void freeHighMark(MonitorFIFO *mon, size_t numEmpty) {}
|
||||
};
|
||||
struct Config {
|
||||
struct epicsShareClass Config {
|
||||
size_t maxCount, //!< upper limit on requested FIFO size
|
||||
defCount, //!< FIFO size when client makes no request
|
||||
actualCount; //!< filled in with actual FIFO size
|
||||
bool ignoreRequestMask;
|
||||
Config();
|
||||
};
|
||||
|
||||
/**
|
||||
|
@ -369,7 +369,9 @@ void checkTypeChange()
|
||||
void checkFill()
|
||||
{
|
||||
testDiag("==== %s ====", CURRENT_FUNCTION);
|
||||
pva::MonitorFIFO::Config conf = {4, 2, 0};
|
||||
pva::MonitorFIFO::Config conf;
|
||||
conf.maxCount=4;
|
||||
conf.defCount=2;
|
||||
Tester tester(pvReqEmpty, &conf);
|
||||
|
||||
testEqual(conf.actualCount, 2u);
|
||||
@ -439,7 +441,9 @@ void checkFill()
|
||||
void checkSaturate()
|
||||
{
|
||||
testDiag("==== %s ====", CURRENT_FUNCTION);
|
||||
pva::MonitorFIFO::Config conf = {4, 2, 0};
|
||||
pva::MonitorFIFO::Config conf;
|
||||
conf.maxCount=4;
|
||||
conf.defCount=2;
|
||||
Tester tester(pvReqEmpty, &conf);
|
||||
|
||||
testEqual(conf.actualCount, 2u);
|
||||
@ -501,7 +505,9 @@ void checkSaturate()
|
||||
void checkPipeline()
|
||||
{
|
||||
testDiag("==== %s ====", CURRENT_FUNCTION);
|
||||
pva::MonitorFIFO::Config conf = {4, 3, 0};
|
||||
pva::MonitorFIFO::Config conf;
|
||||
conf.maxCount=4;
|
||||
conf.defCount=3;
|
||||
Tester tester(pvReqPipeline, &conf);
|
||||
|
||||
testEqual(conf.actualCount, 2u);
|
||||
@ -597,7 +603,9 @@ void checkPipeline()
|
||||
void checkSpam()
|
||||
{
|
||||
testDiag("==== %s ====", CURRENT_FUNCTION);
|
||||
pva::MonitorFIFO::Config conf = {4, 3, 0};
|
||||
pva::MonitorFIFO::Config conf;
|
||||
conf.maxCount=4;
|
||||
conf.defCount=3;
|
||||
Tester tester(pvReqPipeline, &conf);
|
||||
|
||||
pvd::uint32 cnt = 0;
|
||||
@ -663,7 +671,9 @@ void checkSpam()
|
||||
void checkCountdown()
|
||||
{
|
||||
testDiag("==== %s ====", CURRENT_FUNCTION);
|
||||
pva::MonitorFIFO::Config conf = {4, 3, 0};
|
||||
pva::MonitorFIFO::Config conf;
|
||||
conf.maxCount=4;
|
||||
conf.defCount=3;
|
||||
Tester tester(pvReqPipeline, &conf);
|
||||
|
||||
pvd::int32 cnt = 10;
|
||||
|
Reference in New Issue
Block a user