From 3fc575470dcd683927a1cb1a49218cc44af89d41 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Ale=C5=A1=20K=C5=99enek?= Date: Wed, 18 May 2005 06:25:07 +0000 Subject: [PATCH] half way to use new WSDL --- org.glite.jp.primary/src/bones_server.c | 6 ++ org.glite.jp.primary/src/soap_ops.c | 108 +++++++++++++++++--------------- 2 files changed, 65 insertions(+), 49 deletions(-) diff --git a/org.glite.jp.primary/src/bones_server.c b/org.glite.jp.primary/src/bones_server.c index 207ba86..077b5e7 100644 --- a/org.glite.jp.primary/src/bones_server.c +++ b/org.glite.jp.primary/src/bones_server.c @@ -44,6 +44,8 @@ static glite_jp_context_t ctx; static int call_opts(glite_jp_context_t,char *,char *,int (*)(glite_jp_context_t,int,char **)); +char *glite_jp_default_namespace; + int main(int argc, char *argv[]) { int one = 1,opt; @@ -95,6 +97,10 @@ int main(int argc, char *argv[]) srand48(time(NULL)); /* feed id generation */ + for (i=0; jpps_namespaces[i].id && strcmp(jpps_namespaces[i].id,"jpsrv"); i++); + assert(jpps_namespaces[i].id); + glite_jp_default_namespace = jpps_namespaces[i].ns; + stab.conn = socket(PF_INET, SOCK_STREAM, 0); if (stab.conn < 0) { perror("socket"); diff --git a/org.glite.jp.primary/src/soap_ops.c b/org.glite.jp.primary/src/soap_ops.c index 205aeb5..822d6fc 100644 --- a/org.glite.jp.primary/src/soap_ops.c +++ b/org.glite.jp.primary/src/soap_ops.c @@ -16,10 +16,10 @@ #include "file_plugin.h" #include "builtin_plugins.h" -static struct jptype__GenericJPFaultType *jp2s_error(struct soap *soap, +static struct jptype__genericFault *jp2s_error(struct soap *soap, const glite_jp_error_t *err) { - struct jptype__GenericJPFaultType *ret = NULL; + struct jptype__genericFault *ret = NULL; if (err) { ret = soap_malloc(soap,sizeof *ret); memset(ret,0,sizeof *ret); @@ -36,12 +36,12 @@ static void err2fault(const glite_jp_context_t ctx,struct soap *soap) { char *et; struct SOAP_ENV__Detail *detail = soap_malloc(soap,sizeof *detail); - struct _GenericJPFault *f = soap_malloc(soap,sizeof *f); + struct _genericFault *f = soap_malloc(soap,sizeof *f); - f->jptype__GenericJPFault = jp2s_error(soap,ctx->error); + f->jpelem__genericFault = jp2s_error(soap,ctx->error); - detail->__type = SOAP_TYPE__GenericJPFault; + detail->__type = SOAP_TYPE__genericFault; #if GSOAP_VERSION >= 20700 detail->fault = f; #else @@ -66,7 +66,7 @@ static glite_jp_fileclass_t s2jp_fileclass(enum jptype__UploadClass class) } */ -static void s2jp_tag(const struct jptype__TagValue *stag,glite_jp_tagval_t *jptag) +static void s2jp_tag(const struct jptype__tagValue *stag,glite_jp_tagval_t *jptag) { memset(jptag,0,sizeof *jptag); jptag->name = strdup(stag->name); @@ -82,41 +82,34 @@ static void s2jp_tag(const struct jptype__TagValue *stag,glite_jp_tagval_t *jpta #define CONTEXT_FROM_SOAP(soap,ctx) glite_jp_context_t ctx = (glite_jp_context_t) ((soap)->user) -SOAP_FMAC5 int SOAP_FMAC6 jpsrv__RegisterJob( +SOAP_FMAC5 int SOAP_FMAC6 __jpsrv__RegisterJob( struct soap *soap, - char *job, - struct jpsrv__RegisterJobResponse *response) + struct _jpelem__RegisterJob *in, + struct _jpelem__RegisterJobResponse *out) { CONTEXT_FROM_SOAP(soap,ctx); - char *owner = glite_jp_peer_name(ctx); glite_jp_attrval_t owner_val[2]; - if (glite_jppsbe_register_job(ctx,job,owner)) { + if (glite_jppsbe_register_job(ctx,in->job,in->owner)) { err2fault(ctx,soap); - free(owner); return SOAP_FAULT; } owner_val[0].attr.type = GLITE_JP_ATTR_OWNER; - owner_val[0].value.s = owner; + owner_val[0].value.s = in->owner; owner_val[1].attr.type = GLITE_JP_ATTR_UNDEF; /* XXX: errrors should be ingored but not silently */ - glite_jpps_match_attr(ctx,job,owner_val); - free(owner); + glite_jpps_match_attr(ctx,in->job,owner_val); return SOAP_OK; } -SOAP_FMAC5 int SOAP_FMAC6 jpsrv__StartUpload( +SOAP_FMAC5 int SOAP_FMAC6 __jpsrv__StartUpload( struct soap *soap, - char *job, - char *class, - char *name, - time_t commit_before, - char *content_type, - struct jpsrv__StartUploadResponse *response) + struct _jpelem__StartUpload *in, + struct _jpelem__StartUploadResponse *out) { CONTEXT_FROM_SOAP(soap,ctx); char *destination; @@ -127,7 +120,7 @@ SOAP_FMAC5 int SOAP_FMAC6 jpsrv__StartUpload( glite_jp_clear_error(ctx); memset(&err,0,sizeof err); - switch (glite_jpps_fplug_lookup(ctx,class,&pd)) { + switch (glite_jpps_fplug_lookup(ctx,in->class_,&pd)) { case ENOENT: err.code = ENOENT; err.source = __FUNCTION__; @@ -141,10 +134,10 @@ SOAP_FMAC5 int SOAP_FMAC6 jpsrv__StartUpload( return SOAP_FAULT; } - for (i=0; pd[0]->uris[i] && strcmp(pd[0]->uris[i],class); i++); + for (i=0; pd[0]->uris[i] && strcmp(pd[0]->uris[i],in->class_); i++); assert(pd[0]->uris[i]); - if (glite_jppsbe_start_upload(ctx,job,pd[0]->classes[i],name,content_type, + if (glite_jppsbe_start_upload(ctx,job,pd[0]->classes[i],in->name,in->content_type, &destination,&commit_before)) { err2fault(ctx,soap); @@ -152,18 +145,18 @@ SOAP_FMAC5 int SOAP_FMAC6 jpsrv__StartUpload( return SOAP_FAULT; } - response->destination = soap_strdup(soap,destination); + out->destination = soap_strdup(soap,destination); free(destination); - response->commitBefore = commit_before; + out->commitBefore = commit_before; free(pd); return SOAP_OK; } -SOAP_FMAC5 int SOAP_FMAC6 jpsrv__CommitUpload( +SOAP_FMAC5 int SOAP_FMAC6 __jpsrv__CommitUpload( struct soap *soap, - char *destination, - struct jpsrv__CommitUploadResponse *response) + struct _jpelem__CommitUpload *in, + struct _jpelem__CommitUploadResponse *out) { CONTEXT_FROM_SOAP(soap,ctx); char *job,*class,*name; @@ -176,7 +169,7 @@ SOAP_FMAC5 int SOAP_FMAC6 jpsrv__CommitUpload( } /* XXX: should not fail when commit_upload was OK */ - glite_jppsbe_destination_info(ctx,destination,&job,&class,&name); + glite_jppsbe_destination_info(ctx,in->destination,&job,&class,&name); /* XXX: ignore errors but don't fail silenty */ glite_jpps_match_file(ctx,job,class,name); @@ -186,11 +179,10 @@ SOAP_FMAC5 int SOAP_FMAC6 jpsrv__CommitUpload( return SOAP_OK; } -SOAP_FMAC5 int SOAP_FMAC6 jpsrv__RecordTag( +SOAP_FMAC5 int SOAP_FMAC6 __jpsrv__RecordTag( struct soap *soap, - char *job, - struct jptype__TagValue *tag, - struct jpsrv__RecordTagResponse *response) + struct _jpelem__RecordTag *in, + struct _jpelem__RecordTagResponse *out) { CONTEXT_FROM_SOAP(soap,ctx); void *file_be,*file_p; @@ -204,7 +196,7 @@ SOAP_FMAC5 int SOAP_FMAC6 jpsrv__RecordTag( * just one uri/class */ if (glite_jpps_fplug_lookup(ctx,GLITE_JP_FILETYPE_TAGS,&pd) - || glite_jppsbe_open_file(ctx,job,pd[0]->classes[0],NULL, + || glite_jppsbe_open_file(ctx,in->job,pd[0]->classes[0],NULL, O_WRONLY|O_CREAT,&file_be) ) { free(pd); @@ -212,7 +204,7 @@ SOAP_FMAC5 int SOAP_FMAC6 jpsrv__RecordTag( return SOAP_FAULT; } - s2jp_tag(tag,&mytag); + s2jp_tag(in->tag,&mytag); /* XXX: assuming tag plugin handles just one type */ if (pd[0]->ops.open(pd[0]->fpctx,file_be,GLITE_JP_FILETYPE_TAGS,&file_p) @@ -234,14 +226,36 @@ SOAP_FMAC5 int SOAP_FMAC6 jpsrv__RecordTag( } /* XXX: ignore errors but don't fail silenty */ - glite_jpps_match_tag(ctx,job,&mytag); + glite_jpps_match_tag(ctx,in->job,&mytag); free(pd); return SOAP_OK; } -static void s2jp_attr(const struct jptype__Attribute *in,glite_jp_attr_t *out) +extern char *glite_jp_default_namespace; + +static void s2jp_attr(const char *in,glite_jp_attr_t *out) { + char *buf = strdup(in),*name = strchr(buf,':'),*ns = NULL; + + if (name) { + ns = buf; + *name++ = 0; + } + else { + name = buf; + ns = glite_jp_default_namespace; + } + + if (strcmp(ns,glite_jp_default_namespace) { + out->type = GLITE_JP_ATTR_GENERIC; + out->name = strdup(name); + out->namespace = strdup(namespace); + } else if (!strcmp(name,"owner") out->type = GLITE_JP_ATTR_OWNER; + else if (!strcmp(name,"time") out->type = GLITE_JP_ATTR_OWNER; +/* FIXME: tagy */ + else if (!strcmp(name,"owner") out->type = GLITE_JP_ATTR_OWNER; + switch (in->type) { case OWNER: out->type = GLITE_JP_ATTR_OWNER; break; case TIME: out->type = GLITE_JP_ATTR_TIME; @@ -290,12 +304,8 @@ static void s2jp_query(const struct jptype__PrimaryQueryElement *in, glite_jp_qu SOAP_FMAC5 int SOAP_FMAC6 jpsrv__FeedIndex( struct soap *soap, - char *destination, - struct jptype__Attributes *attributes, - struct jptype__PrimaryQuery *query, - enum xsd__boolean history, - enum xsd__boolean continuous, - struct jpsrv__FeedIndexResponse *response) + struct _jpelem__FeedIndex *in, + struct _jpelem__FeedIndexResponse *out) { /* deferred processing: return feed_id to the index server first, @@ -310,14 +320,14 @@ SOAP_FMAC5 int SOAP_FMAC6 jpsrv__FeedIndex( time_t expires = 0; int ret = SOAP_OK; - glite_jp_attr_t *attrs = calloc(attributes->__sizeitem+1,sizeof *attrs); - glite_jp_query_rec_t *qry = calloc(query->__sizeitem+1,sizeof *qry); + glite_jp_attr_t *attrs = calloc(in->__sizeattributes+1,sizeof *attrs); + glite_jp_query_rec_t *qry = calloc(in->__sizeconditions+1,sizeof *qry); int i; glite_jp_clear_error(ctx); - for (i = 0; i__sizeitem; i++) s2jp_attr(attributes->item[i],attrs+i); - for (i = 0; i__sizeitem; i++) s2jp_query(query->item[i],qry+i); + for (i = 0; i__sizeattributes; i++) s2jp_attr(in->attributes[i],attrs+i); + for (i = 0; i__sizeconditions; i++) s2jp_query(in->conditions[i],qry+i); if (history) { if (glite_jpps_run_feed(ctx,destination,attrs,qry,&feed_id)) { -- 1.8.2.3