GLOBUS_CFLAGS:=-I${globus_prefix}/include/${nothrflavour}
DEBUG:=-W -Wall -g -O0
-CPPFLAGS:=-DDEBUG -D_GNU_SOURCE -I. -I${top_srcdir}/interface -I${top_srcdir}/src -I${gsoap_prefix}/include -I${gsoap_prefix} -I${stagedir}/include ${GLOBUS_CFLAGS} -I${mysql_prefix}/include -I${mysql_prefix}/include/mysql -I${gsoap_prefix}/include
+CPPFLAGS:=-DDEBUG -D_GNU_SOURCE -I. -I${top_srcdir}/interface -I${top_srcdir}/src -I${gsoap_prefix}/include -I${gsoap_prefix} -I${stagedir}/include ${GLOBUS_CFLAGS} -I${gsoap_prefix}/include
CFLAGS:=${DEBUG} ${CFLAGS}
LDFLAGS:=-L${stagedir}/lib
int feed_caller(glite_jpis_context_t isctx, glite_jp_is_conf *conf) {
char *PS_URL;
long int uniqueid;
- int i;
+ int i, ok;
// dirty hack - try quicker several times first
glite_jp_clear_error(isctx->jpctx);
switch (glite_jpis_lockUninitializedFeed(isctx,&uniqueid,&PS_URL)) {
case 0:
+ ok = 0;
for (i = 0; i < 10; i++) {
// contact PS server, ask for data, save
// feedId and expiration to DB and unlock feed
if (MyFeedIndex(isctx, conf, uniqueid, PS_URL) != 0) {
// error when connecting to PS
printf("[%d] %s: %s (%s), reconnecting later\n", getpid(), __FUNCTION__, isctx->jpctx->error->desc, isctx->jpctx->error->source);
- if (i + 1 < 10) glite_jpis_unlockFeed(isctx, uniqueid);
- else glite_jpis_tryReconnectFeed(isctx, uniqueid, time(NULL) + RECONNECT_TIME);
} else {
free(PS_URL);
+ ok = 1;
break;
}
}
+ if (!ok) glite_jpis_tryReconnectFeed(isctx, uniqueid, time(NULL) + RECONNECT_TIME);
sleep(RECONNECT_TIME_QUICK);
return 1;
if ((ret = glite_jp_db_prepare(jpctx, "UPDATE feeds SET locked=1 WHERE (locked = 0) AND (uniqueid = ?)", &isctx->lock_feed_stmt, myparam, NULL)) != 0) goto fail;
// sql command: assign the feed (via uniqueid)
- glite_jp_db_create_params(&myparam, 3,
+ glite_jp_db_create_params(&myparam, 4,
GLITE_JP_DB_TYPE_CHAR, isctx->param_feedid, &isctx->param_feedid_len,
GLITE_JP_DB_TYPE_DATETIME, &isctx->param_expires,
+ GLITE_JP_DB_TYPE_INT, &isctx->param_state,
GLITE_JP_DB_TYPE_INT, &isctx->param_uniqueid);
- if ((ret = glite_jp_db_prepare(jpctx, "UPDATE feeds SET feedid=?, expires=? WHERE (uniqueid=?)", &isctx->init_feed_stmt, myparam, NULL)) != 0) goto fail;
+ if ((ret = glite_jp_db_prepare(jpctx, "UPDATE feeds SET feedid=?, expires=?, state=? WHERE (uniqueid=?)", &isctx->init_feed_stmt, myparam, NULL)) != 0) goto fail;
// sql command: unlock the feed (via uniqueid)
glite_jp_db_create_params(&myparam, 1, GLITE_JP_DB_TYPE_INT, &isctx->param_uniqueid);
/* Store feed ID and expiration time returned by PS for locked feed. */
-int glite_jpis_initFeed(glite_jpis_context_t ctx, long int uniqueid, char *feedId, time_t feedExpires)
+int glite_jpis_initFeed(glite_jpis_context_t ctx, long int uniqueid, char *feedId, time_t feedExpires, int status)
{
int ret;
GLITE_JPIS_PARAM(ctx->param_feedid, ctx->param_feedid_len, feedId);
glite_jp_db_set_time(ctx->param_expires, feedExpires);
ctx->param_uniqueid = uniqueid;
+ ctx->param_state = status;
ret = glite_jp_db_execute(ctx->init_feed_stmt);
lprintf("initializing feed, uniqueid=%li, result=%d\n", uniqueid, ret);
void glite_jpis_free_db(glite_jpis_context_t ctx);
int glite_jpis_lockUninitializedFeed(glite_jpis_context_t ctx, long int *uinqueid, char **PS_URL);
-int glite_jpis_initFeed(glite_jpis_context_t ctx, long int uniqueid, char *feedId, time_t feedExpires);
+int glite_jpis_initFeed(glite_jpis_context_t ctx, long int uniqueid, char *feedId, time_t feedExpires, int status);
int glite_jpis_unlockFeed(glite_jpis_context_t ctx, long int uniqueid);
int glite_jpis_tryReconnectFeed(glite_jpis_context_t ctx, long int uniqueid, time_t reconn_time);
// struct jptype__primaryQuery query;
// struct jptype__stringOrBlob value;
// struct xsd__base64Binary blob;
- int i, dest_index;
+ int i, dest_index, status;
struct soap *soap = soap_new();
glite_gsplugin_Context plugin_ctx;
glite_jp_error_t err;
goto err;
}
else {
+ status = (conf->feeds[dest_index]->history ? GLITE_JP_IS_STATE_HIST : 0) | (conf->feeds[dest_index]->continuous ? GLITE_JP_IS_STATE_CONT : 0);
lprintf("(%ld) FeedId: %s\n", uniqueid, out.feedId);
lprintf("(%ld) Expires: %s", uniqueid, ctime(&out.feedExpires));
- glite_jpis_initFeed(ctx, uniqueid, out.feedId, out.feedExpires);
+ glite_jpis_initFeed(ctx, uniqueid, out.feedId, out.feedExpires, status);
glite_jpis_unlockFeed(ctx, uniqueid);
}