Files
epics-base/src/cas/example/testdb/pvServ.h
1997-03-05 21:16:23 +00:00

93 lines
1.8 KiB
C++

/*
* $Id$
* $Log$
*/
#include "casdef.h"
#include "osiTimer.h"
class gdd;
class servPV;
#ifdef PVDEBUG
#define Debug(str) { fprintf(stderr,str); }
#define Debug1(str,val) { fprintf(stderr,str,val); }
#define Debug2(str,val1,val2) { fprintf(stderr,str,val1,val2); }
#define Debug3(str,val1,val2,val3) { fprintf(stderr,str,val1,val2,val3); }
#else
#define Debug(str) ;
#define Debug1(str,val) ;
#define Debug2(str,val1,val2) ;
#define Debug3(str,val1,val2,val3) ;
#endif
class dBase
{
public:
dBase(void)
{
pvname[0]='\0';counter=0;
hihi=90.0;high=80.0;low=20.0;lolo=10.0;
ts.tv_sec=0; ts.tv_nsec=0;
stat=0; sevr=0;
node=NULL;
}
void eventReady(void);
void writeData(double);
char pvname[50];
double counter;
double hihi,high,low,lolo;
aitTimeStamp ts;
aitInt16 stat,sevr;
servPV* node;
};
class serv : public caServer
{
public:
serv(int totpv,double rate,char* prefix,
unsigned maxnamelen,unsigned pvtotalest, unsigned maxsimio);
virtual ~serv(void);
virtual pvExistReturn pvExistTest(const casCtx& c,const char* pvname);
virtual casPV* createPV(const casCtx& c,const char* pvname);
int InitDB(void);
int Main(void);
// sloppy
char* prefix;
int prefix_len;
int pv_total;
double event_rate;
casEventMask event_mask;
dBase* db_sync;
};
class servPV : public casPV
{
public:
servPV(const casCtx&,serv&,const char* pvname,dBase&);
virtual ~servPV(void);
virtual caStatus interestRegister(void);
virtual void interestDelete(void);
virtual aitEnum bestExternalType(void) const;
virtual caStatus read(const casCtx &ctx, gdd &prototype);
virtual caStatus write(const casCtx &ctx, gdd &value);
virtual void destroy(void);
virtual unsigned maxSimultAsyncOps(void) const;
void eventReady(void);
private:
serv& mgr;
dBase& db;
gdd* value;
int monitored;
};