-include Makefile.inc
-VPATH=${top_srcdir}/src:${top_srcdir}/examples:${top_srcdir}/project:${stagedir}/interface
+VPATH=${top_srcdir}/src:${top_srcdir}/examples:${top_srcdir}/project:${stagedir}/interface:${top_srcdir}/build
GLOBUS_LIBS:=-L${globus_prefix}/lib \
-lglobus_common_${nothrflavour} \
LINKXX:=libtool --mode=link ${CXX} ${LDFLAGS}
INSTALL:=libtool --mode=install install
+HDRS:=jpimporter.h
+
+LIBOBJS:=jpimp_ctx.o jpimp_lib.o
+
+LIBTHROBJS:=${LIBOBJS:.o=.thr.o}
+LIBLOBJS:=${LIBOBJS:.o=.lo}
+
+LIB:=libglite_jp_importer_${nothrflavour}.la
+THRLIB:=libglite_jp_importer_${thrflavour}.la
+
daemon:=glite-jp-importer
wsprefix:=jpps_
OBJS:=${SRCS:.c=.o}
EXA_OBJS:=${EXA_SRCS:.c=.o}
-COMMONLIB:=-lglite_jp_common
GSOAPLIB:=-lglite_security_gsoap_plugin_${nothrflavour} -lglite_security_gss_${nothrflavour} \
-L${gsoap_prefix}/lib -lgsoap${GSOAP_DEBUG} -L${ares_prefix}/lib -lares
LBMAILDIRLIB:=-lglite_lb_maildir
+version_info=-version-info `echo ${version} | cut -d. -f1,2 | tr . :`
+
default all: compile
-compile: ${daemon}
+compile: ${daemon} ${LIB}
+
+${LIB}: ${LIBOBJS}
+ ${LINK} ${version_info} -o $@ ${LIBLOBJS} -rpath ${glite_location}/lib ${LBMAILDIRLIB}
${daemon}: ${OBJS}
- ${LINK} -o $@ ${OBJS} ${LBMAILDIRLIB} ${COMMONLIB} ${GSOAPLIB} ${GLOBUS_LIBS}
+ ${LINK} -o $@ ${OBJS} ${LBMAILDIRLIB} ${GSOAPLIB} ${GLOBUS_LIBS}
JobProvenancePS.xh: %.xh: %.wsdl JobProvenanceTypes.wsdl typemap.dat
--- /dev/null
+#ifndef __GLITE_JPIMPORTER_CONTEXT_INT
+#define __GLITE_JPIMPORTER_CONTEXT_INT
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+struct _glite_jpimp_context_t {
+ int errCode;
+ char *errDesc;
+
+ char *jpps;
+ char *lbmd_dir;
+};
+
+extern int glite_jpimp_SetError(glite_jpimp_context_t, int, const char *);
+extern int glite_jpimp_ResetError(glite_jpimp_context_t);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
--- /dev/null
+#ifndef __GLITE_JPIMPORTER
+#define __GLITE_JPIMPORTER
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef struct _glite_jpimp_context_t *glite_jpimp_context_t;
+
+typedef enum _glite_jpimp_ctx_param_t {
+ GLITE_JPIMP_PARAM_JPPS,
+ GLITE_JPIMP_PARAM_LBMAILDIR
+} glite_jpimp_ctx_param_t;
+
+extern int glite_jpimp_InitContext(glite_jpimp_context_t *);
+extern void glite_jpimp_FreeContext(glite_jpimp_context_t);
+
+extern int glite_jpimp_SetParam(
+ glite_jpimp_context_t ctx,
+ int param, ... );
+
+extern int glite_jpimp_Error(
+ glite_jpimp_context_t ctx,
+ char **errt,
+ char **errd);
+
+extern int glite_jpimporter_upload_files(
+ glite_jpimp_context_t ctx,
+ char *jobid,
+ char *files,
+ char *user);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
--- /dev/null
+#include <stdlib.h>
+#include <errno.h>
+#include <assert.h>
+#include <stdarg.h>
+#include <string.h>
+
+#include "jpimporter.h"
+#include "jpimp-ctx-int.h"
+
+
+int glite_jpimp_InitContext(glite_jpimp_context_t *ctx)
+{
+ glite_jpimp_context_t out = (glite_jpimp_context_t) malloc(sizeof(*out));
+ if (!out) return ENOMEM;
+ memset(out, 0, sizeof(*out));
+ assert(out->errDesc == NULL);
+
+ *ctx = out;
+ return 0;
+}
+
+void glite_jpimp_FreeContext(glite_jpimp_context_t ctx)
+{
+ free(ctx->jpps);
+ free(ctx->lbmd_dir);
+}
+
+int glite_jpimp_SetParam(glite_jpimp_context_t ctx, int param, ...)
+{
+ va_list ap;
+
+ va_start(ap, param);
+ switch ( param ) {
+ case GLITE_JPIMP_PARAM_JPPS:
+ if ( ctx->jpps ) free(ctx->jpps);
+ ctx->jpps = va_arg(ap, char *);
+ ctx->jpps = strdup(ctx->jpps);
+ break;
+ case GLITE_JPIMP_PARAM_LBMAILDIR:
+ if ( ctx->lbmd_dir ) free(ctx->lbmd_dir);
+ ctx->lbmd_dir = strdup(va_arg(ap, char *));
+ break;
+ default:
+ return glite_jpimp_SetError(ctx, EINVAL, "unknown parameter");
+ }
+
+ return 0;
+}
+
+int glite_jpimp_Error(
+ glite_jpimp_context_t ctx,
+ char **errt,
+ char **errd)
+{
+ if ( errt ) *errt = strdup(strerror(ctx->errCode));
+ if ( errd ) *errd = (ctx->errDesc)? strdup(ctx->errDesc): NULL;
+ return ctx->errCode;
+}
+
+int glite_jpimp_SetError(
+ glite_jpimp_context_t ctx,
+ int code,
+ const char *desc)
+{
+ glite_jpimp_ResetError(ctx);
+ if ( code ) {
+ ctx->errCode = code;
+ if ( desc ) ctx->errDesc = (char *) strdup(desc);
+ }
+
+ return ctx->errCode;
+}
+
+int glite_jpimp_ResetError(
+ glite_jpimp_context_t ctx)
+{
+ if ( ctx->errDesc ) free(ctx->errDesc);
+ ctx->errDesc = NULL;
+ ctx->errCode = 0;
+
+ return ctx->errCode;
+}
--- /dev/null
+#include "lb_maildir"
+#include "jpimporter.h"
+#include "jpimp-ctx-int.h"
+
+int glite_jpimporter_upload_files(
+ glite_jpimp_context_t ctx,
+ char *jobid,
+ char *files,
+ char *userdn)
+{
+ if ( edg_wll_MaildirInit(ctx->lbmd_dir) ) {
+ char *aux;
+ asprintf(aux, "Can't initialize maildir structure - %s", lbm_errdesc);
+ glite_jpimp_SetError(ctx, errno, aux);
+ free(aux);
+ return -1;
+ }
+
+ edg_wll_MaildirStoreMsg(const char *, const char *, const char *);
+
+ return 0;
+}