cdev-1.7.2n
This commit is contained in:
133
extensions/cdevGenericServer/cdevMonitorTable/test.cc
Executable file
133
extensions/cdevGenericServer/cdevMonitorTable/test.cc
Executable file
@@ -0,0 +1,133 @@
|
||||
#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;
|
||||
}
|
||||
Reference in New Issue
Block a user