From ddec17d596a6a81ad6a0cdcd7d7d9780514915a4 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Ale=C5=A1=20K=C5=99enek?= Date: Wed, 1 Jun 2005 13:48:33 +0000 Subject: [PATCH] - partially recovered WS functionality (jobstat only) - correct list conversions in ws_typeref --- org.glite.lb.server/Makefile | 11 +- org.glite.lb.server/examples/ws_jobstat.c | 26 ++-- org.glite.lb.server/src/bkserverd.c | 3 +- org.glite.lb.server/src/ws_fault.c | 29 ++--- org.glite.lb.server/src/ws_query.c | 48 ++++++-- org.glite.lb.server/src/ws_typemap.h | 94 ++++++++------- org.glite.lb.server/src/ws_typeref.c.T | 190 +++++++++++++++++++++--------- org.glite.lb.server/src/ws_typeref.h | 40 +++---- 8 files changed, 282 insertions(+), 159 deletions(-) diff --git a/org.glite.lb.server/Makefile b/org.glite.lb.server/Makefile index 5613480..6483807 100644 --- a/org.glite.lb.server/Makefile +++ b/org.glite.lb.server/Makefile @@ -20,11 +20,10 @@ gsoap_prefix=/opt/gsoap -include Makefile.inc -GLITE_LB_SERVER_WITH_WS=no +GLITE_LB_SERVER_WITH_WS=yes ifeq ($(GLITE_LB_SERVER_WITH_WS),yes) - gsoap_version=`${gsoap_prefix}/bin/soapcpp2 -version 2>&1 | cut -d' ' -f4 | perl -F\\\\. -nae '$$F[2] =~ s/\D*$$//; print $$F[2]+100*$$F[1]+10000*$$F[0]'` - WS_CFLAGS=-DGLITE_LB_SERVER_WITH_WS -DGSOAP_VERSION=${gsoap_version} + WS_CFLAGS=-DGLITE_LB_SERVER_WITH_WS else WS_CFLAGS= endif @@ -314,3 +313,9 @@ test_query_events.o: %.o: %.cpp %.lo: %.c ${COMPILE} -o $@ -c $< +soap_version.h: + ${gsoap_prefix}/bin/soapcpp2 /dev/null + perl -ne '$$. == 2 && /.*([0-9])\.([0-9])\.([0-9]).*/ && printf "#define GSOAP_VERSION %d%02d%02d\n",$$1,$$2,$$3' soapH.h >$@ + -rm soapC.cpp soapH.h soapStub.h soapClient.cpp soapServer.cpp soapClientLib.cpp soapServerLib.cpp + +bkserverd.o ws_fault.o: soap_version.h diff --git a/org.glite.lb.server/examples/ws_jobstat.c b/org.glite.lb.server/examples/ws_jobstat.c index ea1e9cf..4bb2afd 100644 --- a/org.glite.lb.server/examples/ws_jobstat.c +++ b/org.glite.lb.server/examples/ws_jobstat.c @@ -5,6 +5,7 @@ #include "glite/lb/consumer.h" #include "bk_ws_H.h" +#include "ws_typeref.h" #include "LoggingAndBookkeeping.nsmap" @@ -30,9 +31,11 @@ int main(int argc,char** argv) edg_wll_Context ctx; glite_gsplugin_Context gsplugin_ctx; struct soap *mydlo = soap_new(); - struct edgwll2__JobStatusResponse out; + struct _lbe__JobStatusResponse out; + struct _lbe__JobStatus in; + struct lbt__jobFlags flags = { 0, NULL }; int opt, err; - char *server = "http://localhost:8999/", + char *server = "http://localhost:9003/", *jobid = NULL, *name = NULL; @@ -66,14 +69,17 @@ int main(int argc,char** argv) glite_gsplugin_set_udata(mydlo, ctx); + in.jobid = jobid; + in.flags = &flags; - switch (err = soap_call_edgwll2__JobStatus(mydlo, server, "", jobid,0,&out)) + + switch (err = soap_call___lb__JobStatus(mydlo, server, "",&in,&out)) { case SOAP_OK: { edg_wll_JobStat s; - edg_wll_SoapToStatus(mydlo,out.status,&s); + edg_wll_SoapToStatus(mydlo,out.stat,&s); printstat(s, 0); } break; @@ -99,6 +105,7 @@ static void printstat(edg_wll_JobStat stat, int level) { char *s, *j, ind[10]; int i; + time_t t; for (i=0; i < level; i++) @@ -153,12 +160,13 @@ static void printstat(edg_wll_JobStat stat, int level) stat.user_tags[i].tag,stat.user_tags[i].value); printf("%sstateEnterTime : %ld.%06ld\n", ind, stat.stateEnterTime.tv_sec,stat.stateEnterTime.tv_usec); printf("%sstateEnterTimes : \n",ind); - if (stat.stateEnterTimes) - for (i=1; i<=stat.stateEnterTimes[0]; i++) - printf("%s%14s %s", ind, edg_wll_StatToString(i-1), (stat.stateEnterTimes[i] == 0) ? - " - not available -\n" : ctime((time_t *) &stat.stateEnterTimes[i])); + if (stat.stateEnterTimes) for (i=1; i<=stat.stateEnterTimes[0]; i++) { + time_t t = stat.stateEnterTimes[i]; + printf("%s%14s %s", ind, edg_wll_StatToString(i-1), (stat.stateEnterTimes[i] == 0) ? + " - not available -\n" : ctime(&t)); + } printf("%slastUpdateTime : %ld.%06ld\n", ind, stat.lastUpdateTime.tv_sec,stat.lastUpdateTime.tv_usec); - printf("%sexpectUpdate : %d\n", ind, stat.expectUpdate); + printf("%sexpectUpdate : %d\n", ind, stat.expectUpdate); printf("%sexpectFrom : %s\n", ind, stat.expectFrom); printf("%sacl : %s\n", ind, stat.acl); printf("\n"); diff --git a/org.glite.lb.server/src/bkserverd.c b/org.glite.lb.server/src/bkserverd.c index 10675ce..bcd6438 100644 --- a/org.glite.lb.server/src/bkserverd.c +++ b/org.glite.lb.server/src/bkserverd.c @@ -28,6 +28,7 @@ #include #ifdef GLITE_LB_SERVER_WITH_WS +#include "soap_version.h" #include #include "glite/security/glite_gsplugin.h" #endif /* GLITE_LB_SERVER_WITH_WS */ @@ -861,7 +862,7 @@ int bk_handle_connection(int conn, struct timeval *timeout, void *data) char *errt, *errd; edg_wll_Error(ctx, &errt, &errd); - dprintf(("[%d] %s (%s)\n", getpid(), errt, errd)); + dprintf(("[%d] %s (%s)\n[%d]\tignored, continuing without VOMS\n", getpid(), errt, errd,getpid())); free(errt); free(errd); edg_wll_ResetError(ctx); } diff --git a/org.glite.lb.server/src/ws_fault.c b/org.glite.lb.server/src/ws_fault.c index 74ef683..d2a10fc 100644 --- a/org.glite.lb.server/src/ws_fault.c +++ b/org.glite.lb.server/src/ws_fault.c @@ -1,6 +1,7 @@ #include #include "glite/lb/context-int.h" +#include "soap_version.h" #include "bk_ws_H.h" #include "bk_ws_Stub.h" @@ -10,20 +11,20 @@ void edg_wll_ErrToFault(const edg_wll_Context ctx,struct soap *soap) { char *et,*ed; struct SOAP_ENV__Detail *detail = soap_malloc(soap,sizeof *detail); - struct _GenericLBFault *f = soap_malloc(soap,sizeof *f); + struct _genericFault *f = soap_malloc(soap,sizeof *f); - f->edgwll__GenericLBFault = soap_malloc(soap,sizeof *f->edgwll__GenericLBFault); + f->lbe__genericFault = soap_malloc(soap,sizeof *f->lbe__genericFault); - f->edgwll__GenericLBFault->code = edg_wll_Error(ctx,&et,&ed); - f->edgwll__GenericLBFault->text = soap_malloc(soap,strlen(et)+1); - strcpy(f->edgwll__GenericLBFault->text,et); + f->lbe__genericFault->code = edg_wll_Error(ctx,&et,&ed); + f->lbe__genericFault->text = soap_malloc(soap,strlen(et)+1); + strcpy(f->lbe__genericFault->text,et); free(et); - f->edgwll__GenericLBFault->description = soap_malloc(soap,strlen(ed)+1); - strcpy(f->edgwll__GenericLBFault->description,ed); + f->lbe__genericFault->description = soap_malloc(soap,strlen(ed)+1); + strcpy(f->lbe__genericFault->description,ed); free(ed); - detail->__type = SOAP_TYPE__GenericLBFault; + detail->__type = SOAP_TYPE__genericFault; #if GSOAP_VERSION >= 20700 detail->fault = f; #else @@ -42,15 +43,15 @@ void edg_wll_FaultToErr(const struct soap *soap,edg_wll_Context ctx) struct SOAP_ENV__Detail *detail = soap->version == 2 ? soap->fault->SOAP_ENV__Detail : soap->fault->detail; - struct edgwll__GenericLBFaultType *f; + struct lbt__genericFault *f; - if (detail->__type == SOAP_TYPE__GenericLBFault) { + if (detail->__type == SOAP_TYPE__genericFault) { #if GSOAP_VERSION >= 20700 - f = ((struct _GenericLBFault *) detail->fault) - ->edgwll__GenericLBFault; + f = ((struct _genericFault *) detail->fault) + ->lbe__genericFault; #else - f = ((struct _GenericLBFault *) detail->value) - ->edgwll__GenericLBFault; + f = ((struct _genericFault *) detail->value) + ->lbe__genericFault; #endif edg_wll_SetError(ctx,f->code,f->description); } diff --git a/org.glite.lb.server/src/ws_query.c b/org.glite.lb.server/src/ws_query.c index 1470d6a..1c0bc46 100644 --- a/org.glite.lb.server/src/ws_query.c +++ b/org.glite.lb.server/src/ws_query.c @@ -24,21 +24,22 @@ int edgwll2__GetVersion( } #endif -/* -int edgwll2__JobStatus( - struct soap *soap, - char *jobid, - struct edgwll__JobStatFlags *flags, - struct edgwll2__JobStatusResponse *out) -*/ +SOAP_FMAC5 int SOAP_FMAC6 __lb__GetVersion( + struct soap* soap, + struct _lbe__GetVersion *in, + struct _lbe__GetVersionResponse *out) +{ +} + SOAP_FMAC5 int SOAP_FMAC6 __lb__JobStatus( struct soap *soap, struct _lbe__JobStatus *in, - struct _lbe__JobStatusResponse *out); + struct _lbe__JobStatusResponse *out) { edg_wll_Context ctx = (edg_wll_Context) glite_gsplugin_get_udata(soap); edg_wlc_JobId j; edg_wll_JobStat s; + int flags; if ( edg_wlc_JobIdParse(in->jobid, &j) ) @@ -48,17 +49,27 @@ SOAP_FMAC5 int SOAP_FMAC6 __lb__JobStatus( return SOAP_FAULT; } - if ( edg_wll_JobStatus(ctx, j, 0, &s) ) + edg_wll_SoapToJobStatFlags(in->flags, &flags); + + if ( edg_wll_JobStatus(ctx, j, flags, &s) ) { edg_wll_ErrToFault(ctx, soap); return SOAP_FAULT; } - edg_wll_StatusToSoap(soap, &s, &(out->status)); + edg_wll_StatusToSoap(soap, &s, &(out->stat)); return SOAP_OK; } +SOAP_FMAC5 int SOAP_FMAC6 __lb__QueryJobs( + struct soap *soap, + struct _lbe__QueryJobs *in, + struct _lbe__QueryJobsResponse *out) +{ +} + + #if 0 int edgwll2__QueryJobs( struct soap *soap, @@ -195,3 +206,20 @@ cleanup: } */ #endif + + +/* TODO */ +SOAP_FMAC5 int SOAP_FMAC6 __lb__UserJobs( + struct soap *soap, + struct _lbe__UserJobs *in, + struct _lbe__UserJobsResponse *out) +{ +} + +SOAP_FMAC5 int SOAP_FMAC6 __lb__QueryEvents( + struct soap *soap, + struct _lbe__QueryEvents *in, + struct _lbe__QueryEventsResponse *out) +{ +} + diff --git a/org.glite.lb.server/src/ws_typemap.h b/org.glite.lb.server/src/ws_typemap.h index 10f1442..66a1086 100644 --- a/org.glite.lb.server/src/ws_typemap.h +++ b/org.glite.lb.server/src/ws_typemap.h @@ -1,52 +1,50 @@ #if GSOAP_VERSION >= 20700 -#define UNDEF edgwll__QueryAttr__UNDEF - -#define JOBID edgwll__QueryAttr__JOBID -#define OWNER edgwll__QueryAttr__OWNER -#define STATUS edgwll__QueryAttr__STATUS -#define LOCATION edgwll__QueryAttr__LOCATION -#define DESTINATION edgwll__QueryAttr__DESTINATION -#define DONECODE edgwll__QueryAttr__DONECODE -#define USERTAG edgwll__QueryAttr__USERTAG -#define TIME edgwll__QueryAttr__TIME -#define LEVEL edgwll__QueryAttr__LEVEL -#define HOST edgwll__QueryAttr__HOST -#define SOURCE edgwll__QueryAttr__SOURCE -#define INSTANCE edgwll__QueryAttr__INSTANCE -#define EVENT_TYPE edgwll__QueryAttr__EVENT_TYPE -#define CHKPT_TAG edgwll__QueryAttr__CHKPT_TAG -#define RESUBMITTED edgwll__QueryAttr__RESUBMITTED -#define PARENT edgwll__QueryAttr__PARENT -#define EXITCODE edgwll__QueryAttr__EXITCODE - -#define EQUAL edgwll__QueryOp__EQUAL -#define UNEQUAL edgwll__QueryOp__UNEQUAL -#define LESS edgwll__QueryOp__LESS -#define GREATER edgwll__QueryOp__GREATER -#define WITHIN edgwll__QueryOp__WITHIN - -#define SUBMITTED edgwll__JobStatCode__SUBMITTED -#define WAITING edgwll__JobStatCode__WAITING -#define READY edgwll__JobStatCode__READY -#define SCHEDULED edgwll__JobStatCode__SCHEDULED -#define RUNNING edgwll__JobStatCode__RUNNING -#define DONE edgwll__JobStatCode__DONE -#define CLEARED edgwll__JobStatCode__CLEARED -#define ABORTED edgwll__JobStatCode__ABORTED -#define CANCELLED edgwll__JobStatCode__CANCELLED -#define UNKNOWN edgwll__JobStatCode__UNKNOWN -#define PURGED edgwll__JobStatCode__PURGED - -#define SIMPLE edgwll__StatJobType__SIMPLE -#define DAG edgwll__StatJobType__DAG - -#define OK edgwll__StatDoneCode__OK -#define FAILED edgwll__StatDoneCode__FAILED -#define CANCELLED_ edgwll__StatDoneCode__CANCELLED - -#define CLASSADS edgwll__JobStatFlag__CLASSADS -#define CHILDREN edgwll__JobStatFlag__CHILDREN -#define CHILDSTAT edgwll__JobStatFlag__CHILDSTAT +#define JOBID lbt__queryAttr__JOBID +#define OWNER lbt__queryAttr__OWNER +#define STATUS lbt__queryAttr__STATUS +#define LOCATION lbt__queryAttr__LOCATION +#define DESTINATION lbt__queryAttr__DESTINATION +#define DONECODE lbt__queryAttr__DONECODE +#define USERTAG lbt__queryAttr__USERTAG +#define TIME lbt__queryAttr__TIME +#define LEVEL lbt__queryAttr__LEVEL +#define HOST lbt__queryAttr__HOST +#define SOURCE lbt__queryAttr__SOURCE +#define INSTANCE lbt__queryAttr__INSTANCE +#define EVENTTYPE lbt__queryAttr__EVENTTYPE +#define CHKPTTAG lbt__queryAttr__CHKPTTAG +#define RESUBMITTED lbt__queryAttr__RESUBMITTED +#define PARENT lbt__queryAttr__PARENT +#define EXITCODE lbt__queryAttr__EXITCODE + +#define EQUAL lbt__queryOp__EQUAL +#define UNEQUAL lbt__queryOp__UNEQUAL +#define LESS lbt__queryOp__LESS +#define GREATER lbt__queryOp__GREATER +#define WITHIN lbt__queryOp__WITHIN + +#define SUBMITTED lbt__statName__SUBMITTED +#define WAITING lbt__statName__WAITING +#define READY lbt__statName__READY +#define SCHEDULED lbt__statName__SCHEDULED +#define RUNNING lbt__statName__RUNNING +#define DONE lbt__statName__DONE +#define CLEARED lbt__statName__CLEARED +#define ABORTED lbt__statName__ABORTED +#define CANCELLED lbt__statName__CANCELLED +#define UNKNOWN lbt__statName__UNKNOWN +#define PURGED lbt__statName__PURGED + +#define SIMPLE lbt__jobtype__SIMPLE +#define DAG lbt__jobtype__DAG + +#define OK lbt__doneCode__OK +#define FAILED lbt__doneCode__FAILED +#define CANCELLED_ lbt__doneCode__CANCELLED + +#define CLASSADS lbt__jobFlagsValue__CLASSADS +#define CHILDREN lbt__jobFlagsValue__CHILDREN +#define CHILDSTAT lbt__jobFlagsValue__CHILDSTAT #endif diff --git a/org.glite.lb.server/src/ws_typeref.c.T b/org.glite.lb.server/src/ws_typeref.c.T index 2fb439d..e19553e 100644 --- a/org.glite.lb.server/src/ws_typeref.c.T +++ b/org.glite.lb.server/src/ws_typeref.c.T @@ -3,17 +3,20 @@ #include #include +#include "soap_version.h" #include "bk_ws_H.h" #include "ws_typemap.h" #include "glite/lb/consumer.h" /* XXX: references only, src and dest share pointers */ -void edg_wll_JobStatCodeToSoap(edg_wll_JobStatCode in, enum edgwll__JobStatCode *out) +void edg_wll_JobStatCodeToSoap(edg_wll_JobStatCode in, enum lbt__statName *out) { switch ( in ) { - case EDG_WLL_JOB_UNDEF: *out = UNDEF; break; +/* XXX: these two should never occur */ + case EDG_WLL_NUMBER_OF_STATCODES: + case EDG_WLL_JOB_UNDEF: *out = -1; break; @@@{ for my $stat ($status->getTypesOrdered) { my $u = uc $stat; @@ -26,11 +29,11 @@ void edg_wll_JobStatCodeToSoap(edg_wll_JobStatCode in, enum edgwll__JobStatCode } } -void edg_wll_SoapToJobStatCode(enum edgwll__JobStatCode in, edg_wll_JobStatCode *out) +void edg_wll_SoapToJobStatCode(enum lbt__statName in, edg_wll_JobStatCode *out) { switch ( in ) { - case UNDEF: *out = EDG_WLL_JOB_UNDEF; break; +// case UNDEF: *out = EDG_WLL_JOB_UNDEF; break; @@@{ for my $stat ($status->getTypesOrdered) { my $u = uc $stat; @@ -43,10 +46,11 @@ void edg_wll_SoapToJobStatCode(enum edgwll__JobStatCode in, edg_wll_JobStatCode } } -int edg_wll_StatusToSoap(struct soap *soap,edg_wll_JobStat const *src,struct edgwll__JobStat **dest) +int edg_wll_StatusToSoap(struct soap *soap,edg_wll_JobStat const *src,struct lbt__jobStatus **dest) { - int i; - struct edgwll__JobStat *js; + int i,j; + char *s; + struct lbt__jobStatus *js; if ( !(js = soap_malloc(soap, sizeof(*js))) ) return SOAP_FAULT; memset(js, 0, sizeof(*js)); @@ -59,25 +63,70 @@ int edg_wll_StatusToSoap(struct soap *soap,edg_wll_JobStat const *src,struct edg my $usuc = $_; $usuc = $1.uc($2).$3 while ($usuc =~ /([^_]*)_([a-z])(.*)/); if ($ft eq 'jobid') { - gen "\tjs->$usuc = edg_wlc_JobIdUnparse(src->$_);\n"; + gen "\ts = edg_wlc_JobIdUnparse(src->$_);\n"; + gen "\tjs->$usuc = soap_strdup(soap,s); free(s);\n"; } elsif ($ft eq 'strlist') { - gen "\tfor (i=0; src->$_ && src->$_\[i]; i++);\n"; - gen "\tjs->__size$usuc = i;\n"; - gen "\tjs->$usuc = src->$_;\n"; + gen qq{ +! for (i=0; src->$_ && src->$_\[i]; i++); +! js->__size$usuc = i; +! js->$usuc = soap_malloc(soap,sizeof(char *) * i); +! for (j=0; j$usuc\[j] = soap_strdup(soap,src->$_\[j]); +}; } elsif ($ft eq 'intlist') { - gen "\tjs->__size$usuc = src->$_ ? src->$_\[0] : 0;\n"; - gen "\tjs->$usuc = src->$_ ? src->$_ + 1 : NULL;\n"; - } elsif ($ft eq 'stslist' || $ft eq 'taglist') { -# FIXME - gen "\tjs->__size$usuc = 0;\n"; - gen "\tjs->$usuc = NULL;\n"; + my %fmap = ( children_hist=>'count', stateEnterTimes=>'time'); + gen qq{ +! /* XXX: don't count UNDEF */ +! if (src->$_) { +! struct lbt__${usuc}Item **h = soap_malloc(soap,sizeof *h * (EDG_WLL_NUMBER_OF_STATCODES-1)); +! js->__size$usuc = EDG_WLL_NUMBER_OF_STATCODES-1; +! for (i=1; istate); +! h[i-1]->$fmap{$_} = src->$_\[i]; +! } +! js->$usuc = h; +! } +! else { +! js->__size$usuc = 0; +! js->$usuc = NULL; +! } +}; + } elsif ($ft eq 'taglist') { + gen qq{ +! { +! struct lbt__tagValue *t,**tl = NULL; +! for (i=0; src->$_ && src->$_\[i].tag; i++) { +! t = soap_malloc(soap,sizeof *t); +! tl = realloc(tl,(i+1) * sizeof *tl); +! t->tag = soap_strdup(soap,src->$_\[i].tag); +! t->value = soap_strdup(soap,src->$_\[i].value); +! tl[i] = t; +! } +! js->__size$usuc = i; +! if (i) { +! js->$usuc = soap_malloc(soap,i * sizeof *tl); +! memcpy(js->$usuc,tl,i * sizeof *tl); +! free(tl); +! } else js->$usuc = NULL; +! } +}; + } elsif ($ft eq 'stslist') { + gen qq{ +! for (i=0; src->$_ && src->$_\[i].state; i++); +! if ((js->__size$usuc = i)) { +! js->$usuc = soap_malloc(soap,i * sizeof *js->$usuc); +! for (j=0; j$_+j,&js->$usuc\[j]); +! } +! else js->$usuc = NULL; +}; } elsif ($ft eq 'timeval') { gen "\tjs->$usuc = soap_malloc(soap,sizeof *js->$usuc);\n"; gen "\tjs->$usuc->tvSec = src->$_.tv_sec;\n"; gen "\tjs->$usuc->tvUsec = src->$_.tv_usec;\n"; - } - else { gen "\tjs->$usuc = src->$_;\n"; } + } elsif ($ft eq 'string') { + gen "\tjs->$usuc = soap_strdup(soap,src->$_);\n"; + } else { gen "\tjs->$usuc = src->$_;\n"; } } @@@} @@ -85,8 +134,10 @@ int edg_wll_StatusToSoap(struct soap *soap,edg_wll_JobStat const *src,struct edg return SOAP_OK; } -void edg_wll_SoapToStatus(struct soap *soap,struct edgwll__JobStat const *src,edg_wll_JobStat *dest) +void edg_wll_SoapToStatus(struct soap *soap,struct lbt__jobStatus const *src,edg_wll_JobStat *dest) { + int i; + memset(dest,0,sizeof *dest); edg_wll_SoapToJobStatCode(src->state, &(dest->state)); @@ -101,17 +152,45 @@ void edg_wll_SoapToStatus(struct soap *soap,struct edgwll__JobStat const *src,ed if ($ft eq 'jobid') { gen "\tif (src->$usuc) edg_wlc_JobIdParse(src->$usuc,&dest->$_);\n"; } elsif ($ft eq 'strlist') { + gen "\tfor (i=0; i__size$usuc; i++) soap_unlink(soap,src->$usuc\[i]);\n"; gen "\tsoap_unlink(soap,src->$usuc);\n"; gen "\tdest->$_ = realloc(src->$usuc,sizeof(*dest->$_) * (src->__size$usuc + 1));\n"; gen "\tdest->$_\[src->__size$usuc] = NULL;\n"; } elsif ($ft eq 'intlist') { - gen "\tsoap_unlink(soap,src->$usuc);\n"; - gen "\tdest->$_ = realloc(src->$usuc,sizeof(*dest->$_) * (src->__size$usuc + 1));\n"; - gen "\tmemmove(dest->$_ + 1,dest->$_,sizeof(*dest->$_) * (src->__size$usuc));\n"; - gen "\tdest->$_\[0] = src->__size$usuc;\n"; - } elsif ($ft eq 'stslist' || $ft eq 'taglist') { -# FIXME - gen "\tdest->$_ = NULL;\n"; +# XXX: only EDG_WLL_NUMBER_OF_STATCODES long lists work + my %fmap = ( children_hist=>'count', stateEnterTimes=>'time'); + gen qq { +! if (src->__size$usuc) { +! dest->$_ = calloc(EDG_WLL_NUMBER_OF_STATCODES+1, sizeof *dest->$_); +! dest->$_\[0] = src->__size$usuc; +! for (i=0; i__size$usuc; i++) { +! edg_wll_JobStatCode s; +! edg_wll_SoapToJobStatCode(src->$usuc\[i]->state,&s); +! assert(s>=0); assert(s$_\[s+1] = src->$usuc\[i]->$fmap{$_}; +! } +! } +! else dest->$_ = NULL; +}; + } elsif ($ft eq 'stslist') { + gen qq{ +! if (src->__size$usuc) { +! dest->$_ = calloc(src->__size$usuc + 1,sizeof *dest->$_); +! for (i=0; i__size$usuc; i++) edg_wll_SoapToStatus(soap,src->$usuc\[i],dest->$_ + i); +! } +! else dest->$_ = NULL; +}; + } elsif ($ft eq 'taglist') { + gen qq{ + if (src->__size$usuc) { + dest->$_ = calloc(src->__size$usuc + 1,sizeof *dest->$_); + for (i=0; i__size$usuc; i++) { + soap_unlink(soap,dest->$_\[i].tag = src->$usuc\[i]->tag); + soap_unlink(soap,dest->$_\[i].tag = src->$usuc\[i]->tag); + } + } + else dest->$_ = NULL; +}; } elsif ($ft eq 'timeval') { gen "\tdest->$_.tv_sec = src->$usuc->tvSec;\n"; gen "\tdest->$_.tv_usec = src->$usuc->tvUsec;\n"; @@ -125,7 +204,7 @@ void edg_wll_SoapToStatus(struct soap *soap,struct edgwll__JobStat const *src,ed @@@} } -void edg_wll_SoapToJobStatFlags(const struct edgwll__JobStatFlags *in, int *out) +void edg_wll_SoapToJobStatFlags(const struct lbt__jobFlags *in, int *out) { int i; @@ -139,7 +218,7 @@ void edg_wll_SoapToJobStatFlags(const struct edgwll__JobStatFlags *in, int *out) } } -int edg_wll_JobStatFlagsToSoap(struct soap *soap, const int in, struct edgwll__JobStatFlags *out) +int edg_wll_JobStatFlagsToSoap(struct soap *soap, const int in, struct lbt__jobFlags *out) { int i = 0; @@ -159,11 +238,12 @@ int edg_wll_JobStatFlagsToSoap(struct soap *soap, const int in, struct edgwll__J return SOAP_OK; } -void edg_wll_SoapToAttr(const enum edgwll__QueryAttr in, edg_wll_QueryAttr *out) +#if 0 +void edg_wll_SoapToAttr(const enum lbt__queryAttr in, edg_wll_QueryAttr *out) { switch ( in ) { - case UNDEF: *out = EDG_WLL_QUERY_ATTR_UNDEF; break; +// case UNDEF: *out = EDG_WLL_QUERY_ATTR_UNDEF; break; case JOBID: *out = EDG_WLL_QUERY_ATTR_JOBID; break; case OWNER: *out = EDG_WLL_QUERY_ATTR_OWNER; break; case STATUS: *out = EDG_WLL_QUERY_ATTR_STATUS; break; @@ -172,12 +252,12 @@ void edg_wll_SoapToAttr(const enum edgwll__QueryAttr in, edg_wll_QueryAttr *out) case DONECODE: *out = EDG_WLL_QUERY_ATTR_DONECODE; break; case USERTAG: *out = EDG_WLL_QUERY_ATTR_USERTAG; break; case TIME: *out = EDG_WLL_QUERY_ATTR_TIME; break; - case LEVEL: *out = EDG_WLL_QUERY_ATTR_LEVEL; break; +// case LEVEL: *out = EDG_WLL_QUERY_ATTR_LEVEL; break; case HOST: *out = EDG_WLL_QUERY_ATTR_HOST; break; case SOURCE: *out = EDG_WLL_QUERY_ATTR_SOURCE; break; case INSTANCE: *out = EDG_WLL_QUERY_ATTR_INSTANCE; break; - case EVENT_TYPE: *out = EDG_WLL_QUERY_ATTR_EVENT_TYPE; break; - case CHKPT_TAG: *out = EDG_WLL_QUERY_ATTR_CHKPT_TAG; break; + case EVENTTYPE: *out = EDG_WLL_QUERY_ATTR_EVENT_TYPE; break; + case CHKPTTAG: *out = EDG_WLL_QUERY_ATTR_CHKPT_TAG; break; case RESUBMITTED: *out = EDG_WLL_QUERY_ATTR_RESUBMITTED; break; case PARENT: *out = EDG_WLL_QUERY_ATTR_PARENT; break; case EXITCODE: *out = EDG_WLL_QUERY_ATTR_EXITCODE; break; @@ -185,11 +265,11 @@ void edg_wll_SoapToAttr(const enum edgwll__QueryAttr in, edg_wll_QueryAttr *out) } } -void edg_wll_AttrToSoap(const edg_wll_QueryAttr in, enum edgwll__QueryAttr *out) +void edg_wll_AttrToSoap(const edg_wll_QueryAttr in, enum lbt__queryAttr *out) { switch ( in ) { - case EDG_WLL_QUERY_ATTR_UNDEF: *out = UNDEF; break; + case EDG_WLL_QUERY_ATTR_UNDEF: *out = -1; break; case EDG_WLL_QUERY_ATTR_JOBID: *out = JOBID; break; case EDG_WLL_QUERY_ATTR_OWNER: *out = OWNER; break; case EDG_WLL_QUERY_ATTR_STATUS: *out = STATUS; break; @@ -198,12 +278,12 @@ void edg_wll_AttrToSoap(const edg_wll_QueryAttr in, enum edgwll__QueryAttr *out) case EDG_WLL_QUERY_ATTR_DONECODE: *out = DONECODE; break; case EDG_WLL_QUERY_ATTR_USERTAG: *out = USERTAG; break; case EDG_WLL_QUERY_ATTR_TIME: *out = TIME; break; - case EDG_WLL_QUERY_ATTR_LEVEL: *out = LEVEL; break; +// case EDG_WLL_QUERY_ATTR_LEVEL: *out = LEVEL; break; case EDG_WLL_QUERY_ATTR_HOST: *out = HOST; break; case EDG_WLL_QUERY_ATTR_SOURCE: *out = SOURCE; break; case EDG_WLL_QUERY_ATTR_INSTANCE: *out = INSTANCE; break; - case EDG_WLL_QUERY_ATTR_EVENT_TYPE: *out = EVENT_TYPE; break; - case EDG_WLL_QUERY_ATTR_CHKPT_TAG: *out = CHKPT_TAG; break; + case EDG_WLL_QUERY_ATTR_EVENT_TYPE: *out = EVENTTYPE; break; + case EDG_WLL_QUERY_ATTR_CHKPT_TAG: *out = CHKPTTAG; break; case EDG_WLL_QUERY_ATTR_RESUBMITTED: *out = RESUBMITTED; break; case EDG_WLL_QUERY_ATTR_PARENT: *out = PARENT; break; case EDG_WLL_QUERY_ATTR_EXITCODE: *out = EXITCODE; break; @@ -211,7 +291,7 @@ void edg_wll_AttrToSoap(const edg_wll_QueryAttr in, enum edgwll__QueryAttr *out) } } -void edg_wll_SoapToQueryOp(const enum edgwll__QueryOp in, edg_wll_QueryOp *out) +void edg_wll_SoapToQueryOp(const enum lbt__queryOp in, edg_wll_QueryOp *out) { switch ( in ) { @@ -223,7 +303,7 @@ void edg_wll_SoapToQueryOp(const enum edgwll__QueryOp in, edg_wll_QueryOp *out) } } -void edg_wll_QueryOpToSoap(const edg_wll_QueryOp in, enum edgwll__QueryOp *out) +void edg_wll_QueryOpToSoap(const edg_wll_QueryOp in, enum lbt__queryOp *out) { switch ( in ) { @@ -237,7 +317,7 @@ void edg_wll_QueryOpToSoap(const edg_wll_QueryOp in, enum edgwll__QueryOp *out) int edg_wll_SoapToQueryVal( const edg_wll_QueryAttr attr, - const struct edgwll__QueryRecValue *in, + const struct lbt__queryRecValue *in, union edg_wll_QueryVal *out) { assert(in); assert(out); @@ -261,7 +341,7 @@ int edg_wll_QueryValToSoap( struct soap *soap, const edg_wll_QueryAttr attr, const union edg_wll_QueryVal *in, - struct edgwll__QueryRecValue *out) + struct lbt__queryRecValue *out) { assert(in); assert(out); memset(out, 0, sizeof(*out)); @@ -305,8 +385,8 @@ int edg_wll_QueryValToSoap( } int edg_wll_SoapToQueryRec( - const enum edgwll__QueryAttr attr, - const struct edgwll__QueryRec *in, + const edg_wll_QueryAttr attr, + const struct lbt__queryRecord *in, edg_wll_QueryRec *out) { assert(attr); assert(in); assert(out); @@ -342,9 +422,9 @@ err: int edg_wll_QueryRecToSoap( struct soap *soap, const edg_wll_QueryRec *in, - struct edgwll__QueryRec **out) + struct lbt__queryRecord **out) { - struct edgwll__QueryRec *qr; + struct lbt__queryRecord *qr; assert(in); assert(out); @@ -381,7 +461,7 @@ ret: return SOAP_OK; } -int edg_wll_SoapToQueryConds(const struct edgwll__QueryCondition *in, edg_wll_QueryRec **out) +int edg_wll_SoapToQueryConds(const struct lbt__queryConditions *in, edg_wll_QueryRec **out) { int i; edg_wll_QueryRec *qr; @@ -405,10 +485,10 @@ err: int edg_wll_QueryCondsToSoap( struct soap *soap, const edg_wll_QueryRec *in, - struct edgwll__QueryCondition **out) + struct lbt__queryConditions **out) { int i; - struct edgwll__QueryCondition *qc; + struct lbt__queryConditions *qc; assert(out); @@ -429,7 +509,7 @@ ret: return SOAP_OK; } -int edg_wll_SoapToQueryCondsExt(const struct edgwll__QueryConditions *in, edg_wll_QueryRec ***out) +int edg_wll_SoapToQueryCondsExt(const struct lbt__queryConditions *in, edg_wll_QueryRec ***out) { int i; edg_wll_QueryRec **qr; @@ -459,10 +539,10 @@ err: int edg_wll_QueryCondsExtToSoap( struct soap *soap, const edg_wll_QueryRec **in, - struct edgwll__QueryConditions **out) + struct lbt__queryConditions **out) { int i; - struct edgwll__QueryConditions *qc; + struct lbt__queryConditions *qc; assert(out); @@ -486,7 +566,7 @@ int edg_wll_JobsQueryResToSoap( struct soap *soap, const edg_wlc_JobId *jobs, const edg_wll_JobStat *states, - struct edgwll2__QueryJobsResponse *out) + struct _lbe__QueryJobsResponse *out) { int i; @@ -520,3 +600,5 @@ int edg_wll_JobsQueryResToSoap( return SOAP_OK; } + +#endif diff --git a/org.glite.lb.server/src/ws_typeref.h b/org.glite.lb.server/src/ws_typeref.h index 3202547..0a449ab 100644 --- a/org.glite.lb.server/src/ws_typeref.h +++ b/org.glite.lb.server/src/ws_typeref.h @@ -5,61 +5,61 @@ extern "C" { #endif -extern void edg_wll_JobStatCodeToSoap(edg_wll_JobStatCode, enum edgwll__JobStatCode *); -extern void edg_wll_SoapToJobStatCode(enum edgwll__JobStatCode, edg_wll_JobStatCode *); +extern void edg_wll_JobStatCodeToSoap(edg_wll_JobStatCode, enum lbt__statName *); +extern void edg_wll_SoapToJobStatCode(enum lbt__statName, edg_wll_JobStatCode *); -extern void edg_wll_StatusToSoap(struct soap *, edg_wll_JobStat const *, struct edgwll__JobStat **); -extern void edg_wll_SoapToStatus(struct soap *, struct edgwll__JobStat const *, edg_wll_JobStat **); +extern void edg_wll_StatusToSoap(struct soap *, edg_wll_JobStat const *, struct lbt__jobStatus **); +extern void edg_wll_SoapToStatus(struct soap *, struct lbt__jobStatus const *, edg_wll_JobStat *); -extern void edg_wll_SoapToJobStatFlags(const struct edgwll__JobStatFlags *, int *); -extern int edg_wll_JobStatFlagsToSoap(struct soap *, const int, struct edgwll__JobStatFlags *); +extern void edg_wll_SoapToJobStatFlags(struct lbt__jobFlags const *, int *); +extern int edg_wll_JobStatFlagsToSoap(struct soap *, const int, struct lbt__jobFlags *); -extern void edg_wll_SoapToAttr(const enum edgwll__QueryAttr, edg_wll_QueryAttr *); -extern void edg_wll_AttrToSoap(const edg_wll_QueryAttr, enum edgwll__QueryAttr *); +extern void edg_wll_SoapToAttr(const enum lbt__queryAttr, edg_wll_QueryAttr *); +extern void edg_wll_AttrToSoap(const edg_wll_QueryAttr, enum lbt__queryAttr *); extern void edg_wll_SoapToQueryOp( - const enum edgwll__QueryOp, + const enum lbt__queryOp, edg_wll_QueryOp *); extern void edg_wll_QueryOpToSoap( const edg_wll_QueryOp, - enum edgwll__QueryOp *); + enum lbt__queryOp *); extern int edg_wll_SoapToQueryVal( const edg_wll_QueryAttr, - const struct edgwll__QueryRecValue *, + const struct lbt__queryRecValue *, union edg_wll_QueryVal *); extern int edg_wll_QueryValToSoap(struct soap *, const edg_wll_QueryAttr, const union edg_wll_QueryVal *, - struct edgwll__QueryRecValue *); + struct lbt__queryRecValue *); extern int edg_wll_SoapToQueryRec( - const enum edgwll__QueryAttr, - const struct edgwll__QueryRec *, + const enum lbt__queryAttr, + const struct lbt__queryRecord *, edg_wll_QueryRec *); extern int edg_wll_QueryRecToSoap(struct soap *, const edg_wll_QueryRec *, - struct edgwll__QueryRec *); + struct lbt__queryRecord *); extern int edg_wll_SoapToQueryConds( - const struct edgwll__QueryCondition *, + const struct lbt__queryConditions *, edg_wll_QueryRec **); extern int edg_wll_QueryCondsToSoap(struct soap *, const edg_wll_QueryRec *, - struct edgwll__QueryCondition **); + struct lbt__queryConditions **); extern int edg_wll_SoapToQueryCondsExt( - const struct edgwll__QueryConditions *, + const struct lbt__queryConditions *, edg_wll_QueryRec ***); extern int edg_wll_QueryCondsExtToSoap(struct soap *, const edg_wll_QueryRec **, - struct edgwll__QueryConditions **); + struct lbt__queryConditions **); extern int edg_wll_JobsQueryResToSoap(struct soap *, edg_wlc_JobId *, edg_wll_JobStat *, - struct edgwll2__QueryJobsResponse *); + struct _lbe__QueryJobsResponse *); #ifdef __cplusplus } -- 1.8.2.3