From 4662b80cec4d4c50f1c516ac094d202f5e448791 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Ale=C5=A1=20K=C5=99enek?= Date: Thu, 7 Jul 2005 15:05:09 +0000 Subject: [PATCH] extract attributes from file --- org.glite.jp.primary/src/feed.c | 39 ++++++++++++++++++++++++++++++++++-- org.glite.jp.primary/src/is_client.c | 3 ++- org.glite.jp.primary/src/is_client.h | 1 + 3 files changed, 40 insertions(+), 3 deletions(-) create mode 100644 org.glite.jp.primary/src/is_client.h diff --git a/org.glite.jp.primary/src/feed.c b/org.glite.jp.primary/src/feed.c index 5d39565..ba9e2e1 100644 --- a/org.glite.jp.primary/src/feed.c +++ b/org.glite.jp.primary/src/feed.c @@ -11,7 +11,7 @@ #include "feed.h" #include "file_plugin.h" #include "builtin_plugins.h" - +#include "is_client.h" /* * seconds before feed expires: should be @@ -190,9 +190,21 @@ int glite_jpps_match_file( int pi; void *bh = NULL; int ret; + struct jpfeed *f = ctx->feeds; + + int nvals = 0,j,i,attrs[GLITE_JP_ATTR__LAST]; + glite_jp_attrtype_t attrl[GLITE_JP_ATTR__LAST]; + glite_jp_attrval_t *vals = NULL,*oneval; fprintf(stderr,"%s: %s %s %s\n",__FUNCTION__,job,class,name); + memset(attrs,0,sizeof attrs); + + for (;f;f=f->next) for (i=0; f->attrs[i].type; i++) attrs[i] = 1; + j = 0; + for (i=1; iops.attr(pd[pi]->fpctx,ph,attrl[i],&oneval)) { + /* XXX: ignore error */ + for (j=0; oneval[j].attr; j++); + vals = realloc(vals,(nvals+j+1) * sizeof *vals); + memcpy(vals+nvals,oneval,(j+1) * sizeof *vals); + nvals += j; + } pd[pi]->ops.close(pd[pi]->fpctx,ph); } } + for (f = ctx->feeds; f; f=f->next) { + glite_jp_attrval_t * fattr = malloc((nvals+1) * sizeof *fattr); + int attri[GLITE_JP_ATTR__LAST]; + + memset(attri,0,sizeof attri); + for (i=0; f->attrs[i].attr; i++) attri[f->attrs[i].attr] = 1; + + j = 0; + for (i=0; idestination,job,fattr); + } + if (bh) glite_jppsbe_close_file(ctx,bh); free(pd); diff --git a/org.glite.jp.primary/src/is_client.c b/org.glite.jp.primary/src/is_client.c index 8a747ef..237fb4c 100644 --- a/org.glite.jp.primary/src/is_client.c +++ b/org.glite.jp.primary/src/is_client.c @@ -8,6 +8,7 @@ #include "glite/jp/types.h" #include "feed.h" +#include "is_client.h" /* FIXME #include "jpis_H.h" #include "jpis_.nsmap" @@ -17,7 +18,7 @@ int glite_jpps_single_feed( glite_jp_context_t ctx, const char *destination, const char *job, - const glite_jp_attrval_t attrs[] + glite_jp_attrval_t const * const attrs[] ) { /* TODO: really call JP Index server (via interlogger) */ diff --git a/org.glite.jp.primary/src/is_client.h b/org.glite.jp.primary/src/is_client.h new file mode 100644 index 0000000..a15d998 --- /dev/null +++ b/org.glite.jp.primary/src/is_client.h @@ -0,0 +1 @@ +int glite_jpps_single_feed(glite_jp_context_t,const char *,const char *,glite_jp_attrval_t const *); -- 1.8.2.3