private void processOFMultipartReply(OFStatsReply stats) { log.debug("OPLK Switch: Received message {} during switch-driver " + "subhandshake from switch {} ... ", stats, getStringId()); //Process experimenter messages if (stats.getStatsType() == OFStatsType.EXPERIMENTER) { try { //Note: We just re-use calient message for a short term. OFCalientPortDescStatsReply descReply = (OFCalientPortDescStatsReply) stats; opticalPorts.addAll(descReply.getPortDesc()); driverHandshakeComplete.set(true); } catch (ClassCastException e) { log.error("OPLK Switch: Unexspected Experimenter Multipart message type {} ", stats.getClass().getName()); } } }
@Override public void processDriverHandshakeMessage(OFMessage m) { if (!startDriverHandshakeCalled) { throw new SwitchDriverSubHandshakeNotStarted(); } if (driverHandshakeComplete.get()) { throw new SwitchDriverSubHandshakeCompleted(m); } switch (m.getType()) { case BARRIER_REPLY: break; case ERROR: log.error("Switch Error {} {}", getStringId(), m); break; case FEATURES_REPLY: break; case FLOW_REMOVED: break; case GET_ASYNC_REPLY: break; case PACKET_IN: break; case PORT_STATUS: break; case QUEUE_GET_CONFIG_REPLY: break; case ROLE_REPLY: break; case STATS_REPLY: log.warn("Received port desc reply"); OFCalientPortDescStatsReply descStatsReply = (OFCalientPortDescStatsReply) m; fiberPorts.addAll(descStatsReply.getPortDesc()); // Multi-part message if (!descStatsReply.getFlags().contains(OFStatsReplyFlags.REPLY_MORE)) { driverHandshakeComplete.set(true); } break; default: log.warn("Received message {} during switch-driver " + "subhandshake " + "from switch {} ... " + "Ignoring message", m, getStringId()); } }
@Override public void processDriverHandshakeMessage(OFMessage m) { if (!startDriverHandshakeCalled) { throw new SwitchDriverSubHandshakeNotStarted(); } if (driverHandshakeComplete.get()) { throw new SwitchDriverSubHandshakeCompleted(m); } switch (m.getType()) { case BARRIER_REPLY: break; case ERROR: log.error("Switch Error {} {}", getStringId(), m); break; case FEATURES_REPLY: break; case FLOW_REMOVED: break; case GET_ASYNC_REPLY: break; case PACKET_IN: break; case PORT_STATUS: break; case QUEUE_GET_CONFIG_REPLY: break; case ROLE_REPLY: break; case STATS_REPLY: log.debug("Received port desc reply"); OFCalientPortDescStatsReply descStatsReply = (OFCalientPortDescStatsReply) m; fiberPorts.addAll(descStatsReply.getPortDesc()); // Multi-part message if (!descStatsReply.getFlags().contains(OFStatsReplyFlags.REPLY_MORE)) { driverHandshakeComplete.set(true); } break; default: log.warn("Received message {} during switch-driver " + "subhandshake " + "from switch {} ... " + "Ignoring message", m, getStringId()); } }