From f60ae53acb25a5e7fb6fea547fe66ab7865b84b1 Mon Sep 17 00:00:00 2001 From: Ryan Izard <rizard@g.clemson.edu> Date: Fri, 21 Aug 2015 16:29:11 -0400 Subject: [PATCH] Fixed port stats reply serialization where not all ports would be shown if sent in different messages. --- .../web/serializers/StatsReplySerializer.java | 49 ++++++++++--------- 1 file changed, 27 insertions(+), 22 deletions(-) diff --git a/src/main/java/net/floodlightcontroller/core/web/serializers/StatsReplySerializer.java b/src/main/java/net/floodlightcontroller/core/web/serializers/StatsReplySerializer.java index 67474cbab..3481e9745 100644 --- a/src/main/java/net/floodlightcontroller/core/web/serializers/StatsReplySerializer.java +++ b/src/main/java/net/floodlightcontroller/core/web/serializers/StatsReplySerializer.java @@ -689,31 +689,36 @@ public class StatsReplySerializer extends JsonSerializer<StatsReply> { jGen.writeEndArray(); } - - public static void serializePortReply(List<OFPortStatsReply> portReplies, JsonGenerator jGen) throws IOException, JsonProcessingException{ - OFPortStatsReply portReply = portReplies.get(0); // we will get only one PortReply and it will contains many OFPortStatsEntry ? - jGen.writeStringField("version", portReply.getVersion().toString()); //return the enum name - jGen.writeFieldName("port"); + public static void serializePortReply(List<OFPortStatsReply> portReplies, JsonGenerator jGen) throws IOException, JsonProcessingException{ + jGen.writeFieldName("port_reply"); jGen.writeStartArray(); - for(OFPortStatsEntry entry : portReply.getEntries()) { + for (OFPortStatsReply portReply : portReplies) { jGen.writeStartObject(); - jGen.writeStringField("portNumber",entry.getPortNo().toString()); - jGen.writeNumberField("receivePackets", entry.getRxPackets().getValue()); - jGen.writeNumberField("transmitPackets", entry.getTxPackets().getValue()); - jGen.writeNumberField("receiveBytes", entry.getRxBytes().getValue()); - jGen.writeNumberField("transmitBytes", entry.getTxBytes().getValue()); - jGen.writeNumberField("receiveDropped", entry.getRxDropped().getValue()); - jGen.writeNumberField("transmitDropped", entry.getTxDropped().getValue()); - jGen.writeNumberField("receiveErrors", entry.getRxErrors().getValue()); - jGen.writeNumberField("transmitErrors", entry.getTxErrors().getValue()); - jGen.writeNumberField("receiveFrameErrors", entry.getRxFrameErr().getValue()); - jGen.writeNumberField("receiveOverrunErrors", entry.getRxOverErr().getValue()); - jGen.writeNumberField("receiveCRCErrors", entry.getRxCrcErr().getValue()); - jGen.writeNumberField("collisions", entry.getCollisions().getValue()); - if (OFVersion.OF_13 == entry.getVersion()) { - jGen.writeNumberField("durationSec", entry.getDurationSec()); - jGen.writeNumberField("durationNsec", entry.getDurationNsec()); + jGen.writeStringField("version", portReply.getVersion().toString()); //return the enum name + jGen.writeFieldName("port"); + jGen.writeStartArray(); + for(OFPortStatsEntry entry : portReply.getEntries()) { + jGen.writeStartObject(); + jGen.writeStringField("portNumber",entry.getPortNo().toString()); + jGen.writeNumberField("receivePackets", entry.getRxPackets().getValue()); + jGen.writeNumberField("transmitPackets", entry.getTxPackets().getValue()); + jGen.writeNumberField("receiveBytes", entry.getRxBytes().getValue()); + jGen.writeNumberField("transmitBytes", entry.getTxBytes().getValue()); + jGen.writeNumberField("receiveDropped", entry.getRxDropped().getValue()); + jGen.writeNumberField("transmitDropped", entry.getTxDropped().getValue()); + jGen.writeNumberField("receiveErrors", entry.getRxErrors().getValue()); + jGen.writeNumberField("transmitErrors", entry.getTxErrors().getValue()); + jGen.writeNumberField("receiveFrameErrors", entry.getRxFrameErr().getValue()); + jGen.writeNumberField("receiveOverrunErrors", entry.getRxOverErr().getValue()); + jGen.writeNumberField("receiveCRCErrors", entry.getRxCrcErr().getValue()); + jGen.writeNumberField("collisions", entry.getCollisions().getValue()); + if (OFVersion.OF_13 == entry.getVersion()) { + jGen.writeNumberField("durationSec", entry.getDurationSec()); + jGen.writeNumberField("durationNsec", entry.getDurationNsec()); + } + jGen.writeEndObject(); } + jGen.writeEndArray(); jGen.writeEndObject(); } jGen.writeEndArray(); -- GitLab