backward compatible edg_wll_ParseStatsResult()
authorJiří Filipovič <fila@ics.muni.cz>
Tue, 13 Jul 2010 23:48:14 +0000 (23:48 +0000)
committerJiří Filipovič <fila@ics.muni.cz>
Tue, 13 Jul 2010 23:48:14 +0000 (23:48 +0000)
org.glite.lb.client/examples/stats.c
org.glite.lb.client/src/statistics.c
org.glite.lb.common/interface/xml_parse.h
org.glite.lb.common/src/xml_parse.c.T

index 10c3200..3564383 100644 (file)
@@ -86,7 +86,7 @@ int main(int argc,char **argv)
        to = now;
        from = now - 60;
 
-       if (edg_wll_StateRate(ctx,group,atoi(argv[2]),argc >=4 ? atoi(argv[3]) : 0,
+       if (edg_wll_StateRates(ctx,group,atoi(argv[2]),argc >=4 ? atoi(argv[3]) : 0,
                                &from,&to,&vals,&groups,&from_res,&to_res))
        {
                char    *et,*ed;
index da9b56f..41ad937 100644 (file)
@@ -108,7 +108,7 @@ int edg_wll_StateRates(
        if (http_check_status(ctx,response))
                goto err;
 
-       edg_wll_ParseStatsResult(ctx,message, from, to, rates, 
+       edg_wll_ParseStatsResultFull(ctx,message, from, to, rates, 
                &not_returned, &not_returned, groups, res_from, res_to);
 
 err:
@@ -182,7 +182,7 @@ int edg_wll_StateDurations(
        if (http_check_status(ctx,response))
                goto err;
 
-       edg_wll_ParseStatsResult(ctx,message, from, to, &not_returned, 
+       edg_wll_ParseStatsResultFull(ctx,message, from, to, &not_returned, 
                durations, &not_returned, groups, res_from, res_to);
 
 err:
@@ -266,7 +266,7 @@ int edg_wll_StateDurationsFromTo(
         if (http_check_status(ctx,response))
                 goto err;
 
-        edg_wll_ParseStatsResult(ctx,message, from, to, &not_returned,
+        edg_wll_ParseStatsResultFull(ctx,message, from, to, &not_returned,
                         durations, dispersions, groups, res_from, res_to);
 
 err:
index 53d66a3..6211219 100644 (file)
@@ -93,7 +93,9 @@ extern int edg_wll_StatsRequestToXML(edg_wll_Context,const char *,const edg_wll_
 
 extern int edg_wll_StatsDurationFTRequestToXML(edg_wll_Context,const char *,const edg_wll_QueryRec *,edg_wll_JobStatCode,edg_wll_JobStatCode,int,time_t *,time_t *,char **);
        
-extern edg_wll_ErrorCode edg_wll_ParseStatsResult(edg_wll_Context ctx, char *messageBody, time_t *from, time_t *to, float **rate, float **duration, float **dispersion, char ***group, int *res_from, int *res_to);
+extern edg_wll_ErrorCode edg_wll_ParseStatsResult(edg_wll_Context ctx, char *messageBody, time_t *from, time_t *to, float *rate, float *duration, int *res_from, int *res_to);
+
+extern edg_wll_ErrorCode edg_wll_ParseStatsResultFull(edg_wll_Context ctx, char *messageBody, time_t *from, time_t *to, float **rate, float **duration, float **dispersion, char ***group, int *res_from, int *res_to);
 
 #ifdef __cplusplus
 }
index 9b3f8de..8e98502 100644 (file)
@@ -2408,7 +2408,38 @@ edg_wll_ErrorCode edg_wll_ParseQuerySequenceCodeResult(edg_wll_Context ctx, char
 
 
 /* parse statistics result from client */
-edg_wll_ErrorCode edg_wll_ParseStatsResult(edg_wll_Context ctx, char *messageBody, time_t *from, time_t *to, float **rate, float **duration, float **dispersion, char ***group, int *res_from, int *res_to)
+
+/* this is backward-compatible version, edg_wll_ParseStatsResultFull is prefered*/
+edg_wll_ErrorCode edg_wll_ParseStatsResult(edg_wll_Context ctx, char *messageBody, time_t *from, time_t *to, float *rate, float *duration, int *res_from, int *res_to)
+{
+       float *rates, *durations, *dispersions;
+       char **groups;
+       edg_wll_ErrorCode ret;
+       int i;
+
+       ret = edg_wll_ParseStatsResultFull(ctx, messageBody, from, to, &rates, &durations, &dispersions, &groups, res_from, res_to);
+
+       if (groups && groups[0]){
+               if (rates) {
+                       *rate = rates[0];
+                       free(rates);
+               }
+               if (durations) {
+                       *duration = durations[0];
+                       free(durations);
+               }
+               if (dispersions)
+                       free(dispersions);
+               for(i = 0; groups[i]; i++)  
+                       free(groups[i]);
+       }
+       if (groups)
+               free(groups);
+
+       return ret;
+}
+
+edg_wll_ErrorCode edg_wll_ParseStatsResultFull(edg_wll_Context ctx, char *messageBody, time_t *from, time_t *to, float **rate, float **duration, float **dispersion, char ***group, int *res_from, int *res_to)
 {
        edg_wll_XML_ctx XMLCtx;
        edg_wll_ErrorCode errorCode;