stats reply in progress
diff --git a/core/api/src/main/java/org/onlab/onos/net/flow/FlowRuleProvider.java b/core/api/src/main/java/org/onlab/onos/net/flow/FlowRuleProvider.java
index ca22c4f..184479b 100644
--- a/core/api/src/main/java/org/onlab/onos/net/flow/FlowRuleProvider.java
+++ b/core/api/src/main/java/org/onlab/onos/net/flow/FlowRuleProvider.java
@@ -1,6 +1,5 @@
package org.onlab.onos.net.flow;
-import org.onlab.onos.net.DeviceId;
import org.onlab.onos.net.provider.Provider;
/**
@@ -27,13 +26,4 @@
void removeFlowRule(FlowRule... flowRules);
- /**
- * Returns the collection of flow entries currently applied on the given
- * device.
- *
- * @param deviceId device identifier
- * @return collection of flow entries
- */
- Iterable<FlowEntry> getFlowMetrics(DeviceId deviceId);
-
}
diff --git a/core/api/src/main/java/org/onlab/onos/net/flow/FlowRuleProviderService.java b/core/api/src/main/java/org/onlab/onos/net/flow/FlowRuleProviderService.java
index 661b195..dc7b01e2b 100644
--- a/core/api/src/main/java/org/onlab/onos/net/flow/FlowRuleProviderService.java
+++ b/core/api/src/main/java/org/onlab/onos/net/flow/FlowRuleProviderService.java
@@ -29,4 +29,13 @@
*/
void flowAdded(FlowRule flowRule);
+ /**
+ * Pushes the collection of flow entries currently applied on the given
+ * device.
+ *
+ * @param deviceId device identifier
+ * @return collection of flow entries
+ */
+ void pushFlowMetrics(Iterable<FlowEntry> flowEntries);
+
}
diff --git a/core/trivial/src/main/java/org/onlab/onos/net/trivial/flow/impl/SimpleFlowRuleManager.java b/core/trivial/src/main/java/org/onlab/onos/net/trivial/flow/impl/SimpleFlowRuleManager.java
index 7540ec8..30238c4 100644
--- a/core/trivial/src/main/java/org/onlab/onos/net/trivial/flow/impl/SimpleFlowRuleManager.java
+++ b/core/trivial/src/main/java/org/onlab/onos/net/trivial/flow/impl/SimpleFlowRuleManager.java
@@ -1,5 +1,6 @@
package org.onlab.onos.net.trivial.flow.impl;
+import static com.google.common.base.Preconditions.checkNotNull;
import static org.slf4j.LoggerFactory.getLogger;
import java.util.ArrayList;
@@ -28,8 +29,6 @@
import org.onlab.onos.net.provider.AbstractProviderService;
import org.slf4j.Logger;
-import static com.google.common.base.Preconditions.checkNotNull;
-
@Component(immediate = true)
@Service
public class SimpleFlowRuleManager
@@ -111,8 +110,8 @@
}
private class InternalFlowRuleProviderService
- extends AbstractProviderService<FlowRuleProvider>
- implements FlowRuleProviderService {
+ extends AbstractProviderService<FlowRuleProvider>
+ implements FlowRuleProviderService {
protected InternalFlowRuleProviderService(FlowRuleProvider provider) {
super(provider);
@@ -158,6 +157,12 @@
eventDispatcher.post(event);
}
}
+
+ @Override
+ public void pushFlowMetrics(Iterable<FlowEntry> flowEntries) {
+ // TODO Auto-generated method stub
+
+ }
}
}
diff --git a/providers/openflow/flow/src/main/java/org/onlab/onos/provider/of/flow/impl/OpenFlowRuleProvider.java b/providers/openflow/flow/src/main/java/org/onlab/onos/provider/of/flow/impl/OpenFlowRuleProvider.java
index 9a5a9dd..c03f119 100644
--- a/providers/openflow/flow/src/main/java/org/onlab/onos/provider/of/flow/impl/OpenFlowRuleProvider.java
+++ b/providers/openflow/flow/src/main/java/org/onlab/onos/provider/of/flow/impl/OpenFlowRuleProvider.java
@@ -11,7 +11,6 @@
import org.apache.felix.scr.annotations.ReferenceCardinality;
import org.onlab.onos.net.DeviceId;
import org.onlab.onos.net.flow.DefaultFlowRule;
-import org.onlab.onos.net.flow.FlowEntry;
import org.onlab.onos.net.flow.FlowRule;
import org.onlab.onos.net.flow.FlowRuleProvider;
import org.onlab.onos.net.flow.FlowRuleProviderRegistry;
@@ -25,10 +24,18 @@
import org.onlab.onos.openflow.controller.OpenFlowSwitch;
import org.onlab.onos.openflow.controller.OpenFlowSwitchListener;
import org.projectfloodlight.openflow.protocol.OFFlowRemoved;
+import org.projectfloodlight.openflow.protocol.OFFlowStatsEntry;
+import org.projectfloodlight.openflow.protocol.OFFlowStatsReply;
import org.projectfloodlight.openflow.protocol.OFMessage;
import org.projectfloodlight.openflow.protocol.OFPortStatus;
+import org.projectfloodlight.openflow.protocol.OFStatsReply;
+import org.projectfloodlight.openflow.protocol.OFStatsType;
import org.slf4j.Logger;
+import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
+rt org.slf4j.Logger;
+
import com.google.common.collect.Maps;
/**
@@ -95,12 +102,6 @@
}
- @Override
- public Iterable<FlowEntry> getFlowMetrics(DeviceId deviceId) {
- // TODO Auto-generated method stub
- return null;
- }
-
//TODO: InternalFlowRuleProvider listening to stats and error and flowremoved.
// possibly barriers as well. May not be internal at all...
@@ -119,7 +120,6 @@
@Override
public void switchRemoved(Dpid dpid) {
collectors.remove(dpid).stop();
-
}
@Override
@@ -137,6 +137,7 @@
providerService.flowRemoved(fr);
break;
case STATS_REPLY:
+ pushFlowMetrics((OFStatsReply) msg);
break;
case BARRIER_REPLY:
case ERROR:
@@ -146,6 +147,19 @@
}
+ private void pushFlowMetrics(OFStatsReply stats) {
+ if (stats.getStatsType() != OFStatsType.FLOW) {
+ return;
+ }
+ final OFFlowStatsReply replies = (OFFlowStatsReply) stats;
+ final List<FlowEntry> entries = Lists.newLinkedList();
+ for (OFFlowStatsEntry reply : replies.getEntries()) {
+
+ }
+
+
+ }
+
}