Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 package org.ros.internal.message;
00018
00019 import org.jboss.netty.buffer.ChannelBuffer;
00020 import org.ros.internal.message.field.Field;
00021 import org.ros.message.MessageDeserializer;
00022 import org.ros.message.MessageFactory;
00023 import org.ros.message.MessageIdentifier;
00024
00028 public class DefaultMessageDeserializer<T> implements MessageDeserializer<T> {
00029
00030 private final MessageIdentifier messageIdentifier;
00031 private final MessageFactory messageFactory;
00032
00033 public DefaultMessageDeserializer(MessageIdentifier messageIdentifier,
00034 MessageFactory messageFactory) {
00035 this.messageIdentifier = messageIdentifier;
00036 this.messageFactory = messageFactory;
00037 }
00038
00039 @SuppressWarnings("unchecked")
00040 @Override
00041 public T deserialize(ChannelBuffer buffer) {
00042 Message message = messageFactory.newFromType(messageIdentifier.getType());
00043 for (Field field : message.toRawMessage().getFields()) {
00044 if (!field.isConstant()) {
00045 field.deserialize(buffer);
00046 }
00047 }
00048 return (T) message;
00049 }
00050 }