summaryrefslogtreecommitdiffstats
path: root/vespajlib/src/main/java/com/yahoo/slime/BinaryEncoder.java
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2021-08-30 16:51:11 +0200
committerHenning Baldersheim <balder@yahoo-inc.com>2021-08-30 16:51:11 +0200
commit99531f22f32354317cc3dff9e5d48730270aafa7 (patch)
treebb33ab9c9f39eb4fd764a51f3a9b143bc5928a87 /vespajlib/src/main/java/com/yahoo/slime/BinaryEncoder.java
parentbeea81233a2b9334aac10ed32d14ad9ad8f73d9a (diff)
Avoid copying data just to compress them when it is not necessary.
Diffstat (limited to 'vespajlib/src/main/java/com/yahoo/slime/BinaryEncoder.java')
-rw-r--r--vespajlib/src/main/java/com/yahoo/slime/BinaryEncoder.java20
1 files changed, 11 insertions, 9 deletions
diff --git a/vespajlib/src/main/java/com/yahoo/slime/BinaryEncoder.java b/vespajlib/src/main/java/com/yahoo/slime/BinaryEncoder.java
index 4d9fdbba6d4..8f654b46032 100644
--- a/vespajlib/src/main/java/com/yahoo/slime/BinaryEncoder.java
+++ b/vespajlib/src/main/java/com/yahoo/slime/BinaryEncoder.java
@@ -1,28 +1,30 @@
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.slime;
-import static com.yahoo.slime.BinaryFormat.*;
+import static com.yahoo.slime.BinaryFormat.encode_double;
+import static com.yahoo.slime.BinaryFormat.encode_type_and_meta;
+import static com.yahoo.slime.BinaryFormat.encode_zigzag;
final class BinaryEncoder implements
ArrayTraverser, ObjectSymbolTraverser
{
- BufferedOutput out;
+ private final BufferedOutput out;
- public BinaryEncoder(int capacity) {
- out = new BufferedOutput(capacity);
+ BinaryEncoder() {
+ this(new BufferedOutput());
}
-
- public BinaryEncoder() {
- out = new BufferedOutput();
+ BinaryEncoder(BufferedOutput output) {
+ out = output;
}
- public byte[] encode(Slime slime) {
+ BufferedOutput encode(Slime slime) {
out.reset();
encodeSymbolTable(slime);
encodeValue(slime.get());
- return out.toArray();
+ return out;
}
+
void encode_cmpr_long(long value) {
byte next = (byte)(value & 0x7f);
value >>>= 7; // unsigned shift