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