Files
cdev-1.7.2n/extensions/cdevGenericServer/cdevMonitorTable/test.cc
2022-12-13 12:44:04 +01:00

134 lines
3.0 KiB
C++
Executable File

#include "cdevMonitorTable.h"
#include "cdevTagMap.h"
cdevTagMap myMap;
class myMonitorTable : public cdevMonitorTable
{
public :
int fireCallback (cdevMessage * message )
{
char * str;
size_t len;
cdevMessage message2;
cdevData *data = message->getData();
if(data) myMap.localToRemote(*data);
message->streamOut(&str, &len);
message2.streamIn(str, len);
message2.asciiDump();
if(str!=NULL) delete str;
if(data) myMap.remoteToLocal(*data);
return 0;
}
};
myMonitorTable mTbl;
char * tagNames[7]=
{
"value",
"status",
"controlHigh",
"controlLow",
"time",
"alarmHigh",
"alarmLow"
};
int tagValues[7]=
{
9001,
9002,
9003,
9004,
9005,
9006,
9007
};
char * deviceList[10] =
{
"device1",
"device2",
"device3",
"device4",
"device5",
"device6",
"device7",
"device8",
"device9",
"device10"
};
int main()
{
cdevMessage * message;
cdevData context;
cdevData * triggers[10];
cdevData trigger;
myMap.updateTagMap(tagNames, tagValues, 7);
cdevData::insertTag(9001, "value1");
cdevData::insertTag(9002, "status1");
cdevData::insertTag(9003, "controlHigh1");
cdevData::insertTag(9004, "controlLow1");
cdevData::insertTag(9005, "time1");
cdevData::insertTag(9006, "alarmHigh1");
cdevData::insertTag(9007, "alarmLow1");
context.insert("value", 3);
context.insert("status", 3);
context.insert("controlHigh", 2);
context.insert("controlLow", 2);
context.insert("time", 1);
context.insert("alarmHigh", 1);
context.insert("alarmLow", 1);
trigger.insert("value", 100);
trigger.insert("status", 0);
trigger.insert("controlHigh", 1000);
trigger.insert("controlLow", 0);
trigger.insert("time", 100);
trigger.insert("alarmHigh", 999);
trigger.insert("alarmLow", 1);
for(int i=0; i<10; i++) triggers[i] = &trigger;
message = new cdevMessage(1, 1, 0, 0, 0, 0, 0, 10, deviceList, "monitorOn attrib", NULL, &context);
cdevMessage message2(*message);
message2.setCancelTransIndex(message2.getTransIndex());
mTbl.insertMonitor(message, triggers, 10);
fprintf(stdout, "***************** Firing a monitor *****************\n");
mTbl.fireMonitor ("device1", "attrib", "controlHigh", &trigger);
mTbl.removeMonitor(&message2);
fprintf(stdout, "*************** Firing Four Monitors ***************\n");
mTbl.fireMonitor ("device1", "attrib", "controlHigh", &trigger);
mTbl.fireMonitor ("device2", "attrib", "controlHigh", &trigger);
mTbl.fireMonitor ("device3", "attrib", "controlHigh", &trigger);
mTbl.fireMonitor ("device10", "attrib", "controlHigh", &trigger);
context.remove();
context.insert("value", 3);
cdevMessage *message3 = new cdevMessage(2, 2, 0, 0, 0, 0, 0, 10, deviceList, "monitorOn attrib", NULL, &context);
mTbl.insertMonitor(message3, &trigger);
for(i=0; i<100; i++)
{
trigger.insert("value", i);
mTbl.fireMonitor("device1", "attrib", "value", &trigger);
}
mTbl.removeClientMonitors(2);
mTbl.fireMonitor("device1", "attrib", "value", &trigger);
return 0;
}