3 * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved.
5 * This program and the accompanying materials are made available under the
6 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
7 * and is available at http://www.eclipse.org/legal/epl-v10.html
10 package org.opendaylight.controller.statisticsmanager.internal;
12 import java.util.ArrayList;
13 import java.util.HashMap;
14 import java.util.List;
17 import org.opendaylight.controller.forwardingrulesmanager.FlowEntry;
18 import org.opendaylight.controller.sal.core.Node;
19 import org.opendaylight.controller.sal.core.NodeConnector;
20 import org.opendaylight.controller.sal.flowprogrammer.Flow;
21 import org.opendaylight.controller.sal.reader.FlowOnNode;
22 import org.opendaylight.controller.sal.reader.IReadService;
23 import org.opendaylight.controller.sal.reader.NodeConnectorStatistics;
24 import org.opendaylight.controller.sal.reader.NodeDescription;
25 import org.opendaylight.controller.statisticsmanager.IStatisticsManager;
26 import org.slf4j.Logger;
27 import org.slf4j.LoggerFactory;
30 * The class which implements the methods for retrieving
31 * the network nodes statistics.
33 public class StatisticsManager implements IStatisticsManager {
34 private static final Logger log = LoggerFactory
35 .getLogger(StatisticsManager.class);
36 private IReadService reader;
38 public StatisticsManager() {
43 * Function called by the dependency manager when all the required
44 * dependencies are satisfied
48 log.debug("INIT called!");
52 * Function called by the dependency manager when at least one
53 * dependency become unsatisfied or when the component is shutting
54 * down because for example bundle is being stopped.
58 log.debug("DESTROY called!");
62 * Function called by dependency manager after "init ()" is called
63 * and after the services provided by the class are registered in
64 * the service registry
68 log.debug("START called!");
72 * Function called by the dependency manager before the services
73 * exported by the component are unregistered, this will be
74 * followed by a "destroy ()" calls
78 log.debug("STOP called!");
81 public void setReaderService(IReadService service) {
82 log.debug("Got inventory service set request {}", service);
83 this.reader = service;
86 public void unsetReaderService(IReadService service) {
87 log.debug("Got a service UNset request");
92 public List<FlowOnNode> getFlows(Node node) {
93 return reader.readAllFlows(node);
97 public Map<Node, List<FlowOnNode>> getFlowStatisticsForFlowList(
98 List<FlowEntry> flowList) {
99 Map<Node, List<FlowOnNode>> map = new HashMap<Node, List<FlowOnNode>>();
100 if (flowList != null) {
101 for (FlowEntry entry : flowList) {
102 Node node = entry.getNode();
103 Flow flow = entry.getFlow();
104 List<FlowOnNode> list = (map.containsKey(node)) ? map.get(node)
105 : new ArrayList<FlowOnNode>();
106 list.add(reader.readFlow(node, flow));
114 public int getFlowsNumber(Node node) {
115 return reader.readAllFlows(node).size();
119 public NodeDescription getNodeDescription(Node node) {
120 return reader.readDescription(node);
124 public NodeConnectorStatistics getNodeConnectorStatistics(
125 NodeConnector nodeConnector) {
126 return reader.readNodeConnector(nodeConnector);
130 public List<NodeConnectorStatistics> getNodeConnectorStatistics(Node node) {
131 return reader.readNodeConnectors(node);