You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by gs...@apache.org on 2014/10/10 14:36:45 UTC

svn commit: r1630776 - in /qpid/proton/branches/examples/proton-j/src/main: java/org/apache/qpid/proton/engine/ java/org/apache/qpid/proton/engine/impl/ resources/

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-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org