#include <cmlogBrowser.h>
static void qcallback (int status, void* arg, cmlogPacket* data)
{
cdevData* res = 0;
int severity;
char text[1024];
char host[80];
if (data) {
cmlogMsg** msgs = data->messages ();
for (int i = 0; i < data->numberOfData (); i++) {
cmlog_cdevMessage& idata = (*msgs[i]);
res = idata.getData ();
if (res) {
res->get ("host", host, sizeof (host));
res->get ("severity", &severity);
res->get ("text", text, sizeof (text));
printf ("From Host %s with Severity %d: %s\n", host, severity, text);
}
}
for (i = 0; i < data->numberOfData (); i++)
delete msgs[i];
delete []msgs;
}
}
char *selection = ``facility == 'EPICS' && severity == 10'';
main (int argc, char **argv)
{
cmlogBrowser browser;
char command[1024];
char attr[80];
int status;
if (browser.connect () == CMLOG_SUCCESS) {
printf ("Connect to the cmlogServer\n");
printf ("Enter cmlog test command\n");
scanf ("%s", command);
if (strcasecmp (command, "query") == 0) {
printf ("Enter start and end time in double value\n");
double start, end;
scanf ("%lf %lf", &start, &end);
cdevData data;
data.insert ("start", start);
data.insert ("end", end);
data.insert (``queryMsg'', selection);
status = browser.queryCallback (command, data, qcallback, 0);
browser.pend ();
}
}
}
The following is a sample Makefile for above C++ code (browserTest.cc) on a Unix machine (let us assume this machine is a Solaris)
CXX = CC
CXXFLAGS = -I$(CMLOG)/include -D_CMLOG_BUILD_CLIENT
OBJS = browserTest.o
LIBS = -L$(CMLOG)/lib/solaris -lcmlogb -lsocket -lnsl
all: browserTest
borwserTest: $(OBJS)
rm -f $@
$(CXX) -o $@ $(LIBS)
.cc.o:
rm -f $@
$(CXX) $(CXXFLAGS) -c $< -o $@
clean:
rm -f *.o browserTest core *~