From 7cccc4f193f36b4ff8fa2e4b77671e65dba32b7a Mon Sep 17 00:00:00 2001 From: earthchen Date: Wed, 7 Dec 2022 20:11:15 +0800 Subject: [PATCH] opt some tri code (#11079) * opt some code * remove unused if * fix npe --- .../tri/stream/TripleServerStream.java | 41 +++++++++---------- 1 file changed, 19 insertions(+), 22 deletions(-) diff --git a/dubbo-rpc/dubbo-rpc-triple/src/main/java/org/apache/dubbo/rpc/protocol/tri/stream/TripleServerStream.java b/dubbo-rpc/dubbo-rpc-triple/src/main/java/org/apache/dubbo/rpc/protocol/tri/stream/TripleServerStream.java index f289bb1706..33a17c6283 100644 --- a/dubbo-rpc/dubbo-rpc-triple/src/main/java/org/apache/dubbo/rpc/protocol/tri/stream/TripleServerStream.java +++ b/dubbo-rpc/dubbo-rpc-triple/src/main/java/org/apache/dubbo/rpc/protocol/tri/stream/TripleServerStream.java @@ -371,14 +371,6 @@ public class TripleServerStream extends AbstractStream implements ServerStream { } } - try { - final TriDecoder.Listener listener = new ServerDecoderListener(); - deframer = new TriDecoder(deCompressor, listener); - } catch (Throwable t) { - responseErr(TriRpcStatus.INTERNAL.withCause(t)); - return; - } - Map requestMetadata = headersToMap(headers); boolean hasStub = pathResolver.hasNativeStub(path); if (hasStub) { @@ -390,10 +382,9 @@ public class TripleServerStream extends AbstractStream implements ServerStream { frameworkModel, acceptEncoding, serviceName, originalMethodName, filters, executor); } + // must before onHeader + deframer = new TriDecoder(deCompressor, new ServerDecoderListener(listener)); listener.onHeader(requestMetadata); - if (listener == null) { - deframer.close(); - } } @@ -427,21 +418,27 @@ public class TripleServerStream extends AbstractStream implements ServerStream { .withDescription("Canceled by client ,errorCode=" + errorCode)); }); } + } - private class ServerDecoderListener implements TriDecoder.Listener { - @Override - public void onRawMessage(byte[] data) { - listener.onMessage(data); - } + private static class ServerDecoderListener implements TriDecoder.Listener { - @Override - public void close() { - if (listener != null) { - listener.onComplete(); - } - } + private final ServerStream.Listener listener; + + public ServerDecoderListener(ServerStream.Listener listener) { + this.listener = listener; + } + + @Override + public void onRawMessage(byte[] data) { + listener.onMessage(data); + } + + @Override + public void close() { + listener.onComplete(); } } + }