Files
pva2pva/testApp/testmon.cpp
2016-01-28 17:07:07 -05:00

67 lines
1.3 KiB
C++

#include <epicsGuard.h>
#include <epicsUnitTest.h>
#include <testMain.h>
#include <pv/monitor.h>
#include <pv/thread.h>
#include "utilities.h"
namespace pvd = epics::pvData;
typedef epicsGuard<epicsMutex> Guard;
namespace {
struct DownStreamReq : public pvd::MonitorRequester, DumbRequester
{
pvd::Mutex lock;
bool connected;
bool unlistend;
size_t eventCnt;
pvd::Status connectStatus;
pvd::MonitorPtr mon;
pvd::StructureConstPtr structure;
DownStreamReq()
:DumbRequester("DownStreamReq")
,connected(false)
,unlistend(false)
,eventCnt(0)
{}
virtual void monitorConnect(pvd::Status const & status,
pvd::MonitorPtr const & monitor, pvd::StructureConstPtr const & structure)
{
Guard G(lock);
assert(!connected);
connectStatus = status;
mon = monitor;
this->structure = structure;
connected = true;
}
virtual void monitorEvent(MonitorPtr const & monitor)
{
Guard G(lock);
mon = monitor;
eventCnt++;
}
virtual void unlisten(MonitorPtr const & monitor)
{
Guard G(lock);
assert(!unlistend);
unlistend = true;
}
};
} // namespace
MAIN(testmon)
{
testPlan(0);
return testDone();
}