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.sal.reader;
12 import java.util.List;
14 import org.opendaylight.controller.sal.core.Node;
15 import org.opendaylight.controller.sal.core.NodeConnector;
16 import org.opendaylight.controller.sal.core.NodeTable;
17 import org.opendaylight.controller.sal.flowprogrammer.Flow;
20 * This interface defines methods for retrieving the network node's
21 * flow/port/queue hardware view
23 public interface IReadService {
25 * Get the hardware view for the specified flow on the specified network
30 * {@link org.opendaylight.controller.sal.core.Node}
33 * {@link org.opendaylight.controller.sal.flowprogrammer.Flow}
35 * {@link org.opendaylight.controller.sal.reader.FlowOnNode}
36 * installed on the node
38 FlowOnNode readFlow(Node node, Flow flow);
41 * Get the hardware view for the specified flow on the specified network node
42 * This call results in a direct polling of the information from the node
43 * Caller will be blocked until node replies or request times out
47 * {@link org.opendaylight.controller.sal.core.Node}
50 * {@link org.opendaylight.controller.sal.flowprogrammer.Flow}
52 * {@link org.opendaylight.controller.sal.reader.FlowOnNode}
53 * installed on the node
55 FlowOnNode nonCachedReadFlow(Node node, Flow flow);
58 * Get the hardware view for all the flows installed on the network node
62 * {@link org.opendaylight.controller.sal.core.Node}
63 * @return all the flows
64 * {@link org.opendaylight.controller.sal.reader.FlowOnNode}
65 * installed on the node
67 List<FlowOnNode> readAllFlows(Node node);
70 * Get the hardware view for all the flows installed on the network node
71 * This call results in a direct polling of the information from the node
72 * Caller will be blocked until node replies or request times out
76 * {@link org.opendaylight.controller.sal.core.Node}
77 * @return the hardware view of all the flows
78 * {@link org.opendaylight.controller.sal.reader.FlowOnNode}
79 * installed on the node
81 List<FlowOnNode> nonCachedReadAllFlows(Node node);
84 * Get the description information for the network node
88 * {@link org.opendaylight.controller.sal.core.Node}
89 * @return the node description
90 * {@link org.opendaylight.controller.sal.reader.NodeDescription}
92 NodeDescription readDescription(Node node);
95 * Get the description information for the network node
96 * This call results in a direct polling of the information from the node
97 * Caller will be blocked until node replies or request times out
101 * {@link org.opendaylight.controller.sal.core.Node}
102 * @return the node description
103 * {@link org.opendaylight.controller.sal.reader.NodeDescription}
105 NodeDescription nonCachedReadDescription(Node node);
108 * Get the hardware view for the specified node connector
111 * the given node connector
112 * {@link org.opendaylight.controller.sal.core.NodeConnector}
113 * @return the node connector statistics
114 * {@link org.opendaylight.controller.sal.reader.NodeConnectorStatistics}
116 NodeConnectorStatistics readNodeConnector(NodeConnector connector);
119 * Get the hardware view for all the node connectors
120 * present on the specified network node
124 * {@link org.opendaylight.controller.sal.core.Node}
125 * @return the statistics for all the node connectors
126 * {@link org.opendaylight.controller.sal.reader.NodeConnectorStatistics}
128 List<NodeConnectorStatistics> readNodeConnectors(Node node);
131 * Read the Table statistics for the given node table
135 * {@link org.opendaylight.controller.sal.core.NodeTable}
136 * @return the table statistics
137 * {@link org.opendaylight.controller.sal.reader.NodeTableStatistics}
139 NodeTableStatistics readNodeTable(NodeTable table);
142 * Read the Table statistics for the given node This is not used. Querying
143 * all tables on a node is not currently a feature.
147 * {@link org.opendaylight.controller.sal.core.Node}
148 * @return the table statistics
149 * {@link org.opendaylight.controller.sal.reader.NodeTableStatistics}
150 * for all tables in a given node
152 List<NodeTableStatistics> readNodeTable(Node node);
155 * Get the table statistics for the given node table
156 * This call results in a direct polling of the information from the node
157 * Caller will be blocked until the node replies or request times out
161 * {@link org.opendaylight.controller.sal.core.NodeTable}
162 * @return the table statistics
163 * {@link org.opendaylight.controller.sal.reader.NodeTableStatistics}
165 NodeTableStatistics nonCachedReadNodeTable(NodeTable table);
168 * Get the node connectors statistics information for the network node
169 * This call results in a direct polling of the information from the node
170 * Caller will be blocked until node replies or request times out
174 * {@link org.opendaylight.controller.sal.core.Node}
175 * @return the statistics
176 * {@link org.opendaylight.controller.sal.reader.NodeConnectorStatistics}
177 * for all node connectors in a given node
179 List<NodeConnectorStatistics> nonCachedReadNodeConnectors(Node node);
182 * Get the node connectors statistics information for the network node
185 * the given node connector
186 * {@link org.opendaylight.controller.sal.core.NodeConnector}
187 * @return the node connector statistics
188 * {@link org.opendaylight.controller.sal.reader.NodeConnectorStatistics}
190 NodeConnectorStatistics nonCachedReadNodeConnector(NodeConnector connector);
193 * Get the transmit rate for the specified node connector
196 * the given node connector
197 * {@link org.opendaylight.controller.sal.core.NodeConnector}
198 * @return tx rate [bps]
200 long getTransmitRate(NodeConnector connector);