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
24 public interface IReadService {
26 * Get the hardware view for the specified flow on the specified network
31 * {@link org.opendaylight.controller.sal.core.Node}
34 * {@link org.opendaylight.controller.sal.flowprogrammer.Flow}
36 * {@link org.opendaylight.controller.sal.reader.FlowOnNode}
37 * installed on the node
39 FlowOnNode readFlow(Node node, Flow flow);
42 * Get the hardware view for the specified flow on the specified network node
43 * This call results in a direct polling of the information from the node
44 * Caller will be blocked until node replies or request times out
48 * {@link org.opendaylight.controller.sal.core.Node}
51 * {@link org.opendaylight.controller.sal.flowprogrammer.Flow}
53 * {@link org.opendaylight.controller.sal.reader.FlowOnNode}
54 * installed on the node
56 FlowOnNode nonCachedReadFlow(Node node, Flow flow);
59 * Get the hardware view for all the flows installed on the network node
63 * {@link org.opendaylight.controller.sal.core.Node}
64 * @return all the flows
65 * {@link org.opendaylight.controller.sal.reader.FlowOnNode}
66 * installed on the node
68 List<FlowOnNode> readAllFlows(Node node);
71 * Get the hardware view for all the flows installed on the network node
72 * This call results in a direct polling of the information from the node
73 * Caller will be blocked until node replies or request times out
77 * {@link org.opendaylight.controller.sal.core.Node}
78 * @return the hardware view of all the flows
79 * {@link org.opendaylight.controller.sal.reader.FlowOnNode}
80 * installed on the node
82 List<FlowOnNode> nonCachedReadAllFlows(Node node);
85 * Get the description information for the network node
89 * {@link org.opendaylight.controller.sal.core.Node}
90 * @return the node description
91 * {@link org.opendaylight.controller.sal.reader.NodeDescription}
93 NodeDescription readDescription(Node node);
96 * Get the description information for the network node
97 * This call results in a direct polling of the information from the node
98 * Caller will be blocked until node replies or request times out
102 * {@link org.opendaylight.controller.sal.core.Node}
103 * @return the node description
104 * {@link org.opendaylight.controller.sal.reader.NodeDescription}
106 NodeDescription nonCachedReadDescription(Node node);
109 * Get the hardware view for the specified node connector
112 * the given node connector
113 * {@link org.opendaylight.controller.sal.core.NodeConnector}
114 * @return the node connector statistics
115 * {@link org.opendaylight.controller.sal.reader.NodeConnectorStatistics}
117 NodeConnectorStatistics readNodeConnector(NodeConnector connector);
120 * Get the hardware view for all the node connectors
121 * present on the specified network node
125 * {@link org.opendaylight.controller.sal.core.Node}
126 * @return the statistics for all the node connectors
127 * {@link org.opendaylight.controller.sal.reader.NodeConnectorStatistics}
129 List<NodeConnectorStatistics> readNodeConnectors(Node node);
132 * Read the Table statistics for the given node table
136 * {@link org.opendaylight.controller.sal.core.NodeTable}
137 * @return the table statistics
138 * {@link org.opendaylight.controller.sal.reader.NodeTableStatistics}
140 NodeTableStatistics readNodeTable(NodeTable table);
143 * Read the Table statistics for the given node This is not used. Querying
144 * all tables on a node is not currently a feature.
148 * {@link org.opendaylight.controller.sal.core.Node}
149 * @return the table statistics
150 * {@link org.opendaylight.controller.sal.reader.NodeTableStatistics}
151 * for all tables in a given node
153 List<NodeTableStatistics> readNodeTable(Node node);
156 * Get the table statistics for the given node table
157 * This call results in a direct polling of the information from the node
158 * Caller will be blocked until the node replies or request times out
162 * {@link org.opendaylight.controller.sal.core.NodeTable}
163 * @return the table statistics
164 * {@link org.opendaylight.controller.sal.reader.NodeTableStatistics}
166 NodeTableStatistics nonCachedReadNodeTable(NodeTable table);
169 * Get the node connectors statistics information for the network node
170 * This call results in a direct polling of the information from the node
171 * Caller will be blocked until node replies or request times out
175 * {@link org.opendaylight.controller.sal.core.Node}
176 * @return the statistics
177 * {@link org.opendaylight.controller.sal.reader.NodeConnectorStatistics}
178 * for all node connectors in a given node
180 List<NodeConnectorStatistics> nonCachedReadNodeConnectors(Node node);
183 * Get the node connectors statistics information for the network node
186 * the given node connector
187 * {@link org.opendaylight.controller.sal.core.NodeConnector}
188 * @return the node connector statistics
189 * {@link org.opendaylight.controller.sal.reader.NodeConnectorStatistics}
191 NodeConnectorStatistics nonCachedReadNodeConnector(NodeConnector connector);
194 * Get the transmit rate for the specified node connector
197 * the given node connector
198 * {@link org.opendaylight.controller.sal.core.NodeConnector}
199 * @return tx rate [bps]
201 long getTransmitRate(NodeConnector connector);