diff options
Diffstat (limited to 'container-search/src/main/java/com/yahoo/fs4/DocsumPacket.java')
-rw-r--r-- | container-search/src/main/java/com/yahoo/fs4/DocsumPacket.java | 33 |
1 files changed, 31 insertions, 2 deletions
diff --git a/container-search/src/main/java/com/yahoo/fs4/DocsumPacket.java b/container-search/src/main/java/com/yahoo/fs4/DocsumPacket.java index 3105b645cd0..ad679e0c53c 100644 --- a/container-search/src/main/java/com/yahoo/fs4/DocsumPacket.java +++ b/container-search/src/main/java/com/yahoo/fs4/DocsumPacket.java @@ -1,6 +1,10 @@ // 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 com.yahoo.document.GlobalId; + +import java.nio.ByteBuffer; + /** * An "extended query result" packet. This is the query result * packets used today, they allow more flexible sets of parameters @@ -8,10 +12,15 @@ package com.yahoo.fs4; * * @author bratseth */ -public class DocsumPacket { +public class DocsumPacket extends Packet { + + private GlobalId globalId = new GlobalId(new byte[GlobalId.LENGTH]); private byte[] data; + private DocsumPacket() { + } + /** * Constructor used by streaming search */ @@ -19,11 +28,31 @@ public class DocsumPacket { data = buffer.clone(); } + public static DocsumPacket create() { + return new DocsumPacket(); + } + + public int getCode() { return 205; } + + /** + * Fills this packet from a byte buffer positioned at the + * first byte of the packet + */ + public void decodeBody(ByteBuffer buffer) { + byte[] rawGid = new byte[GlobalId.LENGTH]; + buffer.get(rawGid); + globalId = new GlobalId(rawGid); + data=new byte[getLength()-12-GlobalId.LENGTH]; + buffer.get(data); + } + + public GlobalId getGlobalId() { return globalId; } public byte[] getData() { return data; } public String toString() { - return "docsum packet size: " + (data==null ? "(no data)" : data.length + " bytes") + " ]"; + return "docsum packet [globalId: " + globalId.toString() + + ", size: " + (data==null ? "(no data)" : data.length + " bytes") + " ]"; } } |