From 02aeebacd4545fb85e524af55164b243b12d70e0 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Michal=20Voc=C5=AF?= Date: Thu, 10 Feb 2005 16:17:24 +0000 Subject: [PATCH] * use IL communication library --- org.glite.lb.logger/src/send_event.c | 105 ++++++++++++----------------------- org.glite.lb.logger/src/server_msg.c | 22 ++------ 2 files changed, 38 insertions(+), 89 deletions(-) diff --git a/org.glite.lb.logger/src/send_event.c b/org.glite.lb.logger/src/send_event.c index 5d8958f..6ed63d4 100644 --- a/org.glite.lb.logger/src/send_event.c +++ b/org.glite.lb.logger/src/send_event.c @@ -91,94 +91,57 @@ confirm_msg(struct server_msg *msg, int code, int code_min) #endif -/* - * Read reply from server. - * Returns: -1 - error reading message, - * code > 0 - error code from server - */ +static edg_wll_GssConnection *tmp_gss; + static -int -get_reply(struct event_queue *eq, char **buf, int *code_min) +int +gss_reader(char *buffer, int max_len) { - char buffer[17]; - char *msg, *p; - int inlen, code; - size_t len, l; - edg_wll_GssConnection *gss; + int ret, len; struct timeval tv; edg_wll_GssStatus gss_stat; - gss = &eq->gss; - - /* get message header */ tv.tv_sec = TIMEOUT; tv.tv_usec = 0; - code = edg_wll_gss_read_full(gss, buffer, 17, &tv, &len, &gss_stat); - if(code < 0) { + ret = edg_wll_gss_read_full(tmp_gss, buffer, max_len, &tv, &len, &gss_stat); + if(ret < 0) { char *gss_err = NULL; - if (code == EDG_WLL_GSS_ERROR_GSS) - edg_wll_gss_get_error(&gss_stat, "get_reply (header)", &gss_err); - set_error(IL_DGGSS, code, - (code == EDG_WLL_GSS_ERROR_GSS) ? gss_err : "get_reply (header)"); - if (gss_err) free(gss_err); - return(-1); - } - - buffer[16] = 0; - - sscanf(buffer, "%d", &inlen); - if(inlen < 0 || inlen > MAXLEN) { - set_error(IL_PROTO, LB_NOMEM, "get_reply: error reading reply length"); - return(-1); + if(ret == EDG_WLL_GSS_ERROR_GSS) { + edg_wll_gss_get_error(&gss_stat, "get_reply", &gss_err); + set_error(IL_DGGSS, ret, gss_err); + free(gss_err); + } else + set_error(IL_DGGSS, ret, "get_reply"); } - len = (size_t) inlen; + return(ret); +} - /* allocate room for message body */ - if((msg = malloc(len)) == NULL) { - set_error(IL_NOMEM, ENOMEM, "get_reply: no room for message body"); - return(-1); - } - /* read all the data */ - tv.tv_sec = TIMEOUT; - tv.tv_usec = 0; - code = edg_wll_gss_read_full(gss, msg, len, &tv, &l, &gss_stat); - if(code < 0) { - char *gss_err = NULL; +/* + * Read reply from server. + * Returns: -1 - error reading message, + * code > 0 - error code from server + */ +static +int +get_reply(struct event_queue *eq, char **buf, int *code_min) +{ + char *msg; + int ret, code; + size_t len, l; - if (code == EDG_WLL_GSS_ERROR_GSS) - edg_wll_gss_get_error(&gss_stat, "get_reply (body)", &gss_err); - set_error(IL_DGGSS, code, - (code == EDG_WLL_GSS_ERROR_GSS) ? gss_err : "get_reply (body)"); - if (gss_err) free(gss_err); + tmp_gss = &eq->gss; + len = read_il_data(&msg, gss_reader); + if(len < 0) return(-1); - } - p = msg; - p = get_int(p, &code); - if(p == NULL) { - set_error(IL_PROTO, LB_PROTO, "get_reply: error receiving result code"); - free(msg); - return(-1); - } - p = get_int(p, code_min); - if(p == NULL) { - set_error(IL_PROTO, LB_PROTO, "get_reply: error receiving result code minor"); - free(msg); - return(-1); - } - p = get_string(p, buf); - if(p == NULL) { - if(*buf) { - free(*buf); - *buf = NULL; - } - free(msg); - set_error(IL_PROTO, LB_PROTO, "get_reply: error receiving result string"); + ret = decode_il_reply(&code, code_min, buf, msg); + free(msg); + if(ret < 0) { + set_error(IL_PROTO, LB_PROTO, "get_reply: error decoding server reply"); return(-1); } - free(msg); return(code); } diff --git a/org.glite.lb.logger/src/server_msg.c b/org.glite.lb.logger/src/server_msg.c index aa7e75c..1a90e72 100644 --- a/org.glite.lb.logger/src/server_msg.c +++ b/org.glite.lb.logger/src/server_msg.c @@ -5,7 +5,7 @@ #include #include "interlogd.h" -#include "glite/lb/il_string.h" +#include "glite/lb/il_msg.h" #include "glite/lb/events_parse.h" #include "glite/lb/consumer.h" #include "glite/lb/context.h" @@ -15,7 +15,6 @@ int create_msg(char *event, char **buffer, long *receipt) { char *p; int len; - char *ucs = "michal"; *receipt = 0; @@ -57,25 +56,12 @@ create_msg(char *event, char **buffer, long *receipt) } #endif - /* allocate enough room to hold the message */ - len = 17 + len_string(ucs) + len_string(event); - if((*buffer = malloc(len)) == NULL) { + len = encode_il_msg(buffer, event); + if(len < 0) { set_error(IL_NOMEM, ENOMEM, "create_msg: out of memory allocating message"); return(-1); } - - p = *buffer; - - /* write header */ - sprintf(p, "%16d\n", len - 17); - p += 17; - - /* write rest of the message */ - p = put_string(p, ucs); - p = put_string(p, event); - - return(p - *buffer); - + return(len); } -- 1.8.2.3