summaryrefslogtreecommitdiffstats
path: root/container-search/src/main/java/com/yahoo/fs4/PacketQueryTracer.java
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2019-09-18 07:04:43 +0200
committerGitHub <noreply@github.com>2019-09-18 07:04:43 +0200
commitccabf1c7454994aa2534e8c82abc31fdacd326aa (patch)
tree463ab5145edf4a26243cc4a92d04bfb82a3c1580 /container-search/src/main/java/com/yahoo/fs4/PacketQueryTracer.java
parentbd6c6f09f32005ddb63b3f452ad1ac94709681a1 (diff)
Revert "Revert "Revert "Balder/no more fs4 dispatching from fastsearcher"""
Diffstat (limited to 'container-search/src/main/java/com/yahoo/fs4/PacketQueryTracer.java')
-rw-r--r--container-search/src/main/java/com/yahoo/fs4/PacketQueryTracer.java53
1 files changed, 53 insertions, 0 deletions
diff --git a/container-search/src/main/java/com/yahoo/fs4/PacketQueryTracer.java b/container-search/src/main/java/com/yahoo/fs4/PacketQueryTracer.java
new file mode 100644
index 00000000000..b577ef31ad8
--- /dev/null
+++ b/container-search/src/main/java/com/yahoo/fs4/PacketQueryTracer.java
@@ -0,0 +1,53 @@
+// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.fs4;
+
+import java.nio.ByteBuffer;
+
+import com.yahoo.fs4.mplex.FS4Channel;
+import com.yahoo.search.Query;
+
+/**
+ * Adds packets to the query context
+ *
+ * @author Tony Vaagenes
+ */
+public class PacketQueryTracer implements PacketListener {
+
+ private final static int traceLevel = 10;
+
+ private void addTrace(FS4Channel channel, BasicPacket packet, ByteBuffer serializedForm) {
+ Query query = channel.getQuery();
+ if (query != null && query.getTraceLevel() >= traceLevel) {
+ StringBuilder traceString = new StringBuilder();
+ traceString.append(packet.getClass().getSimpleName()).append(": ");
+ hexDump(serializedForm, traceString);
+
+ final boolean includeQuery = true;
+ query.trace(traceString.toString(), includeQuery, traceLevel);
+ }
+ }
+
+ private void hexDump(ByteBuffer serializedForm, StringBuilder traceString) {
+ HexByteIterator hexByteIterator = new HexByteIterator(serializedForm);
+
+ long count = 0;
+ final int maxNumCharacters = 80;
+ while (hexByteIterator.hasNext()) {
+ if (++count % maxNumCharacters == 0)
+ traceString.append('\n');
+ traceString.append(hexByteIterator.next());
+ }
+ }
+
+ @Override
+ public void packetSent(FS4Channel channel, BasicPacket packet, ByteBuffer serializedForm) {
+ addTrace(channel, packet, serializedForm);
+ }
+
+ @Override
+ public void packetReceived(FS4Channel channel, BasicPacket packet, ByteBuffer serializedForm) {
+ addTrace(channel, packet, serializedForm);
+ }
+
+}
+