From cc9bc2318f3dcb87b33537eaeadcad077925db0b Mon Sep 17 00:00:00 2001 From: =?utf8?q?Ji=C5=99=C3=AD=20Filipovi=C4=8D?= Date: Tue, 13 Jul 2010 23:48:14 +0000 Subject: [PATCH] backward compatible edg_wll_ParseStatsResult() --- org.glite.lb.client/examples/stats.c | 2 +- org.glite.lb.client/src/statistics.c | 6 +++--- org.glite.lb.common/interface/xml_parse.h | 4 +++- org.glite.lb.common/src/xml_parse.c.T | 33 ++++++++++++++++++++++++++++++- 4 files changed, 39 insertions(+), 6 deletions(-) diff --git a/org.glite.lb.client/examples/stats.c b/org.glite.lb.client/examples/stats.c index 10c3200..3564383 100644 --- a/org.glite.lb.client/examples/stats.c +++ b/org.glite.lb.client/examples/stats.c @@ -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; diff --git a/org.glite.lb.client/src/statistics.c b/org.glite.lb.client/src/statistics.c index da9b56f..41ad937 100644 --- a/org.glite.lb.client/src/statistics.c +++ b/org.glite.lb.client/src/statistics.c @@ -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, ¬_returned, ¬_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, ¬_returned, + edg_wll_ParseStatsResultFull(ctx,message, from, to, ¬_returned, durations, ¬_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, ¬_returned, + edg_wll_ParseStatsResultFull(ctx,message, from, to, ¬_returned, durations, dispersions, groups, res_from, res_to); err: diff --git a/org.glite.lb.common/interface/xml_parse.h b/org.glite.lb.common/interface/xml_parse.h index 53d66a3..6211219 100644 --- a/org.glite.lb.common/interface/xml_parse.h +++ b/org.glite.lb.common/interface/xml_parse.h @@ -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 } diff --git a/org.glite.lb.common/src/xml_parse.c.T b/org.glite.lb.common/src/xml_parse.c.T index 9b3f8de..8e98502 100644 --- a/org.glite.lb.common/src/xml_parse.c.T +++ b/org.glite.lb.common/src/xml_parse.c.T @@ -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; -- 1.8.2.3