diff --git a/rosjava/src/main/java/org/ros/internal/transport/queue/IncomingMessageQueue.java b/rosjava/src/main/java/org/ros/internal/transport/queue/IncomingMessageQueue.java index e53ae673ebf95187b0ad2c39360c3e6a26fea80d..95bdb3039b17df377882ecb3f0c5f920bcee8f8f 100644 --- a/rosjava/src/main/java/org/ros/internal/transport/queue/IncomingMessageQueue.java +++ b/rosjava/src/main/java/org/ros/internal/transport/queue/IncomingMessageQueue.java @@ -37,14 +37,14 @@ public class IncomingMessageQueue<T> { * {@link IncomingMessageQueue#addListener(MessageListener, int)} which are * consumed by user provided {@link MessageListener}s. */ - private static final int QUEUE_CAPACITY = 128; + private static final int QUEUE_CAPACITY = 16; - private final CircularBlockingQueue<LazyMessage<T>> lazyMessages; private final MessageReceiver<T> messageReceiver; private final MessageDispatcher<T> messageDispatcher; public IncomingMessageQueue(MessageDeserializer<T> deserializer, ExecutorService executorService) { - lazyMessages = new CircularBlockingQueue<LazyMessage<T>>(QUEUE_CAPACITY); + CircularBlockingQueue<LazyMessage<T>> lazyMessages = + new CircularBlockingQueue<LazyMessage<T>>(QUEUE_CAPACITY); messageReceiver = new MessageReceiver<T>(lazyMessages, deserializer); messageDispatcher = new MessageDispatcher<T>(lazyMessages, executorService); executorService.execute(messageDispatcher); diff --git a/rosjava/src/main/java/org/ros/internal/transport/queue/MessageReceiver.java b/rosjava/src/main/java/org/ros/internal/transport/queue/MessageReceiver.java index 916469ab17c09818a709de2947aff0f0f4a6bf27..2cd4f762e4f309dae189c38446919edc69b308df 100644 --- a/rosjava/src/main/java/org/ros/internal/transport/queue/MessageReceiver.java +++ b/rosjava/src/main/java/org/ros/internal/transport/queue/MessageReceiver.java @@ -57,7 +57,6 @@ public class MessageReceiver<T> extends AbstractNamedChannelHandler { if (DEBUG) { log.info(String.format("Received %d byte message.", buffer.readableBytes())); } - // TODO(damonkohler): Use MessageBuffers pool. // We have to make a defensive copy of the buffer here because Netty does // not guarantee that the returned ChannelBuffer will not be reused. lazyMessages.add(new LazyMessage<T>(buffer.copy(), deserializer)); diff --git a/rosjava/src/main/java/org/ros/internal/transport/queue/OutgoingMessageQueue.java b/rosjava/src/main/java/org/ros/internal/transport/queue/OutgoingMessageQueue.java index 46e03574dbbe057e48ea8250e70db62591c8d6c3..c7ebe441212ccd11a7ebdf3124c3568008389f14 100644 --- a/rosjava/src/main/java/org/ros/internal/transport/queue/OutgoingMessageQueue.java +++ b/rosjava/src/main/java/org/ros/internal/transport/queue/OutgoingMessageQueue.java @@ -42,7 +42,7 @@ public class OutgoingMessageQueue<T> { private static final boolean DEBUG = false; private static final Log log = LogFactory.getLog(OutgoingMessageQueue.class); - private static final int QUEUE_CAPACITY = 128; + private static final int QUEUE_CAPACITY = 16; private final MessageSerializer<T> serializer; private final CircularBlockingQueue<T> queue; diff --git a/rosjava_bootstrap/src/main/java/org/ros/internal/message/field/ChannelBufferField.java b/rosjava_bootstrap/src/main/java/org/ros/internal/message/field/ChannelBufferField.java index 463bba1761c76470ca802e016b4e7ba8894c921d..a13f542590d4558355b6948ba9d367ad157959b2 100644 --- a/rosjava_bootstrap/src/main/java/org/ros/internal/message/field/ChannelBufferField.java +++ b/rosjava_bootstrap/src/main/java/org/ros/internal/message/field/ChannelBufferField.java @@ -73,9 +73,7 @@ public class ChannelBufferField extends Field { if (currentSize < 0) { currentSize = buffer.readInt(); } - // There are no guarantees this buffer won't be reused so we create a - // defensive copy. - value = buffer.readSlice(currentSize).copy(); + value = buffer.readSlice(currentSize); } @Override