From 7ae94f608a70a757b743ad777c9e62fe9fa699dc Mon Sep 17 00:00:00 2001 From: Stefan Glaser <stefan.glaser@hs-offenburg.de> Date: Wed, 3 Apr 2019 14:51:31 +0200 Subject: [PATCH] Process TCP-NO-DELAY option for incoming subscriber connections. * Check incoming subscriber connection requests for the TCP-NO-DELAY header field and set the TCP-NO-DELAY option on the corresponding channel accordingly. --- .../ros/internal/transport/tcp/TcpServerHandshakeHandler.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/rosjava/src/main/java/org/ros/internal/transport/tcp/TcpServerHandshakeHandler.java b/rosjava/src/main/java/org/ros/internal/transport/tcp/TcpServerHandshakeHandler.java index f5f1a149..6f534d58 100644 --- a/rosjava/src/main/java/org/ros/internal/transport/tcp/TcpServerHandshakeHandler.java +++ b/rosjava/src/main/java/org/ros/internal/transport/tcp/TcpServerHandshakeHandler.java @@ -96,6 +96,10 @@ public class TcpServerHandshakeHandler extends SimpleChannelHandler { DefaultPublisher<?> publisher = topicParticipantManager.getPublisher(topicName); ChannelBuffer outgoingBuffer = publisher.finishHandshake(incomingConnectionHeader); Channel channel = ctx.getChannel(); + if (incomingConnectionHeader.hasField(ConnectionHeaderFields.TCP_NODELAY)) { + boolean tcpNoDelay = "1".equals(incomingConnectionHeader.getField(ConnectionHeaderFields.TCP_NODELAY)); + channel.getConfig().setOption("tcpNoDelay", tcpNoDelay); + } ChannelFuture future = channel.write(outgoingBuffer).await(); if (!future.isSuccess()) { throw new RosRuntimeException(future.getCause()); -- GitLab