next up previous
Next: A Simple Java Query Up: Browser APIs Previous: Java Browser APIs

A Simple C++ Browser Example

Here is a simple example that does a single query to a server.


#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 *~



Subsections

Jie chen
2001-10-22