Bug 1764 - created new bundle responsible for default OF switch configuration
[openflowplugin.git] / openflowplugin-api / src / main / java / org / opendaylight / openflowplugin / api / openflow / md / core / session / IMessageDispatchService.java
1 /**
2  * Copyright IBM Corporation, 2013.  All rights reserved.
3  *
4  * This program and the accompanying materials are made available under the
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6  * and is available at http://www.eclipse.org/legal/epl-v10.html
7  */
8 package org.opendaylight.openflowplugin.api.openflow.md.core.session;
9
10 import java.util.concurrent.Future;
11
12 import org.opendaylight.openflowplugin.api.openflow.md.core.SwitchConnectionDistinguisher;
13 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.service.rev130918.UpdateMeterOutput;
14 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.BarrierInput;
15 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.BarrierOutput;
16 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.ExperimenterInput;
17 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.FlowModInput;
18 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.GetAsyncInput;
19 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.GetAsyncOutput;
20 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.GetConfigInput;
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.GetConfigOutput;
22 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.GetFeaturesInput;
23 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.GetFeaturesOutput;
24 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.GetQueueConfigInput;
25 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.GetQueueConfigOutput;
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.GroupModInput;
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.MeterModInput;
28 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.MultipartRequestInput;
29 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.PacketOutInput;
30 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.PortModInput;
31 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.RoleRequestInput;
32 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.RoleRequestOutput;
33 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.SetAsyncInput;
34 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.SetConfigInput;
35 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.TableModInput;
36 import org.opendaylight.yang.gen.v1.urn.opendaylight.port.service.rev131107.UpdatePortOutput;
37 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.service.rev130819.UpdateFlowOutput;
38 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.service.rev130918.UpdateGroupOutput;
39 import org.opendaylight.yangtools.yang.common.RpcResult;
40
41 /**
42  * Message Dispatch Service to send the message to switch.
43  *
44  * @author AnilGujele
45  *
46  */
47 public interface IMessageDispatchService {
48
49     /**
50      * send barrier message to switch
51      *
52      * @param input
53      *            - message
54      * @param cookie
55      *            - to identify connection if null then feel free to send via
56      *            any connection
57      * @return - the future
58      */
59     Future<RpcResult<BarrierOutput>> barrier(BarrierInput input, SwitchConnectionDistinguisher cookie);
60
61     /**
62      * send experimenter message to switch
63      *
64      * @param input
65      *            - message
66      * @param cookie
67      *            - to identify connection if null then feel free to send via
68      *            any connection
69      * @return - the future
70      */
71     Future<RpcResult<java.lang.Void>> experimenter(ExperimenterInput input, SwitchConnectionDistinguisher cookie);
72
73     /**
74      * send flow modification message to switch
75      *
76      * @param input
77      *            - message
78      * @param cookie
79      *            - to identify connection if null then feel free to send via
80      *            any connection
81      * @return - the future
82      */
83     Future<RpcResult<UpdateFlowOutput>> flowMod(FlowModInput input, SwitchConnectionDistinguisher cookie);
84
85     /**
86      * send get async message to switch
87      *
88      * @param input
89      *            - message
90      * @param cookie
91      *            - to identify connection if null then feel free to send via
92      *            any connection
93      * @return - the future
94      */
95     Future<RpcResult<GetAsyncOutput>> getAsync(GetAsyncInput input, SwitchConnectionDistinguisher cookie);
96
97     /**
98      * send get config message to switch
99      *
100      * @param input
101      *            - message
102      * @param cookie
103      *            - to identify connection if null then feel free to send via
104      *            any connection
105      * @return - the future
106      */
107     Future<RpcResult<GetConfigOutput>> getConfig(GetConfigInput input, SwitchConnectionDistinguisher cookie);
108
109     /**
110      * send get features message to switch
111      *
112      * @param input
113      *            - message
114      * @param cookie
115      *            - to identify connection if null then feel free to send via
116      *            any connection
117      * @return - the future
118      */
119     Future<RpcResult<GetFeaturesOutput>> getFeatures(GetFeaturesInput input, SwitchConnectionDistinguisher cookie);
120
121     /**
122      * send get queue config message to switch
123      *
124      * @param input
125      *            - message
126      * @param cookie
127      *            - to identify connection if null then feel free to send via
128      *            any connection
129      * @return - the future
130      */
131     Future<RpcResult<GetQueueConfigOutput>> getQueueConfig(GetQueueConfigInput input,
132             SwitchConnectionDistinguisher cookie);
133
134     /**
135      * send group modification message to switch
136      *
137      * @param input
138      *            - message
139      * @param cookie
140      *            - to identify connection if null then feel free to send via
141      *            any connection
142      * @return - the future
143      */
144     Future<RpcResult<UpdateGroupOutput>> groupMod(GroupModInput input, SwitchConnectionDistinguisher cookie);
145
146     /**
147      * send meter modification message to switch
148      *
149      * @param input
150      *            - message
151      * @param cookie
152      *            - to identify connection if null then feel free to send via
153      *            any connection
154      * @return - the future
155      */
156     Future<RpcResult<UpdateMeterOutput>> meterMod(MeterModInput input, SwitchConnectionDistinguisher cookie);
157
158     /**
159      * send multipart request message to switch
160      *
161      * @param input
162      *            - multipart request message
163      * @param cookie
164      *            - to identify connection if null then feel free to send via
165      *            any connection
166      * @return - the future
167      */
168     Future<RpcResult<java.lang.Void>> multipartRequest(MultipartRequestInput input, SwitchConnectionDistinguisher cookie);
169
170     /**
171      * send packet out message to switch
172      *
173      * @param input
174      *            - message
175      * @param cookie
176      *            - to identify connection if null then feel free to send via
177      *            any connection
178      * @return - the future
179      */
180     Future<RpcResult<java.lang.Void>> packetOut(PacketOutInput input, SwitchConnectionDistinguisher cookie);
181
182     /**
183      * send port modification message to switch
184      *
185      * @param input
186      *            - message
187      * @param cookie
188      *            - to identify connection if null then feel free to send via
189      *            any connection
190      * @return - the future
191      */
192     Future<RpcResult<UpdatePortOutput>> portMod(PortModInput input, SwitchConnectionDistinguisher cookie);
193
194     /**
195      * send role request message to switch
196      *
197      * @param input
198      *            - message
199      * @param cookie
200      *            - to identify connection if null then feel free to send via
201      *            any connection
202      * @return - the future
203      */
204     Future<RpcResult<RoleRequestOutput>> roleRequest(RoleRequestInput input, SwitchConnectionDistinguisher cookie);
205
206     /**
207      * send set async message to switch
208      *
209      * @param input
210      *            - message
211      * @param cookie
212      *            - to identify connection if null then feel free to send via
213      *            any connection
214      * @return - the future
215      */
216     Future<RpcResult<java.lang.Void>> setAsync(SetAsyncInput input, SwitchConnectionDistinguisher cookie);
217
218     /**
219      * send set config message to switch
220      *
221      * @param input
222      *            - message
223      * @param cookie
224      *            - to identify connection if null then feel free to send via
225      *            any connection
226      * @return - the future
227      */
228     Future<RpcResult<java.lang.Void>> setConfig(SetConfigInput input, SwitchConnectionDistinguisher cookie);
229
230     /**
231      * send table modification message to switch
232      *
233      * @param input
234      *            - message
235      * @param cookie
236      *            - to identify connection if null then feel free to send via
237      *            any connection
238      * @return - the future
239      */
240     Future<RpcResult<java.lang.Void>> tableMod(TableModInput input, SwitchConnectionDistinguisher cookie);
241     
242 }