Skip to content
Snippets Groups Projects
Commit a5cbea65 authored by Juan Ignacio Ubeira's avatar Juan Ignacio Ubeira
Browse files

Using ChannelBuffers for int8[] data; fixing testInt8List.

parent 24348c46
Branches ivy-repo
No related tags found
No related merge requests found
...@@ -161,8 +161,8 @@ class MessageImpl implements RawMessage, GetInstance { ...@@ -161,8 +161,8 @@ class MessageImpl implements RawMessage, GetInstance {
} }
@Override @Override
public byte[] getInt8Array(String name) { public ChannelBuffer getInt8Array(String name) {
return (byte[]) messageFields.getFieldValue(name); return (ChannelBuffer) messageFields.getFieldValue(name);
} }
@Override @Override
......
...@@ -85,7 +85,7 @@ public interface RawMessage extends Message { ...@@ -85,7 +85,7 @@ public interface RawMessage extends Message {
byte getInt8(String name); byte getInt8(String name);
byte[] getInt8Array(String name); ChannelBuffer getInt8Array(String name);
<T extends Message> T getMessage(String name); <T extends Message> T getMessage(String name);
......
...@@ -19,6 +19,7 @@ package org.ros.internal.message.field; ...@@ -19,6 +19,7 @@ package org.ros.internal.message.field;
import com.google.common.base.Preconditions; import com.google.common.base.Preconditions;
import org.jboss.netty.buffer.ChannelBuffer; import org.jboss.netty.buffer.ChannelBuffer;
import org.jboss.netty.buffer.ChannelBuffers;
import org.ros.internal.message.MessageBuffers; import org.ros.internal.message.MessageBuffers;
import java.nio.ByteOrder; import java.nio.ByteOrder;
...@@ -52,9 +53,15 @@ public class ChannelBufferField extends Field { ...@@ -52,9 +53,15 @@ public class ChannelBufferField extends Field {
@Override @Override
public void setValue(Object value) { public void setValue(Object value) {
Preconditions.checkArgument(((ChannelBuffer) value).order() == ByteOrder.LITTLE_ENDIAN); ChannelBuffer channelBufferValue = null;
Preconditions.checkArgument(size < 0 || ((ChannelBuffer) value).readableBytes() == size); if (value instanceof byte[]) {
this.value = (ChannelBuffer) value; channelBufferValue = ChannelBuffers.wrappedBuffer(ByteOrder.LITTLE_ENDIAN, byte[].class.cast(value));
} else if (value instanceof ChannelBuffer) {
channelBufferValue = ChannelBuffer.class.cast(value);
}
Preconditions.checkArgument(channelBufferValue.order() == ByteOrder.LITTLE_ENDIAN);
Preconditions.checkArgument(size < 0 || channelBufferValue.readableBytes() == size);
this.value = channelBufferValue;
} }
@Override @Override
......
...@@ -20,11 +20,15 @@ import static org.junit.Assert.assertEquals; ...@@ -20,11 +20,15 @@ import static org.junit.Assert.assertEquals;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import org.jboss.netty.buffer.ChannelBuffer;
import org.jboss.netty.buffer.ChannelBuffers;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import org.ros.internal.message.topic.TopicDefinitionResourceProvider; import org.ros.internal.message.topic.TopicDefinitionResourceProvider;
import org.ros.message.MessageFactory; import org.ros.message.MessageFactory;
import java.nio.ByteOrder;
/** /**
* @author damonkohler@google.com (Damon Kohler) * @author damonkohler@google.com (Damon Kohler)
*/ */
...@@ -114,11 +118,13 @@ public class MessageTest { ...@@ -114,11 +118,13 @@ public class MessageTest {
assertEquals("Hello, ROS! # comment", rawMessage.getString("data")); assertEquals("Hello, ROS! # comment", rawMessage.getString("data"));
} }
@Test
public void testInt8List() { public void testInt8List() {
topicDefinitionResourceProvider.add("foo/foo", "int8[] data"); topicDefinitionResourceProvider.add("foo/foo", "int8[] data");
RawMessage rawMessage = messageFactory.newFromType("foo/foo"); RawMessage rawMessage = messageFactory.newFromType("foo/foo");
byte[] data = new byte[] { (byte) 1, (byte) 2, (byte) 3 }; byte[] rawData = new byte[] { (byte) 1, (byte) 2, (byte) 3 };
rawMessage.setInt8Array("data", data); ChannelBuffer data = ChannelBuffers.wrappedBuffer(ByteOrder.LITTLE_ENDIAN, rawData);
rawMessage.setInt8Array("data", rawData);
assertEquals(data, rawMessage.getInt8Array("data")); assertEquals(data, rawMessage.getInt8Array("data"));
} }
} }
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment