From 9c8d4c2562b11ae55aca7681704628b0298815b4 Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Thu, 12 Oct 2023 17:12:42 +0200 Subject: [PATCH] NetconfSubsystem should be a ChannelDataReceiver We are tightly bound to our inner channel, do not allocate a separate object just to shuffle bytes. JIRA: NETCONF-1106 Change-Id: I2311170bdc6b1566be5062c1ea0ca38273187966 Signed-off-by: Robert Varga --- .../netconf/server/NetconfSubsystem.java | 27 ++++++++++--------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/protocol/netconf-server/src/main/java/org/opendaylight/netconf/server/NetconfSubsystem.java b/protocol/netconf-server/src/main/java/org/opendaylight/netconf/server/NetconfSubsystem.java index 0c1b23a755..7e4cbbf5d1 100644 --- a/protocol/netconf-server/src/main/java/org/opendaylight/netconf/server/NetconfSubsystem.java +++ b/protocol/netconf-server/src/main/java/org/opendaylight/netconf/server/NetconfSubsystem.java @@ -33,7 +33,8 @@ import org.opendaylight.netconf.shaded.sshd.server.command.AsyncCommand; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -final class NetconfSubsystem extends AbstractCommandSupport implements AsyncCommand, ChannelSessionAware { +final class NetconfSubsystem extends AbstractCommandSupport + implements AsyncCommand, ChannelSessionAware, ChannelDataReceiver { private static final Logger LOG = LoggerFactory.getLogger(NetconfSubsystem.class); private final EmbeddedChannel innerChannel = new EmbeddedChannel(); @@ -120,18 +121,18 @@ final class NetconfSubsystem extends AbstractCommandSupport implements AsyncComm * NOTE: The channel data receiver require to be set within current method, so it could be handled * with subsequent logic of ChannelSession#prepareChannelCommand() where this method is executed from. */ - channelSession.setDataReceiver(new ChannelDataReceiver() { - @Override - public int data(final ChannelSession channel, final byte[] buf, final int start, final int len) { - innerChannel.writeInbound(Unpooled.copiedBuffer(buf, start, len)); - return len; - } - - @Override - public void close() { - innerChannel.close(); - } - }); + channelSession.setDataReceiver(this); + } + + @Override + public int data(final ChannelSession channel, final byte[] buf, final int start, final int len) { + innerChannel.writeInbound(Unpooled.copiedBuffer(buf, start, len)); + return len; + } + + @Override + public void close() { + innerChannel.close(); } @Override -- 2.36.6