package org.opendaylight.openflowplugin.openflow.md.core.translator;
import java.math.BigInteger;
+import java.util.List;
+import java.util.concurrent.CopyOnWriteArrayList;
import org.opendaylight.openflowplugin.openflow.md.core.IMDMessageTranslator;
import org.opendaylight.openflowplugin.openflow.md.core.SwitchConnectionDistinguisher;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-public class ExperimenterTranslator implements IMDMessageTranslator<OfHeader, DataObject> {
+public class ExperimenterTranslator implements IMDMessageTranslator<OfHeader, List<DataObject>> {
protected static final Logger LOG = LoggerFactory.getLogger(ExperimenterTranslator.class);
-
+
@Override
- public DataObject translate(SwitchConnectionDistinguisher cookie,
+ public List<DataObject> translate(SwitchConnectionDistinguisher cookie,
SessionContext sc, OfHeader msg) {
if( msg instanceof ExperimenterMessage) {
ExperimenterMessage message = (ExperimenterMessage)msg ;
- LOG.error(" Experimenter Error Message received: Exp type={}, Exp Id={}, data={} ",
+ List<DataObject> list = new CopyOnWriteArrayList<DataObject>();
+ LOG.error(" Experimenter Error Message received: Exp type={}, Exp Id={}, data={} ",
message.getExpType(), message.getExperimenter(),
new String(message.getData()) ) ;
-
+
// create a Node Experimenter Error Notification event builder
NodeExperimenterErrorNotificationBuilder nodeErrBuilder = new NodeExperimenterErrorNotificationBuilder() ;
-
+
nodeErrBuilder.setTransactionId(new TransactionId(BigInteger.valueOf( message.getXid() ))) ;
-
- // This is a fixed value 0xffff ( 65535 )
+
+ // This is a fixed value 0xffff ( 65535 )
nodeErrBuilder.setType(org.opendaylight.yang.gen.v1.urn.opendaylight.flow.errors.rev131116.ErrorType.Experimenter ) ;
-
+
// The experimenterType is defined as long in ExperimenterMessage where is just needs to be integer
- nodeErrBuilder.setExpType(message.getExpType().intValue() ) ;
-
+ nodeErrBuilder.setExpType(message.getExpType().intValue() ) ;
+
nodeErrBuilder.setExperimenterId(message.getExperimenter()) ;
-
+
nodeErrBuilder.setData(new String (message.getData()) ) ;
-
+
//Not handling Augmentation
-
+
NodeExperimenterErrorNotification nodeExpErrorEvent = nodeErrBuilder.build();
-
- return nodeExpErrorEvent ;
+ list.add(nodeExpErrorEvent);
+ return list;
}else {
LOG.error( "Message is not of Experimenter Error Message " ) ;
return null;
}
}
-
+
}