Author: gsim Date: Fri Oct 10 12:36:44 2014 New Revision: 1630776 URL: http://svn.apache.org/r1630776 Log: added simple trace API to proton-j
Modified: qpid/proton/branches/examples/proton-j/src/main/java/org/apache/qpid/proton/engine/Transport.java qpid/proton/branches/examples/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/FrameWriter.java qpid/proton/branches/examples/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/SaslImpl.java qpid/proton/branches/examples/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/TransportImpl.java qpid/proton/branches/examples/proton-j/src/main/resources/cengine.py Modified: qpid/proton/branches/examples/proton-j/src/main/java/org/apache/qpid/proton/engine/Transport.java URL: http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-j/src/main/java/org/apache/qpid/proton/engine/Transport.java?rev=1630776&r1=1630775&r2=1630776&view=diff ============================================================================== --- qpid/proton/branches/examples/proton-j/src/main/java/org/apache/qpid/proton/engine/Transport.java (original) +++ qpid/proton/branches/examples/proton-j/src/main/java/org/apache/qpid/proton/engine/Transport.java Fri Oct 10 12:36:44 2014 @@ -73,6 +73,11 @@ public interface Transport extends Endpo } } + public static final int TRACE_OFF = 0; + public static final int TRACE_RAW = 1; + public static final int TRACE_FRM = 2; + public static final int TRACE_DRV = 4; + public static final int DEFAULT_MAX_FRAME_SIZE = -1; /** the lower bound for the agreed maximum frame size (in bytes). */ @@ -80,6 +85,8 @@ public interface Transport extends Endpo public int SESSION_WINDOW = 16*1024; public int END_OF_STREAM = -1; + public void trace(int levels); + public void bind(Connection connection); public void unbind(); Modified: qpid/proton/branches/examples/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/FrameWriter.java URL: http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/FrameWriter.java?rev=1630776&r1=1630775&r2=1630776&view=diff ============================================================================== --- qpid/proton/branches/examples/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/FrameWriter.java (original) +++ qpid/proton/branches/examples/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/FrameWriter.java Fri Oct 10 12:36:44 2014 @@ -46,14 +46,14 @@ class FrameWriter private int _maxFrameSize; private byte _frameType; final private Ref<ProtocolTracer> _protocolTracer; - private Object _logCtx; + private TransportImpl _transport; private int _frameStart = 0; private int _payloadStart; private int _performativeSize; FrameWriter(EncoderImpl encoder, int maxFrameSize, byte frameType, - Ref<ProtocolTracer> protocolTracer, Object logCtx) + Ref<ProtocolTracer> protocolTracer, TransportImpl transport) { _encoder = encoder; _bbuf = ByteBuffer.allocate(1024); @@ -62,7 +62,7 @@ class FrameWriter _maxFrameSize = maxFrameSize; _frameType = frameType; _protocolTracer = protocolTracer; - _logCtx = logCtx; + _transport = transport; } void setMaxFrameSize(int maxFrameSize) @@ -155,7 +155,7 @@ class FrameWriter // code, further refactor will fix this if (_frameType == AMQP_FRAME_TYPE) { TransportFrame frame = new TransportFrame(channel, (FrameBody) frameBody, Binary.create(originalPayload)); - TransportImpl.log(_logCtx, TransportImpl.OUTGOING, frame); + _transport.log(TransportImpl.OUTGOING, frame); ProtocolTracer tracer = _protocolTracer.get(); if(tracer != null) Modified: qpid/proton/branches/examples/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/SaslImpl.java URL: http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/SaslImpl.java?rev=1630776&r1=1630775&r2=1630776&view=diff ============================================================================== --- qpid/proton/branches/examples/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/SaslImpl.java (original) +++ qpid/proton/branches/examples/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/SaslImpl.java Fri Oct 10 12:36:44 2014 @@ -54,6 +54,8 @@ public class SaslImpl implements Sasl, S private final DecoderImpl _decoder = new DecoderImpl(); private final EncoderImpl _encoder = new EncoderImpl(_decoder); + private final TransportImpl _transport; + private boolean _tail_closed = false; private final ByteBuffer _inputBuffer; private boolean _head_closed = false; @@ -87,14 +89,15 @@ public class SaslImpl implements Sasl, S * returned by {@link SaslTransportWrapper#getInputBuffer()} and * {@link SaslTransportWrapper#getOutputBuffer()}. */ - SaslImpl(int maxFrameSize) + SaslImpl(TransportImpl transport, int maxFrameSize) { + _transport = transport; _inputBuffer = newWriteableBuffer(maxFrameSize); _outputBuffer = newWriteableBuffer(maxFrameSize); AMQPDefinedTypes.registerAllTypes(_decoder,_encoder); _frameParser = new SaslFrameParser(this, _decoder); - _frameWriter = new FrameWriter(_encoder, maxFrameSize, FrameWriter.SASL_FRAME_TYPE, null, this); + _frameWriter = new FrameWriter(_encoder, maxFrameSize, FrameWriter.SASL_FRAME_TYPE, null, _transport); } @Override Modified: qpid/proton/branches/examples/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/TransportImpl.java URL: http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/TransportImpl.java?rev=1630776&r1=1630775&r2=1630776&view=diff ============================================================================== --- qpid/proton/branches/examples/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/TransportImpl.java (original) +++ qpid/proton/branches/examples/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/TransportImpl.java Fri Oct 10 12:36:44 2014 @@ -67,6 +67,19 @@ public class TransportImpl extends Endpo { static final int BUFFER_RELEASE_THRESHOLD = Integer.getInteger("proton.transport_buffer_release_threshold", 2 * 1024 * 1024); + private static final boolean getBooleanEnv(String name) + { + String value = System.getenv(name); + return "true".equalsIgnoreCase(value) || + "1".equals(value) || + "yes".equalsIgnoreCase(value); + } + + private static final boolean FRM_ENABLED = getBooleanEnv("PN_TRACE_FRM"); + + // trace levels + private int _levels = (FRM_ENABLED ? this.TRACE_FRM : 0); + private FrameParser _frameParser; private ConnectionImpl _connectionEndpoint; @@ -133,7 +146,6 @@ public class TransportImpl extends Endpo FrameWriter.AMQP_FRAME_TYPE, _protocolTracer, this); - } private void init() @@ -148,6 +160,11 @@ public class TransportImpl extends Endpo } @Override + public void trace(int levels) { + _levels = levels; + } + + @Override public int getMaxFrameSize() { return _maxFrameSize; @@ -301,7 +318,7 @@ public class TransportImpl extends Endpo } init(); - _sasl = new SaslImpl(_remoteMaxFrameSize); + _sasl = new SaslImpl(this, _remoteMaxFrameSize); TransportWrapper transportWrapper = _sasl.wrap(_inputProcessor, _outputProcessor); _inputProcessor = transportWrapper; _outputProcessor = transportWrapper; @@ -1009,6 +1026,9 @@ public class TransportImpl extends Endpo { // TODO check null transportSession = _localSessions.get(begin.getRemoteChannel().intValue()); + if (transportSession == null) { + throw new NullPointerException("uncorrelated channel: " + begin.getRemoteChannel()); + } session = transportSession.getSession(); } @@ -1204,7 +1224,7 @@ public class TransportImpl extends Endpo throw new IllegalStateException("Transport cannot accept frame: " + frame); } - log(this, INCOMING, frame); + log(INCOMING, frame); ProtocolTracer tracer = _protocolTracer.get(); if( tracer != null ) @@ -1379,21 +1399,11 @@ public class TransportImpl extends Endpo static String INCOMING = "<-"; static String OUTGOING = "->"; - private static final boolean getBooleanEnv(String name) - { - String value = System.getenv(name); - return "true".equalsIgnoreCase(value) || - "1".equals(value) || - "yes".equalsIgnoreCase(value); - } - - private static final boolean ENABLED = getBooleanEnv("PN_TRACE_FRM"); - - static void log(Object ctx, String event, TransportFrame frame) + void log(String event, TransportFrame frame) { - if (ENABLED) { + if ((_levels & TRACE_FRM) != 0) { StringBuilder msg = new StringBuilder(); - msg.append("[").append(System.identityHashCode(ctx)).append(":") + msg.append("[").append(System.identityHashCode(this)).append(":") .append(frame.getChannel()).append("]"); msg.append(" ").append(event).append(" ").append(frame.getBody()); if (frame.getPayload() != null) { Modified: qpid/proton/branches/examples/proton-j/src/main/resources/cengine.py URL: http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-j/src/main/resources/cengine.py?rev=1630776&r1=1630775&r2=1630776&view=diff ============================================================================== --- qpid/proton/branches/examples/proton-j/src/main/resources/cengine.py (original) +++ qpid/proton/branches/examples/proton-j/src/main/resources/cengine.py Fri Oct 10 12:36:44 2014 @@ -25,7 +25,7 @@ from org.apache.qpid.proton.amqp.transac from org.apache.qpid.proton.amqp.transport import ErrorCondition, \ SenderSettleMode, ReceiverSettleMode from org.apache.qpid.proton.engine import EndpointState, Sender, \ - Receiver, TransportException + Receiver, Transport, TransportException from java.util import EnumSet from jarray import array, zeros @@ -72,10 +72,10 @@ PN_REJECTED = (0x0000000000000025) PN_RELEASED = (0x0000000000000026) PN_MODIFIED = (0x0000000000000027) -PN_TRACE_OFF = (0) -PN_TRACE_RAW = (1) -PN_TRACE_FRM = (2) -PN_TRACE_DRV = (4) +PN_TRACE_OFF = Transport.TRACE_OFF +PN_TRACE_RAW = Transport.TRACE_RAW +PN_TRACE_FRM = Transport.TRACE_FRM +PN_TRACE_DRV = Transport.TRACE_DRV def wrap(obj, wrapper): if obj: @@ -897,8 +897,7 @@ def pn_transport_unbind(trans): return 0 def pn_transport_trace(trans, n): - # XXX - pass + trans.impl.trace(n) def pn_transport_pending(trans): return trans.impl.pending() --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@qpid.apache.org For additional commands, e-mail: commits-h...@qpid.apache.org