EVOLUTION-MANAGER
Edit File: Tracer.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <!-- NewPage --> <html lang="en"> <head> <!-- Generated by javadoc (version 1.7.0_91) on Thu Jan 14 10:04:48 GMT 2016 --> <title>Tracer</title> <meta name="date" content="2016-01-14"> <link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style"> </head> <body> <script type="text/javascript"><!-- if (location.href.indexOf('is-external=true') == -1) { parent.document.title="Tracer"; } //--> </script> <noscript> <div>JavaScript is disabled on your browser.</div> </noscript> <!-- ========= START OF TOP NAVBAR ======= --> <div class="topNav"><a name="navbar_top"> <!-- --> </a><a href="#skip-navbar_top" title="Skip navigation links"></a><a name="navbar_top_firstrow"> <!-- --> </a> <ul class="navList" title="Navigation"> <li><a href="../../../overview-summary.html">Overview</a></li> <li><a href="package-summary.html">Package</a></li> <li class="navBarCell1Rev">Class</li> <li><a href="package-tree.html">Tree</a></li> <li><a href="../../../deprecated-list.html">Deprecated</a></li> <li><a href="../../../index-all.html">Index</a></li> <li><a href="../../../help-doc.html">Help</a></li> </ul> </div> <div class="subNav"> <ul class="navList"> <li>Prev Class</li> <li><a href="../../../com/rabbitmq/tools/Tracer.AsyncLogger.html" title="class in com.rabbitmq.tools"><span class="strong">Next Class</span></a></li> </ul> <ul class="navList"> <li><a href="../../../index.html?com/rabbitmq/tools/Tracer.html" target="_top">Frames</a></li> <li><a href="Tracer.html" target="_top">No Frames</a></li> </ul> <ul class="navList" id="allclasses_navbar_top"> <li><a href="../../../allclasses-noframe.html">All Classes</a></li> </ul> <div> <script type="text/javascript"><!-- allClassesLink = document.getElementById("allclasses_navbar_top"); if(window==top) { allClassesLink.style.display = "block"; } else { allClassesLink.style.display = "none"; } //--> </script> </div> <div> <ul class="subNavList"> <li>Summary: </li> <li><a href="#nested_class_summary">Nested</a> | </li> <li>Field | </li> <li><a href="#constructor_summary">Constr</a> | </li> <li><a href="#method_summary">Method</a></li> </ul> <ul class="subNavList"> <li>Detail: </li> <li>Field | </li> <li><a href="#constructor_detail">Constr</a> | </li> <li><a href="#method_detail">Method</a></li> </ul> </div> <a name="skip-navbar_top"> <!-- --> </a></div> <!-- ========= END OF TOP NAVBAR ========= --> <!-- ======== START OF CLASS DATA ======== --> <div class="header"> <div class="subTitle">com.rabbitmq.tools</div> <h2 title="Class Tracer" class="title">Class Tracer</h2> </div> <div class="contentContainer"> <ul class="inheritance"> <li>java.lang.Object</li> <li> <ul class="inheritance"> <li>com.rabbitmq.tools.Tracer</li> </ul> </li> </ul> <div class="description"> <ul class="blockList"> <li class="blockList"> <dl> <dt>All Implemented Interfaces:</dt> <dd>java.lang.Runnable</dd> </dl> <hr> <br> <pre>public class <span class="strong">Tracer</span> extends java.lang.Object implements java.lang.Runnable</pre> <div class="block">AMQP Protocol Analyzer program. Listens on a port (in-port) and when a connection arrives, makes an outbound connection to a host and port (out-port). Relays frames from the in-port to the out-port. Commands are decoded and printed to a supplied <a href="../../../com/rabbitmq/tools/Tracer.Logger.html" title="interface in com.rabbitmq.tools"><code>Tracer.Logger</code></a>. <p/> The stand-alone program (<a href="../../../com/rabbitmq/tools/Tracer.html#main(java.lang.String[])"><code>main(String[])</code></a>) prints to <code>System.out</code>, using a private <a href="../../../com/rabbitmq/tools/Tracer.AsyncLogger.html" title="class in com.rabbitmq.tools"><code>Tracer.AsyncLogger</code></a> instance. When the connection closes the program listens for a subsequent connection and traces that to the same <a href="../../../com/rabbitmq/tools/Tracer.Logger.html" title="interface in com.rabbitmq.tools"><code>Tracer.Logger</code></a>. This continues until the program is interrupted. <p/> Options for controlling, for example, whether command bodies are decoded, are obtained from <code>System.properties</code>, and are reported to the console before starting the trace. <p/> A <a href="../../../com/rabbitmq/tools/Tracer.html" title="class in com.rabbitmq.tools"><code>Tracer</code></a> object may be instantiated, using one of the constructors <ul> <li><code>Tracer(int listenPort, String id, String host, int port, Logger logger, Properties props)</code></li> <li><code>Tracer(String id)</code></li> <li><code>Tracer(String id, Properties props)</code> <p/>where the missing parameters default as follows: <ul> <li><code>listenPort</code> defaults to <code>5673</code></li> <li><code>host</code> defaults to <q><code>localhost</code></q></li> <li><code>port</code> defaults to <code>5672</code></li> <li><code>logger</code> defaults to <code>new AsyncLogger(System.out)</code></li> and <li><code>props</code> defaults to <code>System.getProperties()</code></li> </ul> </li> </ul> <p/> These constructors block waiting for a connection to arrive on the listenPort. Tracing does not begin until the tracer is <a href="../../../com/rabbitmq/tools/Tracer.html#start()"><code>start()</code></a>ed which <a href="../../../com/rabbitmq/tools/Tracer.Logger.html#start()"><code>Tracer.Logger.start()</code></a>s the supplied logger and creates and starts a <code>Thread</code> for relaying and deconstructing the frames. <p/> The properties specified in <code>props</code> are used at <a href="../../../com/rabbitmq/tools/Tracer.html#start()"><code>start()</code></a> time and may be modified before this call.</div> <dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../com/rabbitmq/tools/Tracer.Logger.html" title="interface in com.rabbitmq.tools"><code>Tracer.Logger</code></a>, <a href="../../../com/rabbitmq/tools/Tracer.AsyncLogger.html" title="class in com.rabbitmq.tools"><code>Tracer.AsyncLogger</code></a></dd></dl> </li> </ul> </div> <div class="summary"> <ul class="blockList"> <li class="blockList"> <!-- ======== NESTED CLASS SUMMARY ======== --> <ul class="blockList"> <li class="blockList"><a name="nested_class_summary"> <!-- --> </a> <h3>Nested Class Summary</h3> <table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Nested Class Summary table, listing nested classes, and an explanation"> <caption><span>Nested Classes</span><span class="tabEnd"> </span></caption> <tr> <th class="colFirst" scope="col">Modifier and Type</th> <th class="colLast" scope="col">Class and Description</th> </tr> <tr class="altColor"> <td class="colFirst"><code>static class </code></td> <td class="colLast"><code><strong><a href="../../../com/rabbitmq/tools/Tracer.AsyncLogger.html" title="class in com.rabbitmq.tools">Tracer.AsyncLogger</a></strong></code> <div class="block">A <a href="../../../com/rabbitmq/tools/Tracer.Logger.html" title="interface in com.rabbitmq.tools"><code>Tracer.Logger</code></a> designed to print <code>String</code>s to a designated <code>OutputStream</code> on a private thread.</div> </td> </tr> <tr class="rowColor"> <td class="colFirst"><code>static interface </code></td> <td class="colLast"><code><strong><a href="../../../com/rabbitmq/tools/Tracer.Logger.html" title="interface in com.rabbitmq.tools">Tracer.Logger</a></strong></code> <div class="block">Logging strings to an outputStream.</div> </td> </tr> </table> </li> </ul> <!-- ======== CONSTRUCTOR SUMMARY ======== --> <ul class="blockList"> <li class="blockList"><a name="constructor_summary"> <!-- --> </a> <h3>Constructor Summary</h3> <table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation"> <caption><span>Constructors</span><span class="tabEnd"> </span></caption> <tr> <th class="colOne" scope="col">Constructor and Description</th> </tr> <tr class="altColor"> <td class="colOne"><code><strong><a href="../../../com/rabbitmq/tools/Tracer.html#Tracer(int,%20java.lang.String,%20java.lang.String,%20int,%20com.rabbitmq.tools.Tracer.Logger,%20java.util.Properties)">Tracer</a></strong>(int listenPort, java.lang.String id, java.lang.String host, int port, <a href="../../../com/rabbitmq/tools/Tracer.Logger.html" title="interface in com.rabbitmq.tools">Tracer.Logger</a> logger, java.util.Properties props)</code> </td> </tr> <tr class="rowColor"> <td class="colOne"><code><strong><a href="../../../com/rabbitmq/tools/Tracer.html#Tracer(java.lang.String)">Tracer</a></strong>(java.lang.String id)</code> </td> </tr> <tr class="altColor"> <td class="colOne"><code><strong><a href="../../../com/rabbitmq/tools/Tracer.html#Tracer(java.lang.String,%20java.util.Properties)">Tracer</a></strong>(java.lang.String id, java.util.Properties props)</code> </td> </tr> </table> </li> </ul> <!-- ========== METHOD SUMMARY =========== --> <ul class="blockList"> <li class="blockList"><a name="method_summary"> <!-- --> </a> <h3>Method Summary</h3> <table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation"> <caption><span>Methods</span><span class="tabEnd"> </span></caption> <tr> <th class="colFirst" scope="col">Modifier and Type</th> <th class="colLast" scope="col">Method and Description</th> </tr> <tr class="altColor"> <td class="colFirst"><code>void</code></td> <td class="colLast"><code><strong><a href="../../../com/rabbitmq/tools/Tracer.html#log(java.lang.String)">log</a></strong>(java.lang.String message)</code> </td> </tr> <tr class="rowColor"> <td class="colFirst"><code>void</code></td> <td class="colLast"><code><strong><a href="../../../com/rabbitmq/tools/Tracer.html#logException(java.lang.Exception)">logException</a></strong>(java.lang.Exception e)</code> </td> </tr> <tr class="altColor"> <td class="colFirst"><code>static void</code></td> <td class="colLast"><code><strong><a href="../../../com/rabbitmq/tools/Tracer.html#main(java.lang.String[])">main</a></strong>(java.lang.String[] args)</code> </td> </tr> <tr class="rowColor"> <td class="colFirst"><code>void</code></td> <td class="colLast"><code><strong><a href="../../../com/rabbitmq/tools/Tracer.html#run()">run</a></strong>()</code> </td> </tr> <tr class="altColor"> <td class="colFirst"><code>void</code></td> <td class="colLast"><code><strong><a href="../../../com/rabbitmq/tools/Tracer.html#start()">start</a></strong>()</code> </td> </tr> </table> <ul class="blockList"> <li class="blockList"><a name="methods_inherited_from_class_java.lang.Object"> <!-- --> </a> <h3>Methods inherited from class java.lang.Object</h3> <code>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</code></li> </ul> </li> </ul> </li> </ul> </div> <div class="details"> <ul class="blockList"> <li class="blockList"> <!-- ========= CONSTRUCTOR DETAIL ======== --> <ul class="blockList"> <li class="blockList"><a name="constructor_detail"> <!-- --> </a> <h3>Constructor Detail</h3> <a name="Tracer(int, java.lang.String, java.lang.String, int, com.rabbitmq.tools.Tracer.Logger, java.util.Properties)"> <!-- --> </a> <ul class="blockList"> <li class="blockList"> <h4>Tracer</h4> <pre>public Tracer(int listenPort, java.lang.String id, java.lang.String host, int port, <a href="../../../com/rabbitmq/tools/Tracer.Logger.html" title="interface in com.rabbitmq.tools">Tracer.Logger</a> logger, java.util.Properties props) throws java.io.IOException</pre> <dl><dt><span class="strong">Throws:</span></dt> <dd><code>java.io.IOException</code></dd></dl> </li> </ul> <a name="Tracer(java.lang.String)"> <!-- --> </a> <ul class="blockList"> <li class="blockList"> <h4>Tracer</h4> <pre>public Tracer(java.lang.String id) throws java.io.IOException</pre> <dl><dt><span class="strong">Throws:</span></dt> <dd><code>java.io.IOException</code></dd></dl> </li> </ul> <a name="Tracer(java.lang.String, java.util.Properties)"> <!-- --> </a> <ul class="blockListLast"> <li class="blockList"> <h4>Tracer</h4> <pre>public Tracer(java.lang.String id, java.util.Properties props) throws java.io.IOException</pre> <dl><dt><span class="strong">Throws:</span></dt> <dd><code>java.io.IOException</code></dd></dl> </li> </ul> </li> </ul> <!-- ============ METHOD DETAIL ========== --> <ul class="blockList"> <li class="blockList"><a name="method_detail"> <!-- --> </a> <h3>Method Detail</h3> <a name="main(java.lang.String[])"> <!-- --> </a> <ul class="blockList"> <li class="blockList"> <h4>main</h4> <pre>public static void main(java.lang.String[] args)</pre> </li> </ul> <a name="start()"> <!-- --> </a> <ul class="blockList"> <li class="blockList"> <h4>start</h4> <pre>public void start()</pre> </li> </ul> <a name="run()"> <!-- --> </a> <ul class="blockList"> <li class="blockList"> <h4>run</h4> <pre>public void run()</pre> <dl> <dt><strong>Specified by:</strong></dt> <dd><code>run</code> in interface <code>java.lang.Runnable</code></dd> </dl> </li> </ul> <a name="log(java.lang.String)"> <!-- --> </a> <ul class="blockList"> <li class="blockList"> <h4>log</h4> <pre>public void log(java.lang.String message)</pre> </li> </ul> <a name="logException(java.lang.Exception)"> <!-- --> </a> <ul class="blockListLast"> <li class="blockList"> <h4>logException</h4> <pre>public void logException(java.lang.Exception e)</pre> </li> </ul> </li> </ul> </li> </ul> </div> </div> <!-- ========= END OF CLASS DATA ========= --> <!-- ======= START OF BOTTOM NAVBAR ====== --> <div class="bottomNav"><a name="navbar_bottom"> <!-- --> </a><a href="#skip-navbar_bottom" title="Skip navigation links"></a><a name="navbar_bottom_firstrow"> <!-- --> </a> <ul class="navList" title="Navigation"> <li><a href="../../../overview-summary.html">Overview</a></li> <li><a href="package-summary.html">Package</a></li> <li class="navBarCell1Rev">Class</li> <li><a href="package-tree.html">Tree</a></li> <li><a href="../../../deprecated-list.html">Deprecated</a></li> <li><a href="../../../index-all.html">Index</a></li> <li><a href="../../../help-doc.html">Help</a></li> </ul> </div> <div class="subNav"> <ul class="navList"> <li>Prev Class</li> <li><a href="../../../com/rabbitmq/tools/Tracer.AsyncLogger.html" title="class in com.rabbitmq.tools"><span class="strong">Next Class</span></a></li> </ul> <ul class="navList"> <li><a href="../../../index.html?com/rabbitmq/tools/Tracer.html" target="_top">Frames</a></li> <li><a href="Tracer.html" target="_top">No Frames</a></li> </ul> <ul class="navList" id="allclasses_navbar_bottom"> <li><a href="../../../allclasses-noframe.html">All Classes</a></li> </ul> <div> <script type="text/javascript"><!-- allClassesLink = document.getElementById("allclasses_navbar_bottom"); if(window==top) { allClassesLink.style.display = "block"; } else { allClassesLink.style.display = "none"; } //--> </script> </div> <div> <ul class="subNavList"> <li>Summary: </li> <li><a href="#nested_class_summary">Nested</a> | </li> <li>Field | </li> <li><a href="#constructor_summary">Constr</a> | </li> <li><a href="#method_summary">Method</a></li> </ul> <ul class="subNavList"> <li>Detail: </li> <li>Field | </li> <li><a href="#constructor_detail">Constr</a> | </li> <li><a href="#method_detail">Method</a></li> </ul> </div> <a name="skip-navbar_bottom"> <!-- --> </a></div> <!-- ======== END OF BOTTOM NAVBAR ======= --> </body> </html>