diff options
Diffstat (limited to 'documentapi')
-rw-r--r-- | documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/RoutableFactories80.java | 11 |
1 files changed, 4 insertions, 7 deletions
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/RoutableFactories80.java b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/RoutableFactories80.java index a4dcd660ab8..2d29697717b 100644 --- a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/RoutableFactories80.java +++ b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/RoutableFactories80.java @@ -59,13 +59,10 @@ abstract class RoutableFactories80 { public boolean encode(Routable obj, DocumentSerializer out) { try { var protoMsg = encoderFn.apply(apiClass.cast(obj)); - var protoStream = CodedOutputStream.newInstance(out.getBuf().getByteBuffer()); // Not AutoCloseable... - try { - protoMsg.writeTo(protoStream); - } finally { - protoStream.flush(); - } - } catch (IOException | UnsupportedOperationException e) { + // TODO avoid this buffer indirection by directly exposing an OutputStream to write into...! + // ... or at the very least have a way to preallocate buffer output of protoMsg.getSerializedSize() bytes! + out.getBuf().put(protoMsg.toByteArray()); + } catch (RuntimeException e) { logCodecError("encoding", e); return false; } |