--- /dev/null
+
+/*
+ * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+
+package org.opendaylight.controller.sal.reader;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+
+import org.opendaylight.controller.sal.flowprogrammer.Flow;
+
+/**
+ * Represents the flow that is installed on the network node
+ * along with the table location, hit counters and timers
+ */
+
+@XmlRootElement (name="FlowStat")
+@XmlAccessorType(XmlAccessType.NONE)
+public class FlowOnNode {
+ @XmlElement
+ private Flow flow; // Flow descriptor
+ @XmlElement
+ private byte tableId;
+ @XmlElement
+ private int durationSeconds;
+ @XmlElement
+ private int durationNanoseconds;
+ @XmlElement
+ private long packetCount;
+ @XmlElement
+ private long byteCount;
+
+ /* Dummy constructor for JAXB */
+ private FlowOnNode () {
+ }
+
+ public FlowOnNode(Flow flow) {
+ this.flow = flow;
+ }
+
+ /**
+ * Returns the description of the flow which statistics are about
+ * @return
+ */
+ public Flow getFlow() {
+ return flow;
+ }
+
+ /**
+ * Set the packet count's value
+ * @param count
+ */
+ public void setPacketCount(long count) {
+ packetCount = count;
+ }
+
+ /**
+ * Set the byte count's value
+ * @param count
+ */
+ public void setByteCount(long count) {
+ byteCount = count;
+ }
+
+ /**
+ * Returns the packet count for the flow
+ * @return
+ */
+ public long getPacketCount() {
+ return packetCount;
+ }
+
+ /**
+ * Return the byte count for the flow
+ * @return
+ */
+ public long getByteCount() {
+ return byteCount;
+ }
+
+ public byte getTableId() {
+ return tableId;
+ }
+
+ public void setTableId(byte tableId) {
+ this.tableId = tableId;
+ }
+
+ public int getDurationSeconds() {
+ return durationSeconds;
+ }
+
+ public void setDurationSeconds(int durationSeconds) {
+ this.durationSeconds = durationSeconds;
+ }
+
+ public int getDurationNanoseconds() {
+ return durationNanoseconds;
+ }
+
+ public void setDurationNanoseconds(int durationNanoseconds) {
+ this.durationNanoseconds = durationNanoseconds;
+ }
+
+ @Override
+ public String toString() {
+ return "FlowOnNode[flow =" + flow + ", tableId = " + tableId
+ + ", sec = " + durationSeconds + ", nsec = "
+ + durationNanoseconds + ", pkt = " + packetCount + ", byte = "
+ + byteCount + "]";
+ }
+}