[xio-commit] CVS update: MODIFIED: netlog, globus_xio_netlogger.h ...
Mike Link
commit at globus.org
Fri Nov 9 15:57:46 CST 2007
User: mlink
Date: 07/11/09 15:57:46
Modified: drivers/netlog Makefile.am globus_xio_netlogger.c
globus_xio_netlogger.h
Added: drivers/netlog globus_ftp_client_nl_plugin.c
Log:
merge of netlogger driver branch
reorg stack setting
add disk stack setting
rename udt_ref driver to udt
Revision Changes Path
1.5 +11 -3 xio/drivers/netlog/Makefile.am
http://viewcvs.globus.org/viewcvs.cgi/xio/drivers/netlog/Makefile.am.diff?r1=1.4&r2=1.5
(In the diff below, changes in quantity of whitespace are not shown.)
Index: Makefile.am
===================================================================
RCS file: /home/globdev/CVS/globus-packages/xio/drivers/netlog/Makefile.am,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -b -r1.4 -r1.5
--- Makefile.am 22 Oct 2007 17:20:28 -0000 1.4
+++ Makefile.am 9 Nov 2007 21:57:46 -0000 1.5
@@ -12,16 +12,24 @@
INCLUDES = $(GPT_INCLUDES) -I $(NETLOGGER_PATH)/include
-lib_LTLIBRARIES = libglobus_xio_netlogger_driver_$(GLOBUS_FLAVOR_NAME).la
+lib_LTLIBRARIES = libglobus_xio_netlogger_driver_$(GLOBUS_FLAVOR_NAME).la \
+ libclient_netlogger_plugin_$(GLOBUS_FLAVOR_NAME).la
+
+libclient_netlogger_plugin___GLOBUS_FLAVOR_NAME__la_LIBADD = \
+ @GPT_LIB_LINKS@ $(NETLOGGER_PATH)/lib/libnl.a
+libclient_netlogger_plugin___GLOBUS_FLAVOR_NAME__la_SOURCES = \
+ globus_ftp_client_nl_plugin.c
+libclient_netlogger_plugin___GLOBUS_FLAVOR_NAME__la_LDFLAGS = \
+ @GPT_LDFLAGS@ -module -rpath $(GLOBUS_LOCATION)/lib -rpath $(NETLOGGER_PATH)/lib
+
libglobus_xio_netlogger_driver___GLOBUS_FLAVOR_NAME__la_LIBADD = \
- @GPT_LIB_LINKS@ $(NETLOGGER_PATH)/lib/libnl.la
+ @GPT_LIB_LINKS@ $(NETLOGGER_PATH)/lib/libnl.a
libglobus_xio_netlogger_driver___GLOBUS_FLAVOR_NAME__la_SOURCES = \
globus_xio_netlogger.c
libglobus_xio_netlogger_driver___GLOBUS_FLAVOR_NAME__la_LDFLAGS = \
@GPT_LDFLAGS@ -module -rpath $(GLOBUS_LOCATION)/lib -rpath $(NETLOGGER_PATH)/lib
-
EXTRA_DIST = version.h.in
include $(top_srcdir)/globus_automake_post
1.5 +258 -30 xio/drivers/netlog/globus_xio_netlogger.c
http://viewcvs.globus.org/viewcvs.cgi/xio/drivers/netlog/globus_xio_netlogger.c.diff?r1=1.4&r2=1.5
(In the diff below, changes in quantity of whitespace are not shown.)
Index: globus_xio_netlogger.c
===================================================================
RCS file: /home/globdev/CVS/globus-packages/xio/drivers/netlog/globus_xio_netlogger.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -b -r1.4 -r1.5
--- globus_xio_netlogger.c 22 Oct 2007 17:20:28 -0000 1.4
+++ globus_xio_netlogger.c 9 Nov 2007 21:57:46 -0000 1.5
@@ -17,6 +17,8 @@
#include "nlsumm.h"
#include "nltransfer.h"
+#define NL_COOKIE "NL: uuid="
+
#define GlobusXIONetloggerError(_r) \
globus_error_put(GlobusXIONetloggerErrorObj(_r))
@@ -58,12 +60,25 @@
GLOBUS_L_XIO_NETLOGGER_DEBUG_CNTLS = 4
};
+enum globus_l_xio_netlogger_log_levels
+{
+ GLOBUS_L_XIO_NETLOGGER_LOG_DEFAULT = 0x1,
+ GLOBUS_L_XIO_NETLOGGER_LOG_BN = 0x2,
+ GLOBUS_L_XIO_NETLOGGER_INTERVAL = 0x4,
+ GLOBUS_L_XIO_NETLOGGER_FULL = 0x8
+};
+
+
+static NL_log_T xio_l_nl_log;
+static NL_summ_T xio_l_nl_summ;
+
typedef struct xio_l_netlogger_handle_s
{
int block_id;
int log_flag;
char * filename;
char * id;
+ char * trans_uuid;
char * type;
NL_transfer_op_t read_event;
@@ -87,8 +102,19 @@
globus_size_t read_buflen;
globus_size_t write_buflen;
+
+ int log_level;
+ int interval;
} xio_l_netlogger_handle_t;
+typedef struct xio_l_nl_handle_ent_s
+{
+ NL_log_T nl_log;
+ NL_summ_T nl_summ;
+ char * uuid;
+ int ref;
+} xio_l_nl_handle_ent_t;
+
static
globus_result_t
globus_l_xio_netlogger_attr_init(
@@ -96,11 +122,19 @@
xio_l_netlogger_handle_t * globus_l_xio_netlogger_default_handle = NULL;
+static globus_hashtable_t nl_l_handle_table;
+static globus_mutex_t xio_l_nl_mutex;
+
static
xio_l_netlogger_handle_t *
xio_l_netlogger_create_handle(
xio_l_netlogger_handle_t * handle)
{
+ int level;
+ globus_bool_t use_summ;
+ xio_l_nl_handle_ent_t * ent;
+ int rc;
+ globus_uuid_t uuid;
char * hostname;
GlobusXIOName(xio_l_netlogger_create_handle);
@@ -127,29 +161,135 @@
handle->write_stop_event = globus_common_create_string(
"xio.%s.write.stop", handle->type);
- handle->nl_level = NL_LVL_DEBUG;
- handle->nl_log = NL_open(handle->filename);
-/* NL_set_summ(handle->nl_log, NL_summ(NULL)); */
- NL_set_level(handle->nl_log, NL_LVL_INFO);
-
- NL_transfer_init(handle->nl_summ, 0, NL_LVL_DEBUG);
- NL_summ_add_log(handle->nl_summ, handle->nl_log);
+ handle->nl_level = NL_LVL_INFO;
+ if(handle->filename != NULL)
+ {
+ handle->nl_log = NL_open(NULL);
+ }
hostname = NL_get_ipaddr(); /* defined in nl_log.h */
if(hostname == NULL)
{
hostname = strdup("0.0.0.0");
}
+ use_summ = GLOBUS_FALSE;
+ /* determine level */
+ if(handle->log_level == GLOBUS_L_XIO_NETLOGGER_LOG_DEFAULT)
+ {
+ level = NL_LVL_INFO;
+ }
+ else if(handle->log_level == GLOBUS_L_XIO_NETLOGGER_FULL)
+ {
+ level = NL_LVL_DEBUG2;
+ }
+ else
+ {
+ if(handle->log_level & GLOBUS_L_XIO_NETLOGGER_FULL)
+ {
+ level = NL_LVL_DEBUG2;
+ }
+ else
+ {
+ level = NL_LVL_DEBUG;
+ }
+
+ use_summ = GLOBUS_TRUE;
+ if(!(handle->log_level & GLOBUS_L_XIO_NETLOGGER_LOG_DEFAULT))
+ {
+ handle->nl_level = NL_LVL_USER;
+ }
+ }
+
+ /* if the user didnt get a id create one, and use the defaul handle */
+ if(handle->id == NULL)
+ {
+ rc = globus_uuid_create(&uuid);
+ if(rc == 0)
+ {
+ handle->id = strdup(uuid.text);
+ }
+ else
+ {
+ handle->id = strdup("default");
+ }
+
+ if(handle->nl_log == NULL)
+ {
+ handle->nl_log = xio_l_nl_log;
+ }
+ if(handle->nl_summ == NULL)
+ {
+ handle->nl_summ = xio_l_nl_summ;
+ }
+ NL_set_level(handle->nl_log, NL_LVL_DEBUG);
+ }
+ /* if they did set an id, check the table for it, and create a new
+ one if needed */
+ else
+ {
+ ent = (xio_l_nl_handle_ent_t *) globus_hashtable_lookup(
+ &nl_l_handle_table, handle->id);
+
+ if(ent == NULL)
+ {
+ ent = (xio_l_nl_handle_ent_t *)
+ globus_calloc(1, sizeof(xio_l_nl_handle_ent_t));
+ ent->nl_log = NL_open(NULL);
+ if(ent->nl_log == NULL)
+ {
+ goto error_log;
+ }
+ NL_set_level(ent->nl_log, level);
+ if(use_summ)
+ {
+ ent->nl_summ = NL_summ();
+ if(ent->nl_summ == NULL)
+ {
+ goto error_summ;
+ }
+ NL_summ_set_shared_output(ent->nl_summ, ent->nl_log);
+ rc = NL_transfer_init(
+ ent->nl_summ, handle->interval, NL_LVL_DEBUG);
+ if(rc != 0)
+ {
+ goto error_summ;
+ }
+ if(handle->log_level & GLOBUS_L_XIO_NETLOGGER_FULL)
+ {
+ NL_transfer_set_passthrough(ent->nl_summ);
+ }
+
+ rc = NL_summ_add_log(ent->nl_summ, ent->nl_log);
+ if(rc != 0)
+ {
+ goto error_summ;
+ }
+ }
+ ent->uuid = strdup(handle->id);
+
+ globus_hashtable_insert(&nl_l_handle_table, ent->uuid, ent);
+ }
+
+ ent->ref++;
+ handle->nl_log = ent->nl_log;
+ handle->nl_summ = ent->nl_summ;
+ }
+
/* NL_open(handle->nl_log, 0, handle->filename); */
NL_set_const(handle->nl_log, 0, "HOST:s", hostname);
- NL_set_level(handle->nl_log, NL_LVL_INFO);
handle->read_event = NL_TRANSFER_NET_READ;
handle->write_event = NL_TRANSFER_NET_WRITE;
GlobusXIONetloggerDebugExit();
return handle;
+
+error_log:
+
+error_summ:
+
+ return NULL;
}
static
@@ -185,19 +325,52 @@
{
goto error_xio_system_activate;
}
- GlobusXIORegisterDriver(netlogger);
+
+ /* setup global NL stuff */
+ xio_l_nl_log = NL_open(NULL);
+ if(xio_l_nl_log == NULL)
+ {
+ rc = -1;
+ goto error_xio_system_activate;
+ }
+ xio_l_nl_summ = NL_summ();
+ if(xio_l_nl_summ == NULL)
+ {
+ rc = -1;
+ goto error_xio_system_activate;
+ }
+ rc = NL_transfer_init(xio_l_nl_summ, 0, NL_LVL_DEBUG);
+ if(rc != 0)
+ {
+ goto error_summ;
+ }
+ NL_set_level(xio_l_nl_log, NL_LVL_DEBUG);
+ rc = NL_summ_add_log(xio_l_nl_summ, xio_l_nl_log);
+ if(rc != 0)
+ {
+ goto error_summ;
+ }
+
+ globus_mutex_init(&xio_l_nl_mutex, NULL);
+ globus_hashtable_init(
+ &nl_l_handle_table,
+ 128,
+ globus_hashtable_string_hash,
+ globus_hashtable_string_keyeq);
handle = (xio_l_netlogger_handle_t *)
globus_calloc(1, sizeof(xio_l_netlogger_handle_t));
globus_l_xio_netlogger_attr_init((void **)&handle);
- globus_l_xio_netlogger_default_handle =
- xio_l_netlogger_create_handle(handle);
+ globus_l_xio_netlogger_default_handle = handle;
+ GlobusXIORegisterDriver(netlogger);
GlobusXIONetloggerDebugExit();
return GLOBUS_SUCCESS;
+error_summ:
+ /* close NL handle */
error_xio_system_activate:
GlobusXIONetloggerDebugExitWithError();
GlobusDebugDestroy(GLOBUS_XIO_NETLOGGER);
@@ -233,8 +406,6 @@
globus_l_xio_netlogger_attr_init(
void ** out_attr)
{
- int rc;
- globus_uuid_t uuid;
xio_l_netlogger_handle_t * attr;
/* intiialize everything to 0 */
@@ -242,16 +413,10 @@
globus_calloc(1, sizeof(xio_l_netlogger_handle_t));
attr->type = strdup("default");
- rc = globus_uuid_create(&uuid);
- if(rc == 0)
- {
- attr->id = strdup(uuid.text);
- }
- else
- {
- attr->id = strdup("default");
- }
attr->filename = NULL;
+ attr->read_event = NL_TRANSFER_DISK_READ;
+ attr->write_event = NL_TRANSFER_DISK_WRITE;
+ attr->log_level = GLOBUS_L_XIO_NETLOGGER_LOG_DEFAULT;
*out_attr = attr;
@@ -284,6 +449,11 @@
{
dst_attr->id = strdup(src_attr->id);
}
+ dst_attr->read_event = src_attr->read_event;
+ dst_attr->write_event = src_attr->write_event;
+ dst_attr->interval = src_attr->interval;
+ dst_attr->log_level = src_attr->log_level;
+
*dst = dst_attr;
return GLOBUS_SUCCESS;
@@ -295,7 +465,13 @@
GLOBUS_XIO_NETLOGGER_CNTL_SET_FILENAME, globus_xio_string_cntl_string},
{"mask", GLOBUS_XIO_NETLOGGER_CNTL_SET_MASK, globus_xio_string_cntl_int},
{"type", GLOBUS_XIO_NETLOGGER_CNTL_SET_TYPE, globus_xio_string_cntl_int},
- {"id", GLOBUS_XIO_NETLOGGER_CNTL_SET_ID, globus_xio_string_cntl_string},
+ {"uuid", GLOBUS_XIO_NETLOGGER_CNTL_SET_ID, globus_xio_string_cntl_string},
+ {"interval", GLOBUS_XIO_NETLOGGER_CNTL_INTERVAL,
+ globus_xio_string_cntl_int},
+ {"level", GLOBUS_XIO_NETLOGGER_CNTL_LEVEL,
+ globus_xio_string_cntl_int},
+ {"io_type", GLOBUS_XIO_NETLOGGER_CNTL_SET_STRING_SUM_TYPES,
+ globus_xio_string_cntl_string},
{NULL, 0, NULL}
};
@@ -306,10 +482,13 @@
int cmd,
va_list ap)
{
+ char * uuid;
+ char ** str_out;
char * str;
char * tmp_str;
globus_xio_netlogger_log_event_t event;
xio_l_netlogger_handle_t * attr;
+ xio_l_nl_handle_ent_t * ent;
GlobusXIOName(globus_l_xio_netlogger_cntl);
GlobusXIONetloggerDebugEnter();
@@ -318,6 +497,23 @@
switch(cmd)
{
+ case GLOBUS_XIO_NETLOGGER_CNTL_LEVEL:
+ attr->log_level = va_arg(ap, int);
+ break;
+
+ case GLOBUS_XIO_NETLOGGER_CNTL_INTERVAL:
+ attr->log_level |= GLOBUS_L_XIO_NETLOGGER_INTERVAL;
+ attr->interval = va_arg(ap, int) * 1000000;
+ break;
+
+ case GLOBUS_XIO_NETLOGGER_CNTL_SET_HANDLE:
+ attr->nl_log = va_arg(ap, NL_log_T);
+ break;
+
+ case GLOBUS_XIO_NETLOGGER_CNTL_SET_SUMM:
+ attr->nl_summ = va_arg(ap, NL_summ_T);
+ break;
+
case GLOBUS_XIO_NETLOGGER_CNTL_SET_ID:
str = va_arg(ap, char *);
attr->id = strdup(str);
@@ -379,11 +575,46 @@
attr->read_event = NL_TRANSFER_DISK_READ;
attr->write_event = NL_TRANSFER_DISK_WRITE;
}
- else
+ else if(strncmp("net", tmp_str, 3) == 0)
{
attr->read_event = NL_TRANSFER_NET_READ;
attr->write_event = NL_TRANSFER_NET_WRITE;
}
+ else
+ {
+ attr->read_event = -1;
+ attr->write_event = -1;
+ }
+ break;
+
+ case GLOBUS_XIO_NETLOGGER_CNTL_STRING_IN_OUT:
+ tmp_str = va_arg(ap, char *);
+ str_out = va_arg(ap, char **);
+
+ if(strncmp(tmp_str, "uuid=", 5) == 0)
+ {
+ uuid = tmp_str + 5;
+ ent = (xio_l_nl_handle_ent_t *) globus_hashtable_remove(
+ &nl_l_handle_table, uuid);
+
+ if(ent == NULL)
+ {
+ return GLOBUS_SUCCESS;
+ }
+ NL_transfer_finalize(ent->nl_summ);
+
+ tmp_str = NL_transfer_get_result_string(ent->nl_summ, uuid);
+ if(tmp_str == NULL)
+ {
+ tmp_str = "nothing";
+ }
+ *str_out = globus_common_create_string(
+ NL_COOKIE"%s;%s", uuid, tmp_str);
+ }
+ else
+ {
+ *str_out = NULL;
+ }
break;
}
@@ -506,7 +737,7 @@
handle = (xio_l_netlogger_handle_t *) user_arg;
if(handle->log_flag & GLOBUS_XIO_NETLOGGER_LOG_ACCEPT)
{
- NL_write(handle->nl_log, NL_LVL_INFO, handle->accept_stop_event,
+ NL_write(handle->nl_log, NL_LVL_DEBUG, handle->accept_stop_event,
"sock=i uuid=s",
(int)handle, handle->id);
}
@@ -533,7 +764,7 @@
xio_l_netlogger_create_handle(handle);
if(handle->log_flag & GLOBUS_XIO_NETLOGGER_LOG_ACCEPT)
{
- NL_write(handle->nl_log, NL_LVL_INFO,
+ NL_write(handle->nl_log, NL_LVL_DEBUG,
handle->accept_start_event, "sock=i uuid=s",
(int)handle, handle->id);
}
@@ -566,7 +797,7 @@
handle = (xio_l_netlogger_handle_t *) user_arg;
if(handle->log_flag & GLOBUS_XIO_NETLOGGER_LOG_OPEN)
{
- NL_write(handle->nl_log, NL_LVL_INFO, handle->open_stop_event,
+ NL_write(handle->nl_log, NL_LVL_DEBUG, handle->open_stop_event,
"sock=i uuid=s",
(int)handle, handle->id);
}
@@ -800,9 +1031,6 @@
(int)handle, handle->id);
}
- NL_transfer_finalize(handle->nl_summ);
- NL_close(handle->nl_log);
-
globus_xio_driver_finished_close(op, result);
GlobusXIONetloggerDebugExit();
}
1.4 +7 -1 xio/drivers/netlog/globus_xio_netlogger.h
http://viewcvs.globus.org/viewcvs.cgi/xio/drivers/netlog/globus_xio_netlogger.h.diff?r1=1.3&r2=1.4
(In the diff below, changes in quantity of whitespace are not shown.)
Index: globus_xio_netlogger.h
===================================================================
RCS file: /home/globdev/CVS/globus-packages/xio/drivers/netlog/globus_xio_netlogger.h,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -b -r1.3 -r1.4
--- globus_xio_netlogger.h 22 Oct 2007 17:20:28 -0000 1.3
+++ globus_xio_netlogger.h 9 Nov 2007 21:57:46 -0000 1.4
@@ -31,7 +31,13 @@
GLOBUS_XIO_NETLOGGER_CNTL_SET_FILENAME,
GLOBUS_XIO_NETLOGGER_CNTL_SET_MASK,
GLOBUS_XIO_NETLOGGER_CNTL_SET_TYPE,
- GLOBUS_XIO_NETLOGGER_CNTL_SET_SUM_TYPES
+ GLOBUS_XIO_NETLOGGER_CNTL_SET_SUM_TYPES,
+ GLOBUS_XIO_NETLOGGER_CNTL_SET_STRING_SUM_TYPES,
+ GLOBUS_XIO_NETLOGGER_CNTL_SET_HANDLE,
+ GLOBUS_XIO_NETLOGGER_CNTL_SET_SUMM,
+ GLOBUS_XIO_NETLOGGER_CNTL_INTERVAL,
+ GLOBUS_XIO_NETLOGGER_CNTL_LEVEL,
+ GLOBUS_XIO_NETLOGGER_CNTL_STRING_IN_OUT = 1024
} globus_xio_netlogger_log_cntl_t;
1.2 +527 -0 xio/drivers/netlog/globus_ftp_client_nl_plugin.c
http://viewcvs.globus.org/viewcvs.cgi/xio/drivers/netlog/globus_ftp_client_nl_plugin.c.diff?r1=1.1&r2=1.2
(In the diff below, changes in quantity of whitespace are not shown.)
Index: globus_ftp_client_nl_plugin.c
===================================================================
RCS file: globus_ftp_client_nl_plugin.c
diff -N globus_ftp_client_nl_plugin.c
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ globus_ftp_client_nl_plugin.c 9 Nov 2007 21:57:46 -0000 1.2
@@ -0,0 +1,527 @@
+#include "globus_url_copy.h"
+
+#include "nl.h"
+#include "nlsumm.h"
+#include "nltransfer.h"
+#include <stdio.h>
+#include <string.h>
+
+static int l_time_plugin_activate(void);
+static int l_time_plugin_deactivate(void);
+
+#define L_TIME_PLUGIN_NAME "client_netlogger_plugin"
+#define NL_COOKIE "NL: uuid="
+
+typedef struct globus_l_nl_uuid_ent_s
+{
+ int count;
+ int return_count;
+ char * uuid;
+ char * msgs[2];
+} globus_l_nl_uuid_ent_t;
+
+typedef struct l_time_plugin_s
+{
+ int x;
+} l_time_plugin_t;
+
+static globus_mutex_t globus_l_nl_mutex;
+static globus_hashtable_t globus_l_nl_uuid_table;
+
+globus_result_t
+l_time_plugin_init(
+ globus_ftp_client_plugin_t * plugin,
+ char * in_args);
+
+static
+globus_result_t
+l_time_setup_plugin(
+ globus_ftp_client_plugin_t * plugin,
+ l_time_plugin_t * d);
+
+
+static globus_guc_client_plugin_funcs_t l_my_guc_plugin =
+{
+ l_time_plugin_init
+};
+
+static
+void
+nl_print_bottleneck(
+ NL_transfer_btl_t * bottleneck)
+{
+ printf("Bottleneck is ");
+ printf("not known\n");
+}
+
+static
+void
+guc_l_nl_replace_str(
+ char * nl_str,
+ const char * n)
+{
+ char * tmp_ptr;
+ char * tmp_ptr2;
+ char * end_ptr;
+ int sz;
+ int len;
+ int off = 0;
+
+ end_ptr = nl_str + strlen(nl_str);
+ sz = strlen(n) - 1;
+ tmp_ptr = strstr(nl_str, n);
+ while(tmp_ptr != NULL)
+ {
+ *tmp_ptr = '\n';
+ tmp_ptr++;
+
+ tmp_ptr2 = tmp_ptr + sz;
+
+ len = end_ptr - tmp_ptr2;
+ memmove(tmp_ptr, tmp_ptr2, len);
+ tmp_ptr = strstr(nl_str, n);
+ off += sz;
+ }
+ end_ptr -= off;
+ *end_ptr = '\0';
+}
+
+
+static
+void
+nl_l_final_received(
+ const char * response_buffer)
+{
+ int rc;
+ char * tmp_ptr;
+ char * nl_str;
+ char * uuid;
+ NL_transfer_btl_t bottleneck;
+ globus_l_nl_uuid_ent_t * ent;
+
+ tmp_ptr = strstr(response_buffer, NL_COOKIE);
+ if(tmp_ptr == NULL)
+ {
+ goto error_response;
+ }
+ tmp_ptr += sizeof(NL_COOKIE);
+ uuid = strdup(tmp_ptr);
+ tmp_ptr = strchr(uuid, ';');
+ if(tmp_ptr == NULL)
+ {
+ goto error_uuid;
+ }
+ *tmp_ptr = '\0';
+ tmp_ptr++;
+
+ nl_str = strdup(tmp_ptr);
+
+/* printf("RAW MSG: %s\n", nl_str);
+ */ /* remove trailing 226 final line if it exists */
+ tmp_ptr = strstr(nl_str, "\r\n226 ");
+ if(tmp_ptr != NULL)
+ {
+ *tmp_ptr = '\n';
+ tmp_ptr[1] = '\0';
+ }
+ else
+ {
+ printf("Error: final 226 token not found\n");
+ }
+
+ /* have to remove all of the \r\n226 messages*/
+ guc_l_nl_replace_str(nl_str, "\r\n226-");
+
+ ent = (globus_l_nl_uuid_ent_t *)
+ globus_hashtable_lookup(&globus_l_nl_uuid_table, uuid);
+ if(ent == NULL)
+ {
+ goto error_ent;
+ }
+
+ ent->msgs[ent->return_count] = nl_str;
+ ent->return_count++;
+ if(2 == ent->return_count)
+ {
+printf("1] %s\n\n", ent->msgs[0]);
+printf("2] %s\n\n", ent->msgs[1]);
+
+ rc = NL_transfer_get_bottleneck(ent->msgs[0], ent->msgs[1],
+ &bottleneck);
+ if(rc != 0)
+ {
+ }
+ nl_print_bottleneck(&bottleneck);
+
+ globus_hashtable_remove(&globus_l_nl_uuid_table, uuid);
+ /* clean up the entry */
+ free(ent->msgs[0]);
+ free(ent->msgs[1]);
+ free(ent->uuid);
+ free(ent);
+ }
+
+ return;
+
+error_ent:
+ free(nl_str);
+error_uuid:
+ free(uuid);
+error_response:
+
+printf("ERROR OUT\n");
+
+ return;
+}
+
+
+static
+void
+l_time_response(
+ globus_ftp_client_plugin_t * plugin,
+ void * plugin_specific,
+ globus_ftp_client_handle_t * handle,
+ const char * url,
+ globus_object_t * error,
+ const globus_ftp_control_response_t * ftp_response)
+{
+ l_time_plugin_t * d;
+
+ d = (l_time_plugin_t *) plugin_specific;
+
+ globus_mutex_lock(&globus_l_nl_mutex);
+ {
+ if(!error)
+ {
+ switch(ftp_response->code)
+ {
+ case 226:
+ nl_l_final_received(
+ (const char *)ftp_response->response_buffer);
+ break;
+
+ default:
+ break;
+ }
+ }
+ }
+ globus_mutex_unlock(&globus_l_nl_mutex);
+
+}
+
+
+globus_result_t
+l_time_plugin_init(
+ globus_ftp_client_plugin_t * plugin,
+ char * in_args)
+{
+ char * fname = NULL;
+ char * text = NULL;
+ l_time_plugin_t * d;
+ GlobusFuncName(l_time_plugin_init);
+
+ d = globus_libc_malloc(sizeof(l_time_plugin_t));
+
+ if(fname == NULL)
+ {
+ fname = "-";
+ }
+ if(text == NULL)
+ {
+ text = "";
+ }
+
+ return l_time_setup_plugin(plugin, d);
+}
+
+static
+globus_ftp_client_plugin_t *
+l_time_copy(
+ globus_ftp_client_plugin_t * plugin_template,
+ void * plugin_specific)
+{
+ globus_ftp_client_plugin_t * newguy;
+ l_time_plugin_t * s;
+ l_time_plugin_t * d;
+ globus_result_t result;
+
+ s = (l_time_plugin_t *) plugin_specific;
+
+ newguy = globus_libc_malloc(sizeof(globus_ftp_client_plugin_t));
+ if(newguy == GLOBUS_NULL)
+ {
+ goto error_exit;
+ }
+ d = globus_calloc(sizeof(l_time_plugin_t), 1);
+
+ result = l_time_setup_plugin(newguy, d);
+ if(result != GLOBUS_SUCCESS)
+ {
+ goto free_exit;
+ }
+ return newguy;
+
+free_exit:
+ globus_libc_free(newguy);
+error_exit:
+ return NULL;
+}
+
+static
+void
+l_time_destroy(
+ globus_ftp_client_plugin_t * plugin,
+ void * plugin_specific)
+{
+ l_time_plugin_t * s;
+
+ s = (l_time_plugin_t *) plugin_specific;
+
+ globus_free(s);
+ globus_ftp_client_plugin_destroy(plugin);
+}
+
+static
+void
+l_time_command(
+ globus_ftp_client_plugin_t * plugin,
+ void * plugin_specific,
+ globus_ftp_client_handle_t * handle,
+ const char * url,
+ const char * command_name)
+{
+ char * tmp_ptr;
+ char * uuid;
+ globus_l_nl_uuid_ent_t * ent;
+
+ tmp_ptr = strstr(command_name, "SETNETSTACK");
+ if(tmp_ptr == NULL)
+ {
+ return;
+ }
+ tmp_ptr = strstr(command_name, "netlogger");
+ if(tmp_ptr == NULL)
+ {
+ return;
+ }
+ tmp_ptr = strstr(command_name, "uuid=");
+ if(tmp_ptr == NULL)
+ {
+ return;
+ }
+
+ tmp_ptr += sizeof("uuid=");
+ uuid = strdup(tmp_ptr);
+
+ tmp_ptr = strchr(uuid, ';');
+ if(tmp_ptr != NULL)
+ {
+ *tmp_ptr = '\0';
+ }
+
+
+ globus_mutex_lock(&globus_l_nl_mutex);
+ {
+ ent = (globus_l_nl_uuid_ent_t *)
+ globus_hashtable_lookup(&globus_l_nl_uuid_table, uuid);
+
+ if(ent == NULL)
+ {
+ ent = (globus_l_nl_uuid_ent_t *) globus_calloc(
+ 1, sizeof(globus_l_nl_uuid_ent_t));
+ ent->uuid = uuid;
+ ent->count = 1;
+
+ globus_hashtable_insert(&globus_l_nl_uuid_table, ent->uuid, ent);
+ }
+ else
+ {
+ ent->count++;
+ }
+
+ if(ent->count > 2)
+ {
+ /* log a message */
+ ent->count = 2;
+ }
+ }
+ globus_mutex_unlock(&globus_l_nl_mutex);
+}
+
+static
+void
+l_time_connect(
+ globus_ftp_client_plugin_t * plugin,
+ void * plugin_specific,
+ globus_ftp_client_handle_t * handle,
+ const char * url)
+{
+}
+
+static
+void
+l_time_authenticate(
+ globus_ftp_client_plugin_t * plugin,
+ void * plugin_specific,
+ globus_ftp_client_handle_t * handle,
+ const char * url,
+ const globus_ftp_control_auth_info_t * auth_info)
+{
+}
+
+static
+void
+l_time_get(
+ globus_ftp_client_plugin_t * plugin,
+ void * plugin_specific,
+ globus_ftp_client_handle_t * handle,
+ const char * url,
+ const globus_ftp_client_operationattr_t * attr,
+ globus_bool_t restart)
+{
+}
+
+static
+void
+l_time_put(
+ globus_ftp_client_plugin_t * plugin,
+ void * plugin_specific,
+ globus_ftp_client_handle_t * handle,
+ const char * url,
+ const globus_ftp_client_operationattr_t * attr,
+ globus_bool_t restart)
+{
+}
+
+static
+void
+l_time_third_party_transfer(
+ globus_ftp_client_plugin_t * plugin,
+ void * plugin_specific,
+ globus_ftp_client_handle_t * handle,
+ const char * source_url,
+ const globus_ftp_client_operationattr_t * source_attr,
+ const char * dest_url,
+ const globus_ftp_client_operationattr_t * dest_attr,
+ globus_bool_t restart)
+{
+}
+
+static
+void
+l_time_fault(
+ globus_ftp_client_plugin_t * plugin,
+ void * plugin_specific,
+ globus_ftp_client_handle_t * handle,
+ const char * url,
+ globus_object_t * error)
+{
+}
+
+static
+void
+l_time_complete(
+ globus_ftp_client_plugin_t * plugin,
+ void * plugin_specific,
+ globus_ftp_client_handle_t * handle)
+{
+}
+
+static
+void
+l_time_chmod(
+ globus_ftp_client_plugin_t * plugin,
+ void * plugin_specific,
+ globus_ftp_client_handle_t * handle,
+ const char * url,
+ int mode,
+ const globus_ftp_client_operationattr_t * attr,
+ globus_bool_t restart)
+{
+}
+
+static
+void
+l_time_feat(
+ globus_ftp_client_plugin_t * plugin,
+ void * plugin_specific,
+ globus_ftp_client_handle_t * handle,
+ const char * url,
+ const globus_ftp_client_operationattr_t * attr,
+ globus_bool_t restart)
+{
+}
+
+static
+globus_result_t
+l_time_setup_plugin(
+ globus_ftp_client_plugin_t * plugin,
+ l_time_plugin_t * d)
+{
+ globus_ftp_client_plugin_init(plugin,
+ L_TIME_PLUGIN_NAME,
+ GLOBUS_FTP_CLIENT_CMD_MASK_ALL,
+ d);
+
+ globus_ftp_client_plugin_set_copy_func(plugin, l_time_copy);
+ globus_ftp_client_plugin_set_destroy_func(plugin, l_time_destroy);
+ globus_ftp_client_plugin_set_chmod_func(plugin, l_time_chmod);
+ globus_ftp_client_plugin_set_feat_func(plugin, l_time_feat);
+
+
+ globus_ftp_client_plugin_set_response_func(plugin, l_time_response);
+ globus_ftp_client_plugin_set_command_func(plugin, l_time_command);
+
+ globus_ftp_client_plugin_set_connect_func(plugin, l_time_connect);
+ globus_ftp_client_plugin_set_get_func(plugin, l_time_get);
+ globus_ftp_client_plugin_set_put_func(plugin, l_time_put);
+ globus_ftp_client_plugin_set_third_party_transfer_func(
+ plugin, l_time_third_party_transfer);
+ globus_ftp_client_plugin_set_authenticate_func(plugin, l_time_authenticate);
+ globus_ftp_client_plugin_set_fault_func(plugin, l_time_fault);
+ globus_ftp_client_plugin_set_complete_func(plugin, l_time_complete);
+
+
+
+ return GLOBUS_SUCCESS;
+}
+
+GlobusExtensionDefineModule(guc_time) =
+{
+ "guc_time",
+ l_time_plugin_activate,
+ l_time_plugin_deactivate,
+ NULL,
+ NULL,
+ NULL
+};
+
+static
+int
+l_time_plugin_activate(void)
+{
+ int rc;
+
+ rc = globus_extension_registry_add(
+ &globus_guc_client_plugin_registry,
+ L_TIME_PLUGIN_NAME "_funcs",
+ GlobusExtensionMyModule(guc_time),
+ &l_my_guc_plugin);
+
+ globus_mutex_init(&globus_l_nl_mutex, NULL);
+ globus_hashtable_init(
+ &globus_l_nl_uuid_table,
+ 128,
+ globus_hashtable_string_hash,
+ globus_hashtable_string_keyeq);
+
+ return rc;
+}
+
+static
+int
+l_time_plugin_deactivate(void)
+{
+ return 0;
+}
+
More information about the xio-commit
mailing list