From 700673bb84636635a75c53808e0af464ffd5e6a7 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Ji=C5=99=C3=AD=20=C5=A0kr=C3=A1bal?= Date: Fri, 11 Mar 2005 07:53:48 +0000 Subject: [PATCH] - LB Proxy purge basics --- org.glite.lb.server/src/db_store.c | 13 +++++++++++++ org.glite.lb.server/src/purge.h | 8 ++++++++ org.glite.lb.server/src/srv_purge.c | 13 +++++++++++++ 3 files changed, 34 insertions(+) diff --git a/org.glite.lb.server/src/db_store.c b/org.glite.lb.server/src/db_store.c index 6887473..12e8eb0 100644 --- a/org.glite.lb.server/src/db_store.c +++ b/org.glite.lb.server/src/db_store.c @@ -73,6 +73,19 @@ db_store(edg_wll_Context ctx,char *ucs, char *event) */ if ( ev->any.type != EDG_WLL_EVENT_REGJOB && edg_wll_EventSendProxy(ctx, ev->any.jobId, event) ) goto err; + + /* LB proxy purge + * XXX: Set propper set of states! + * TODO: Do the set of states configurable? + */ + switch ( ev->any.type ) { + case EDG_WLL_EVENT_CLEAR: + case EDG_WLL_EVENT_ABORT: + case EDG_WLL_EVENT_CANCEL: + case EDG_WLL_EVENT_DONE: + edg_wll_PurgeServerProxy(ctx, ev->any.jobId); + break; + } } else if ( newstat.state ) { edg_wll_NotifMatch(ctx, &newstat); edg_wll_FreeStatus(&newstat); diff --git a/org.glite.lb.server/src/purge.h b/org.glite.lb.server/src/purge.h index 8841e12..91adb03 100644 --- a/org.glite.lb.server/src/purge.h +++ b/org.glite.lb.server/src/purge.h @@ -10,6 +10,14 @@ int edg_wll_PurgeServer( const edg_wll_PurgeRequest *request ); +/** LB Proxy purge implementation + * it gives no output - purge only one job from LB Proxy DB + */ +int edg_wll_PurgeServerProxy( + edg_wll_Context ctx, + edg_wlc_JobId job +); + #define FILE_TYPE_ANY "" #define FILE_TYPE_PURGE "purge" #define FILE_TYPE_DUMP "dump" diff --git a/org.glite.lb.server/src/srv_purge.c b/org.glite.lb.server/src/srv_purge.c index 58a843d..39179cd 100644 --- a/org.glite.lb.server/src/srv_purge.c +++ b/org.glite.lb.server/src/srv_purge.c @@ -182,6 +182,19 @@ int edg_wll_CreateFileStorage(edg_wll_Context ctx, char *file_type, char *prefix return retfd; } +int edg_wll_PurgeServerProxy(edg_wll_Context ctx, edg_wlc_JobId job) +{ + switch ( purge_one(ctx, job, -1, 1) ) { + case 0: + case ENOENT: + edg_wll_ResetError(ctx); + return 0; + + default: + return -1; + } +} + int edg_wll_PurgeServer(edg_wll_Context ctx,const edg_wll_PurgeRequest *request) { int i,parse = 0,dumpfile = -1; -- 1.8.2.3