You are viewing a plain text version of this content. The canonical link for it is here.
Posted to axis-cvs@ws.apache.org by wh...@apache.org on 2005/01/11 18:01:47 UTC
cvs commit: ws-axis/c/tools/org/apache/axis/tools/trace TraceInstrumentor.java Tracer.java tracetool.conf
whitlock 2005/01/11 09:01:47
Modified: c/build buildTransport.xml
c/src/common AxisTrace.cpp AxisTrace.h
c/src/engine Axis.cpp SOAPTransportFactory.cpp
c/src/transport/axis2 Axis2TransportInstantiator.cpp
c/tools/org/apache/axis/tools/common Configuration.java
c/tools/org/apache/axis/tools/trace TraceInstrumentor.java
Tracer.java tracetool.conf
Log:
Add trace to the transport library by passing it the addresses of trace methods, so that it can invoke trace methods by address, avoiding the need for the transport library to be linked with the client library.
Revision Changes Path
1.7 +7 -0 ws-axis/c/build/buildTransport.xml
Index: buildTransport.xml
===================================================================
RCS file: /home/cvs/ws-axis/c/build/buildTransport.xml,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- buildTransport.xml 10 Jan 2005 21:00:31 -0000 1.6
+++ buildTransport.xml 11 Jan 2005 17:01:47 -0000 1.7
@@ -25,6 +25,9 @@
<define name="AXISTRANSPORTDLL_EXPORTS"/>
</defineset>
</compiler>
+ <defineset>
+ <define name="ENABLE_AXISTRACE" if="trace"/>
+ </defineset>
<compiler refid="OS400icc"/>
<!-- Linkers -->
<linker refid="SolarisLinker"/>
@@ -45,6 +48,10 @@
exceptions="true" multithreaded="true">
<!-- Compilers -->
<compiler refid="AIXxlc"/>
+ <defineset>
+ <define name="ENABLE_AXISTRACE" if="trace"/>
+ </defineset>
+
<!-- Linkers -->
<linker refid="AIXLinker"/>
<!-- Files to compile -->
1.49 +13 -7 ws-axis/c/src/common/AxisTrace.cpp
Index: AxisTrace.cpp
===================================================================
RCS file: /home/cvs/ws-axis/c/src/common/AxisTrace.cpp,v
retrieving revision 1.48
retrieving revision 1.49
diff -u -r1.48 -r1.49
--- AxisTrace.cpp 5 Jan 2005 20:20:21 -0000 1.48
+++ AxisTrace.cpp 11 Jan 2005 17:01:47 -0000 1.49
@@ -215,7 +215,7 @@
}
-void AxisTrace::traceLine(const char *data)
+void AxisTrace::traceLineInternal(const char *data)
{
if (!isTraceOn()) return;
m_fileTrace->filePuts(data);
@@ -224,7 +224,8 @@
return;
}
-void AxisTrace::traceEntry(const char *className, const char *methodName, const void *that, int nParms, ...)
+void AxisTrace::traceEntryInternal(const char *className, const char *methodName,
+ const void *that, int nParms, va_list args)
{
if (!isTraceOn()) return;
@@ -247,8 +248,6 @@
}
line += "(";
- va_list args;
- va_start(args, nParms);
for (int i=0; i<nParms; i++) {
int type = va_arg(args, int);
unsigned len = va_arg(args, unsigned);
@@ -256,7 +255,6 @@
if (0!=i) line += ", ";
addParameter(line,type,len,value);
}
- va_end(args);
line += ")";
traceLine(line.c_str());
@@ -273,7 +271,7 @@
m_stack.push(name);
}
-void AxisTrace::traceExit(const char *className, const char *methodName, int returnIndex,
+void AxisTrace::traceExitInternal(const char *className, const char *methodName, int returnIndex,
int type, unsigned len, void *value)
{
if (!isTraceOn()) return;
@@ -314,7 +312,7 @@
}
}
-void AxisTrace::traceCatch(const char *className, const char *methodName, int catchIndex,
+void AxisTrace::traceCatchInternal(const char *className, const char *methodName, int catchIndex,
int type, unsigned len, void *value)
{
if (!isTraceOn()) return;
@@ -439,6 +437,14 @@
line += ">";
break;
}
+}
+
+void AxisTrace::getTraceEntrypoints(AxisTraceEntrypoints& entrypoints) {
+ entrypoints.m_traceLine = traceLineInternal;
+ entrypoints.m_traceEntry = traceEntryInternal;
+ entrypoints.m_traceExit = traceExitInternal;
+ entrypoints.m_traceCatch = traceCatchInternal;
+ entrypoints.m_traceOn = m_bLoggingOn;
}
/*
1.21 +82 -5 ws-axis/c/src/common/AxisTrace.h
Index: AxisTrace.h
===================================================================
RCS file: /home/cvs/ws-axis/c/src/common/AxisTrace.h,v
retrieving revision 1.20
retrieving revision 1.21
diff -u -r1.20 -r1.21
--- AxisTrace.h 17 Dec 2004 11:49:44 -0000 1.20
+++ AxisTrace.h 11 Jan 2005 17:01:47 -0000 1.21
@@ -27,6 +27,8 @@
#include "AxisFile.h"
#include <string>
#include <stack>
+#include <stdio.h>
+#include <stdarg.h>
#if defined(ENABLE_AXISTRACE)
#define AXISTRACE1(X, Y) AxisTrace::logaxis(X,Y,__FILE__,__LINE__);
@@ -75,6 +77,24 @@
#define TRACETYPE_STRING 14
#define TRACETYPE_STLSTRING 15
+class AxisTraceEntrypoints {
+public:
+ void (*m_traceLine)(const char *data);
+ void (*m_traceEntry)(const char *className, const char *methodName, const void* that, int nParms, va_list vargs);
+ void (*m_traceExit)(const char *className, const char *methodName, int returnIndex,
+ int type=TRACETYPE_UNKNOWN, unsigned len=0, void *value=0);
+ void (*m_traceCatch)(const char *className, const char *methodName, int catchIndex,
+ int type=TRACETYPE_UNKNOWN, unsigned len=0, void *value=0);
+ bool m_traceOn;
+};
+
+#ifdef AXISTRACE_LIBRARY
+ extern AxisTraceEntrypoints *g_traceEntrypoints;
+#endif
+#ifdef AXISTRACE_LIBRARY_MAINENTRYPOINT
+ AxisTraceEntrypoints *g_traceEntrypoints = NULL;
+#endif
+
class AxisTrace
{
public:
@@ -152,34 +172,91 @@
/**
* Finds out whether trace is on.
*/
+#ifdef AXISTRACE_LIBRARY
+ static inline bool isTraceOn() { return g_traceEntrypoints->m_traceOn; }
+#else
static inline bool isTraceOn() { return m_bLoggingOn; }
+#endif
/**
* Traces a single line.
*/
- static void traceLine(const char *data);
+#ifdef AXISTRACE_LIBRARY
+ static inline void traceLine(const char *data) {(*g_traceEntrypoints->m_traceLine)(data); }
+#else
+ static inline void traceLine(const char *data) {traceLineInternal(data);}
+#endif
+ static void traceLineInternal(const char *data);
/**
* Traces the entry to a method.
*/
- static void traceEntry(const char *className, const char *methodName, const void* that, int nParms, ...);
+#ifdef AXISTRACE_LIBRARY
+ static inline void traceEntry(const char *className, const char *methodName, const void* that, int nParms, ...) {
+ va_list vargs;
+ va_start(vargs,nParms);
+ (*g_traceEntrypoints->m_traceEntry)(className,methodName,that,nParms,vargs);
+ va_end(vargs);
+ }
+#else
+ static inline void traceEntry(const char *className, const char *methodName, const void* that, int nParms, ...) {
+ va_list vargs;
+ va_start(vargs,nParms);
+ traceEntryInternal(className,methodName,that,nParms,vargs);
+ va_end(vargs);
+ }
+#endif
+ static void traceEntryInternal(const char *className, const char *methodName,
+ const void* that, int nParms, va_list vargs);
/**
* Traces the exit to a method.
*/
- static void traceExit(const char *className, const char *methodName, int returnIndex,
+#ifdef AXISTRACE_LIBRARY
+ static inline void traceExit(const char *className, const char *methodName, int returnIndex,
+ int type=TRACETYPE_UNKNOWN, unsigned len=0, void *value=0) {
+ (*g_traceEntrypoints->m_traceExit)(className,methodName,returnIndex,type,len,value);
+ }
+#else
+ static inline void traceExit(const char *className, const char *methodName, int returnIndex,
+ int type=TRACETYPE_UNKNOWN, unsigned len=0, void *value=0) {
+ traceExitInternal(className,methodName,returnIndex,type,len,value);
+ }
+#endif
+ static void traceExitInternal(const char *className, const char *methodName, int returnIndex,
int type=TRACETYPE_UNKNOWN, unsigned len=0, void *value=0);
/**
* Traces something that has been caught
*/
- static void traceCatch(const char *className, const char *methodName, int catchIndex,
+#ifdef AXISTRACE_LIBRARY
+ static inline void traceCatch(const char *className, const char *methodName, int catchIndex,
+ int type=TRACETYPE_UNKNOWN, unsigned len=0, void *value=0) {
+ (*g_traceEntrypoints->m_traceCatch)(className,methodName,catchIndex,type,len,value);
+ }
+#else
+ static inline void traceCatch(const char *className, const char *methodName, int catchIndex,
+ int type=TRACETYPE_UNKNOWN, unsigned len=0, void *value=0) {
+ traceCatchInternal(className,methodName,catchIndex,type,len,value);
+ }
+#endif
+ static void traceCatchInternal(const char *className, const char *methodName, int catchIndex,
int type=TRACETYPE_UNKNOWN, unsigned len=0, void *value=0);
-
/**
* Closes the trace file
*/
static void terminate() { m_bLoggingOn = false; delete m_fileTrace; m_fileTrace = NULL; };
+
+ /**
+ * Returns the trace entrypoints to pass to a dynamically loaded library.
+ */
+ static void getTraceEntrypoints(AxisTraceEntrypoints& entrypoints);
+#ifdef AXISTRACE_LIBRARY
+ static void setTraceEntrypoints(AxisTraceEntrypoints& entrypoints) {
+ g_traceEntrypoints = new AxisTraceEntrypoints;
+ *g_traceEntrypoints = entrypoints;
+ }
+#endif
private:
static bool m_bLoggingOn;
1.88 +1 -1 ws-axis/c/src/engine/Axis.cpp
Index: Axis.cpp
===================================================================
RCS file: /home/cvs/ws-axis/c/src/engine/Axis.cpp,v
retrieving revision 1.87
retrieving revision 1.88
diff -u -r1.87 -r1.88
--- Axis.cpp 23 Dec 2004 09:32:10 -0000 1.87
+++ Axis.cpp 11 Jan 2005 17:01:47 -0000 1.88
@@ -352,7 +352,6 @@
if (status == AXIS_SUCCESS)
{
XMLParserFactory::initialize();
- SOAPTransportFactory::initialize();
#if defined(ENABLE_AXISTRACE)
status = AxisTrace::openFileByClient ();
/* //Samisa: 01/09/2004
@@ -364,6 +363,7 @@
}
*/
#endif
+ SOAPTransportFactory::initialize();
char *pClientWsddPath =
g_pConfig->getAxisConfProperty(AXCONF_CLIENTWSDDFILEPATH);
1.23 +5 -3 ws-axis/c/src/engine/SOAPTransportFactory.cpp
Index: SOAPTransportFactory.cpp
===================================================================
RCS file: /home/cvs/ws-axis/c/src/engine/SOAPTransportFactory.cpp,v
retrieving revision 1.22
retrieving revision 1.23
diff -u -r1.22 -r1.23
--- SOAPTransportFactory.cpp 19 Nov 2004 16:22:06 -0000 1.22
+++ SOAPTransportFactory.cpp 11 Jan 2005 17:01:47 -0000 1.23
@@ -71,11 +71,13 @@
else
{
// Load function to do lib level inits
- void (*initializeLibrary) (void);
- initializeLibrary = (void (*)(void))PLATFORM_GETPROCADDR(m_LibHandler, INIT_FUNCTION);
+ void (*initializeLibrary) (AxisTraceEntrypoints&);
+ initializeLibrary = (void (*)(AxisTraceEntrypoints&))PLATFORM_GETPROCADDR(m_LibHandler, INIT_FUNCTION);
+ AxisTraceEntrypoints ep;
+ AxisTrace::getTraceEntrypoints(ep);
if (initializeLibrary)
- (*initializeLibrary)();
+ (*initializeLibrary)(ep);
/*
// Load functions that does start and stop of event loop
1.2 +5 -1 ws-axis/c/src/transport/axis2/Axis2TransportInstantiator.cpp
Index: Axis2TransportInstantiator.cpp
===================================================================
RCS file: /home/cvs/ws-axis/c/src/transport/axis2/Axis2TransportInstantiator.cpp,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- Axis2TransportInstantiator.cpp 16 Nov 2004 02:39:15 -0000 1.1
+++ Axis2TransportInstantiator.cpp 11 Jan 2005 17:01:47 -0000 1.2
@@ -19,6 +19,9 @@
*
*/
+#define AXISTRACE_LIBRARY
+#define AXISTRACE_LIBRARY_MAINENTRYPOINT
+#include "../../common/AxisTrace.h"
#ifdef WIN32
#pragma warning (disable : 4786)
@@ -60,9 +63,10 @@
/* initializeLibrary() Is a C interface.
*/
- STORAGE_CLASS_INFO void initializeLibrary (void)
+ STORAGE_CLASS_INFO void initializeLibrary (AxisTraceEntrypoints& ep)
{
// Do init actions
+ AxisTrace::setTraceEntrypoints(ep);
}
/* uninitializeLibrary() Is a C interface.
1.2 +7 -0 ws-axis/c/tools/org/apache/axis/tools/common/Configuration.java
Index: Configuration.java
===================================================================
RCS file: /home/cvs/ws-axis/c/tools/org/apache/axis/tools/common/Configuration.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- Configuration.java 17 Dec 2004 11:49:48 -0000 1.1
+++ Configuration.java 11 Jan 2005 17:01:47 -0000 1.2
@@ -33,6 +33,7 @@
private static Set macros = new HashSet();
private static Set defines = new HashSet();
private static Set attributes = new HashSet();
+ private static Set librarydirs = new HashSet();
private static Map others = new HashMap();
/**
@@ -81,6 +82,8 @@
defines.add(value);
} else if ("attribute".equals(key)) {
attributes.add(value);
+ } else if ("librarydir".equals(key)) {
+ librarydirs.add(value);
} else {
others.put(key, value);
}
@@ -109,6 +112,10 @@
public static boolean isAttribute(String s) {
return attributes.contains(s);
+ }
+
+ public static Set getLibraryDirs() {
+ return librarydirs;
}
public static String getConfigured(String key) {
1.2 +8 -1 ws-axis/c/tools/org/apache/axis/tools/trace/TraceInstrumentor.java
Index: TraceInstrumentor.java
===================================================================
RCS file: /home/cvs/ws-axis/c/tools/org/apache/axis/tools/trace/TraceInstrumentor.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- TraceInstrumentor.java 17 Dec 2004 11:49:48 -0000 1.1
+++ TraceInstrumentor.java 11 Jan 2005 17:01:47 -0000 1.2
@@ -74,9 +74,16 @@
&& !Configuration.fileExcluded(sourceName)) {
Utils.outputDebugString("parsing " + source + "...");
+ boolean isInLib = false;
+ Iterator itDir = Configuration.getLibraryDirs().iterator();
+ while (itDir.hasNext()) {
+ String libdir= (String)(itDir.next());
+ isInLib = isInLib || (-1 != source.getPath().indexOf(libdir));
+ }
+
// create a tracer to the output file
Tracer output =
- new Tracer(new FileWriter(outputFile, false), depth, headers);
+ new Tracer(new FileWriter(outputFile, false), depth, headers, isInLib);
// OK, now we have the output file let's read in the input file !
FileReader fr = new FileReader(source);
1.2 +5 -1 ws-axis/c/tools/org/apache/axis/tools/trace/Tracer.java
Index: Tracer.java
===================================================================
RCS file: /home/cvs/ws-axis/c/tools/org/apache/axis/tools/trace/Tracer.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- Tracer.java 17 Dec 2004 11:49:48 -0000 1.1
+++ Tracer.java 11 Jan 2005 17:01:47 -0000 1.2
@@ -72,7 +72,7 @@
/**
* @param writer a writer to the output file.
*/
- Tracer(Writer writer, int depth, Headers headers) throws IOException {
+ Tracer(Writer writer, int depth, Headers headers, boolean isInLib) throws IOException {
super(writer);
this.headers = headers;
namespace = Configuration.getConfigured("namespace");
@@ -98,6 +98,9 @@
else
module = ""; // C-style function
+ String libDirDef = "";
+ if (isInLib) libDirDef = "#define AXISTRACE_LIBRARY\n";
+
String include = Configuration.getConfigured("include");
String includefile = "";
if (null == include) {
@@ -119,6 +122,7 @@
String line =
hashifdef
+ "/* TRACE ADDED BY THE TRACE INSTRUMENTOR TOOL */\n"
+ + libDirDef
+ "#include "
+ includefile
+ "\n"
1.4 +3 -0 ws-axis/c/tools/org/apache/axis/tools/trace/tracetool.conf
Index: tracetool.conf
===================================================================
RCS file: /home/cvs/ws-axis/c/tools/org/apache/axis/tools/trace/tracetool.conf,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- tracetool.conf 10 Jan 2005 10:47:07 -0000 1.3
+++ tracetool.conf 11 Jan 2005 17:01:47 -0000 1.4
@@ -46,6 +46,7 @@
excludefile=AxisTrace.cpp
excludefile=AxisTrace.h
excludefile=AxisFile.h
+excludefile=Axis2TransportInstantiator.cpp
#
define=AXIS_CPP_NAMESPACE_START
define=AXIS_CPP_NAMESPACE_END
@@ -65,3 +66,5 @@
ifdef=ENABLE_AXISTRACE
namespace=axiscpp
module=AxisTrace
+librarydir=transport
+