*** empty log message ***
[dyninst.git] / visi / test / server1.C
1 #include "../h/visualization.h"
2
3 int dv(int dummy){
4
5 int i,j,k,noBins,noMetrics,noResources;
6 float value;
7
8   fprintf(stderr,"@@@@call back routine for DATAVALUES\n");
9   noMetrics = dataGrid.NumMetrics();
10   noResources = dataGrid.NumResources();
11   noBins = dataGrid.NumBins();
12   fprintf(stderr,"@@@@ ERRROR = %f quiet_nan = %lf\n",ERROR,quiet_nan());
13   if(ERROR == quiet_nan()){
14   fprintf(stderr,"@@@@ ERRROR == quiet_nan \n");
15   }
16   for(i = 0; i < noMetrics; i++)
17     for(j = 0; j < noResources; j++){
18       for(k = 0; k < noBins; k++)
19        if((value = dataGrid[i][j][k]) != ERROR)
20          fprintf(stderr,"@@@@dataGrid[%d,%d,%d] = %f\n",i,j,k,value);
21        else
22          fprintf(stderr,"@@@@dataGrid[%d,%d,%d] = NaN\n",i,j,k);
23
24       printf("\n");
25     }
26
27   return(OK);
28 }
29
30
31 int imr(int dummy){
32   fprintf(stderr,"@@@@call back routine for INVALIDMETRICSRESOURCES\n");
33   return(OK);
34 }
35
36 int amr(int dummy){
37   fprintf(stderr,"@@@@call back routine for ADDMETRICSRESOURCES\n");
38   return(OK);
39 }
40
41 int nmr(int dummy){
42   fprintf(stderr,"@@@@call back routine for NEWMETRICSRESOURCES\n");
43   fprintf(stderr,"@@@@before upcall: GetMetricResource\n");
44   vp->GetMetricResource("metrics test string","r test string",0);
45   fprintf(stderr,"@@@@after upcall: GetMetricResource\n");
46   fprintf(stderr,"@@@@before upcall: StopMetricResource\n");
47   vp->StopMetricResource(3,2);
48   fprintf(stderr,"@@@@after upcall: StopMetricResource\n");
49   fprintf(stderr,"@@@@before upcall: PhaseName\n");
50   vp->PhaseName(3.0,2.0,"phase test string");
51   fprintf(stderr,"@@@@after upcall: PhaseName\n");
52   return(OK);
53 }
54
55 int pn(int dummy){
56 int i,j,k,noBins,noMetrics,noResources;
57
58   fprintf(stderr,"@@@@call back routine for PHASENAME\n");
59
60   noMetrics = dataGrid.NumMetrics();
61   noResources = dataGrid.NumResources();
62   noBins = dataGrid.NumBins();
63
64   fprintf(stderr,"\n");
65   for(i = 0; i < noMetrics; i++){
66       fprintf(stderr,"@@@@metric %d: Id = %d, name = %s, units = %s\n",i,dataGrid.MetricId(i),dataGrid.MetricName(i),dataGrid.MetricUnits(i));
67    }
68
69    for(j = 0; j < noResources; j++)
70        fprintf(stderr,"@@@@resource %d: Id = %d, name = %s\n",j,dataGrid.ResourceId(j),dataGrid.ResourceName(j));
71
72   fprintf(stderr,"\n");
73   for(i = 0; i < noMetrics; i++)
74     for(j = 0; j < noResources; j++){
75       for(k = 0; k < noBins; k++)
76        fprintf(stderr,"@@@@dataGrid[%d,%d,%d] = %f\n",i,j,k,dataGrid[i][j][k]);
77       printf("\n");
78     }
79     (char *)dataGrid[0][0].userdata =  strdup("blah");
80     fprintf(stderr,"(char *)dataGrid[0][0].userdata = %s\n",(char *)dataGrid[0][0].userdata);
81   return(OK);
82 }
83
84 int f(int dummy){
85   fprintf(stderr,"@@@@call back routine for FOLD\n");
86   return(OK);
87 }
88
89
90
91
92 main(int argc, char *argv[]){
93
94 int ok;
95  
96    // call VisiInit
97    if((ok = VisiInit()) != OK){
98      exit(-1);
99    }
100
101   // register event callbacks
102
103   ok = RegistrationCallback(DATAVALUES,dv);
104   fprintf(stderr,"@@@@ok = %d after call to RegistrationCallback\n",ok);
105   ok = RegistrationCallback(INVALIDMETRICSRESOURCES,imr);
106   fprintf(stderr,"@@@@ok = %d after call to RegistrationCallback\n",ok);
107   ok = RegistrationCallback(ADDMETRICSRESOURCES,amr);
108   fprintf(stderr,"@@@@ok = %d after call to RegistrationCallback\n",ok);
109   ok = RegistrationCallback(NEWMETRICSRESOURCES,nmr);
110   fprintf(stderr,"@@@@ok = %d after call to RegistrationCallback\n",ok);
111   ok = RegistrationCallback(PHASENAME,pn);
112   fprintf(stderr,"@@@@ok = %d after call to RegistrationCallback\n",ok);
113   ok = RegistrationCallback(FOLD,f);
114   fprintf(stderr,"@@@@ok = %d after call to RegistrationCallback\n",ok);
115
116
117   // start visi: calls GetMetricResources() with initial metric/resource
118   // lists: this is not necessary, but for viisualizaitons that
119   // don't do upcalls its the only method of starting data collection
120   ok = StartVisi(argc,argv);
121   fprintf(stderr,"@@@@ok=%d after call to StartVisi()\n",ok);
122
123   // register fd and callback using appropreate X routine  
124   // then enter X main loop 
125
126
127  // pseudo X main loop
128   while(1){
129    ok = visi_callback(); 
130    if(ok < 0){
131     //client has exited, die
132     exit(-1);
133    }
134   }
135 }