7ce4730333ab3fbfb7de08f7232a5d19550ebcdf
[openflowplugin.git] / openflowplugin / src / test / java / org / opendaylight / openflowplugin / openflow / md / core / session / MessageDispatchServiceImplTest.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.openflow.md.core.session;
9
10 import java.math.BigInteger;
11 import java.net.InetSocketAddress;
12 import java.util.HashMap;
13 import java.util.Iterator;
14 import java.util.List;
15 import java.util.Map;
16 import java.util.Map.Entry;
17 import java.util.Set;
18 import java.util.concurrent.ExecutionException;
19 import java.util.concurrent.Future;
20
21 import org.junit.Assert;
22 import org.junit.Before;
23 import org.junit.Test;
24 import org.opendaylight.openflowjava.protocol.api.connection.ConnectionAdapter;
25 import org.opendaylight.openflowjava.protocol.api.connection.ConnectionReadyListener;
26 import org.opendaylight.openflowplugin.api.openflow.md.core.session.IMessageDispatchService;
27 import org.opendaylight.openflowplugin.api.openflow.md.core.session.SessionContext;
28 import org.opendaylight.openflowplugin.api.openflow.md.core.session.SwitchSessionKeyOF;
29 import org.opendaylight.openflowplugin.api.openflow.md.ModelDrivenSwitch;
30 import org.opendaylight.openflowplugin.api.OFConstants;
31 import org.opendaylight.openflowplugin.api.openflow.md.core.ConnectionConductor;
32 import org.opendaylight.openflowplugin.api.openflow.md.core.ErrorHandler;
33 import org.opendaylight.openflowplugin.api.openflow.md.core.NotificationEnqueuer;
34 import org.opendaylight.openflowplugin.api.openflow.md.core.NotificationQueueWrapper;
35 import org.opendaylight.openflowplugin.api.openflow.md.core.SwitchConnectionDistinguisher;
36 import org.opendaylight.openflowplugin.api.openflow.md.queue.QueueProcessor;
37 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.BarrierInput;
38 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.BarrierInputBuilder;
39 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.BarrierOutput;
40 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.EchoInput;
41 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.EchoOutput;
42 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.EchoReplyInput;
43 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.ExperimenterInput;
44 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.ExperimenterInputBuilder;
45 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.FlowModInput;
46 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.GetAsyncInput;
47 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.GetAsyncInputBuilder;
48 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.GetAsyncOutput;
49 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.GetConfigInput;
50 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.GetConfigInputBuilder;
51 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.GetConfigOutput;
52 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.GetFeaturesInput;
53 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.GetFeaturesInputBuilder;
54 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.GetFeaturesOutput;
55 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.GetQueueConfigInput;
56 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.GetQueueConfigInputBuilder;
57 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.GetQueueConfigOutput;
58 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.GroupModInput;
59 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.HelloInput;
60 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.MeterModInput;
61 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.MultipartRequestInput;
62 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.MultipartRequestInputBuilder;
63 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.OfHeader;
64 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.OpenflowProtocolListener;
65 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.PacketOutInput;
66 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.PacketOutInputBuilder;
67 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.PortGrouping;
68 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.PortModInput;
69 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.RoleRequestInput;
70 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.RoleRequestInputBuilder;
71 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.RoleRequestOutput;
72 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.SetAsyncInput;
73 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.SetConfigInput;
74 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.TableModInput;
75 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.TableModInputBuilder;
76 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.system.rev130927.SystemNotificationsListener;
77 import org.opendaylight.yangtools.concepts.CompositeObjectRegistration;
78 import org.opendaylight.yangtools.yang.binding.DataObject;
79 import org.opendaylight.yangtools.yang.common.RpcError;
80 import org.opendaylight.yangtools.yang.common.RpcResult;
81
82 /**
83  * test for {@link MessageDispatchServiceImpl}
84  */
85 public class MessageDispatchServiceImplTest {
86
87     MockSessionContext session;
88
89     /**
90      * @throws java.lang.Exception
91      */
92     @Before
93     public void setUp() throws Exception {
94         session = new MockSessionContext(0);
95
96     }
97
98     /**
99      * Test barrier message for null cookie
100      *
101      * @throws Exception
102      */
103     @Test
104     public void testBarrierMessageForPrimary() throws Exception {
105         MockConnectionConductor conductor = new MockConnectionConductor(1);
106         SwitchConnectionDistinguisher cookie = conductor.getAuxiliaryKey();
107         BarrierInputBuilder barrierMsg = new BarrierInputBuilder();
108         session.getMessageDispatchService().barrier(barrierMsg.build(), cookie);
109         Assert.assertEquals(MessageType.BARRIER, session.getPrimaryConductor().getMessageType());
110     }
111
112     /**
113      * Test experimenter message for null cookie
114      */
115     @Test
116     public void testExperimenter() {
117         MockConnectionConductor conductor = new MockConnectionConductor(1);
118         SwitchConnectionDistinguisher cookie = conductor.getAuxiliaryKey();
119         ExperimenterInputBuilder experimenterInputBuilder = new ExperimenterInputBuilder();
120         session.getMessageDispatchService().experimenter(experimenterInputBuilder.build(), cookie);
121         Assert.assertEquals(MessageType.NONE, session.getPrimaryConductor().getMessageType());
122     }
123
124     /**
125      * Test get async input with null cookie
126      */
127     @Test
128     public void testGetAsync() throws ExecutionException, InterruptedException {
129         MockConnectionConductor conductor = new MockConnectionConductor(1);
130         SwitchConnectionDistinguisher cookie = conductor.getAuxiliaryKey();
131         GetAsyncInputBuilder getAsyncInputBuilder = new GetAsyncInputBuilder();
132         session.getMessageDispatchService().getAsync(getAsyncInputBuilder.build(), cookie);
133         Assert.assertEquals(MessageType.NONE, session.getPrimaryConductor().getMessageType());
134     }
135
136     /**
137      * Test get async output with null cookie
138      */
139     @Test
140     public void testGetConfig() {
141         MockConnectionConductor conductor = new MockConnectionConductor(1);
142         SwitchConnectionDistinguisher cookie = conductor.getAuxiliaryKey();
143         GetConfigInputBuilder getConfigInputBuilder = new GetConfigInputBuilder();
144         session.getMessageDispatchService().getConfig(getConfigInputBuilder.build(), cookie);
145         Assert.assertEquals(MessageType.NONE, session.getPrimaryConductor().getMessageType());
146     }
147
148     /**
149      * Test get features with null cookie
150      */
151     @Test
152     public void testGetFeatures() {
153         MockConnectionConductor conductor = new MockConnectionConductor(1);
154         SwitchConnectionDistinguisher cookie = conductor.getAuxiliaryKey();
155         GetFeaturesInputBuilder getFeaturesInputBuilder = new GetFeaturesInputBuilder();
156         session.getMessageDispatchService().getFeatures(getFeaturesInputBuilder.build(), cookie);
157         Assert.assertEquals(MessageType.NONE, session.getPrimaryConductor().getMessageType());
158     }
159
160     /**
161      * Test get queue config with null cookie
162      */
163     @Test
164     public void testGetQueueConfig() {
165         MockConnectionConductor conductor = new MockConnectionConductor(1);
166         SwitchConnectionDistinguisher cookie = conductor.getAuxiliaryKey();
167         GetQueueConfigInputBuilder getQueueConfigInputBuilder = new GetQueueConfigInputBuilder();
168         session.getMessageDispatchService().getQueueConfig(getQueueConfigInputBuilder.build(), cookie);
169         Assert.assertEquals(MessageType.NONE, session.getPrimaryConductor().getMessageType());
170     }
171
172     /**
173      * Test multipart request with null cookie
174      */
175     @Test
176     public void testGetMultipart() {
177         MockConnectionConductor conductor = new MockConnectionConductor(1);
178         SwitchConnectionDistinguisher cookie = conductor.getAuxiliaryKey();
179         MultipartRequestInputBuilder multipartRequestInputBuilder = new MultipartRequestInputBuilder();
180         session.getMessageDispatchService().multipartRequest(multipartRequestInputBuilder.build(), cookie);
181         Assert.assertEquals(MessageType.NONE, session.getPrimaryConductor().getMessageType());
182     }
183
184     /**
185      * Test role request with null cookie
186      */
187     @Test
188     public void testRoleRequest() {
189         MockConnectionConductor conductor = new MockConnectionConductor(1);
190         SwitchConnectionDistinguisher cookie = conductor.getAuxiliaryKey();
191         RoleRequestInputBuilder roleRequestInputBuilder = new RoleRequestInputBuilder();
192         session.getMessageDispatchService().roleRequest(roleRequestInputBuilder.build(), cookie);
193         Assert.assertEquals(MessageType.NONE, session.getPrimaryConductor().getMessageType());
194     }
195
196     /**
197      * Test table mod with null cookie
198      */
199     @Test
200     public void testTableMod() {
201         MockConnectionConductor conductor = new MockConnectionConductor(1);
202         SwitchConnectionDistinguisher cookie = conductor.getAuxiliaryKey();
203         TableModInputBuilder tableModInputBuilder = new TableModInputBuilder();
204         session.getMessageDispatchService().tableMod(tableModInputBuilder.build(), cookie);
205         Assert.assertEquals(MessageType.TABLEMOD, session.getPrimaryConductor().getMessageType());
206     }
207
208
209     /**
210      * Test packet out message for primary connection
211      *
212      * @throws Exception
213      */
214     @Test
215     public void testPacketOutMessageForPrimary() throws Exception {
216         session.getMessageDispatchService().packetOut(null, null);
217         Assert.assertEquals(MessageType.PACKETOUT, session.getPrimaryConductor().getMessageType());
218     }
219
220     /**
221      * Test packet out message for auxiliary connection
222      *
223      * @throws Exception
224      */
225     @Test
226     public void testPacketOutMessageForAuxiliary() throws Exception {
227         MockConnectionConductor conductor = new MockConnectionConductor(1);
228         SwitchConnectionDistinguisher cookie = conductor.getAuxiliaryKey();
229         session.addAuxiliaryConductor(cookie, conductor);
230         session.getMessageDispatchService().packetOut(null, cookie);
231         Assert.assertEquals(MessageType.NONE, session.getPrimaryConductor().getMessageType());
232         conductor = (MockConnectionConductor) session.getAuxiliaryConductor(cookie);
233         Assert.assertEquals(MessageType.PACKETOUT, conductor.getMessageType());
234     }
235
236     /**
237      * Test packet out message when multiple auxiliary connection exist
238      *
239      * @throws Exception
240      */
241     @Test
242     public void testPacketOutMessageForMultipleAuxiliary() throws Exception {
243         MockConnectionConductor conductor1 = new MockConnectionConductor(1);
244         SwitchConnectionDistinguisher cookie1 = conductor1.getAuxiliaryKey();
245         session.addAuxiliaryConductor(cookie1, conductor1);
246         MockConnectionConductor conductor2 = new MockConnectionConductor(2);
247         SwitchConnectionDistinguisher cookie2 = conductor2.getAuxiliaryKey();
248         session.addAuxiliaryConductor(cookie2, conductor2);
249         MockConnectionConductor conductor3 = new MockConnectionConductor(3);
250         SwitchConnectionDistinguisher cookie3 = conductor3.getAuxiliaryKey();
251         session.addAuxiliaryConductor(cookie3, conductor3);
252         PacketOutInputBuilder builder = new PacketOutInputBuilder();
253         // send message
254         session.getMessageDispatchService().packetOut(builder.build(), cookie2);
255
256         Assert.assertEquals(MessageType.NONE, session.getPrimaryConductor().getMessageType());
257
258         conductor3 = (MockConnectionConductor) session.getAuxiliaryConductor(cookie3);
259         Assert.assertEquals(MessageType.NONE, conductor3.getMessageType());
260
261         conductor2 = (MockConnectionConductor) session.getAuxiliaryConductor(cookie2);
262         Assert.assertEquals(MessageType.PACKETOUT, conductor2.getMessageType());
263
264         conductor1 = (MockConnectionConductor) session.getAuxiliaryConductor(cookie1);
265         Assert.assertEquals(MessageType.NONE, conductor1.getMessageType());
266
267     }
268
269     /**
270      * Test for invalid session
271      *
272      * @throws Exception
273      */
274     @Test
275     public void testInvalidSession() throws Exception {
276         session.setValid(false);
277         Future<RpcResult<Void>> resultFuture = session.getMessageDispatchService().packetOut(null, null);
278         if (resultFuture.isDone()) {
279             RpcResult<Void> rpcResult = resultFuture.get();
280             Assert.assertTrue(!rpcResult.getErrors().isEmpty());
281
282             Iterator<RpcError> it = rpcResult.getErrors().iterator();
283             RpcError rpcError = it.next();
284
285             Assert.assertTrue(rpcError.getApplicationTag().equals(OFConstants.APPLICATION_TAG));
286             Assert.assertTrue(rpcError.getTag().equals(OFConstants.ERROR_TAG_TIMEOUT));
287             Assert.assertTrue(rpcError.getErrorType().equals(RpcError.ErrorType.TRANSPORT));
288         }
289     }
290
291 }
292
293 class MockSessionContext implements SessionContext {
294     private MockConnectionConductor conductor;
295     private Map<SwitchConnectionDistinguisher, ConnectionConductor> map;
296     private IMessageDispatchService messageService;
297     private boolean isValid = true;
298     private CompositeObjectRegistration<ModelDrivenSwitch> registration;
299     private int seed;
300     private SwitchSessionKeyOF sessionKey;
301
302     MockSessionContext(int conductorNum) {
303         conductor = new MockConnectionConductor(conductorNum);
304         map = new HashMap<SwitchConnectionDistinguisher, ConnectionConductor>();
305         messageService = new MessageDispatchServiceImpl(this);
306         sessionKey = new SwitchSessionKeyOF();
307         sessionKey.setDatapathId(new BigInteger("0"));
308     }
309
310     @Override
311     public MockConnectionConductor getPrimaryConductor() {
312         // TODO Auto-generated method stub
313         return conductor;
314     }
315
316     @Override
317     public GetFeaturesOutput getFeatures() {
318         // TODO Auto-generated method stub
319         return null;
320     }
321
322     @Override
323     public ConnectionConductor getAuxiliaryConductor(SwitchConnectionDistinguisher auxiliaryKey) {
324
325         return map.get(auxiliaryKey);
326     }
327
328     @Override
329     public Set<Entry<SwitchConnectionDistinguisher, ConnectionConductor>> getAuxiliaryConductors() {
330         // TODO Auto-generated method stub
331         return null;
332     }
333
334     @Override
335     public void addAuxiliaryConductor(SwitchConnectionDistinguisher auxiliaryKey, ConnectionConductor conductorArg) {
336         map.put(auxiliaryKey, conductorArg);
337     }
338
339     @Override
340     public ConnectionConductor removeAuxiliaryConductor(SwitchConnectionDistinguisher connectionCookie) {
341         return map.remove(connectionCookie);
342     }
343
344     @Override
345     public boolean isValid() {
346         // TODO Auto-generated method stub
347         return isValid;
348     }
349
350     @Override
351     public void setValid(boolean valid) {
352         isValid = valid;
353     }
354
355     @Override
356     public SwitchSessionKeyOF getSessionKey() {
357         return sessionKey;
358     }
359
360     @Override
361     public IMessageDispatchService getMessageDispatchService() {
362         // TODO Auto-generated method stub
363         return messageService;
364     }
365
366     @Override
367     public Long getNextXid() {
368         // TODO Auto-generated method stub
369         return null;
370     }
371
372     @Override
373     public Map<Long, PortGrouping> getPhysicalPorts() {
374         // TODO Auto-generated method stub
375         return null;
376     }
377
378     @Override
379     public Set<Long> getPorts() {
380         // TODO Auto-generated method stub
381         return null;
382     }
383
384     @Override
385     public PortGrouping getPhysicalPort(Long portNumber) {
386         // TODO Auto-generated method stub
387         return null;
388     }
389
390     @Override
391     public Boolean getPortBandwidth(Long portNumber) {
392         // TODO Auto-generated method stub
393         return null;
394     }
395
396     @Override
397     public boolean isPortEnabled(long portNumber) {
398         // TODO Auto-generated method stub
399         return false;
400     }
401
402     @Override
403     public boolean isPortEnabled(PortGrouping port) {
404         // TODO Auto-generated method stub
405         return false;
406     }
407
408     @Override
409     public List<PortGrouping> getEnabledPorts() {
410         // TODO Auto-generated method stub
411         return null;
412     }
413
414     @Override
415     public Map<Long, Boolean> getPortsBandwidth() {
416         // TODO Auto-generated method stub
417         return null;
418     }
419
420     @Override
421     public CompositeObjectRegistration<ModelDrivenSwitch> getProviderRegistration() {
422         return registration;
423     }
424
425     @Override
426     public void setProviderRegistration(
427             CompositeObjectRegistration<ModelDrivenSwitch> registration) {
428         this.registration = registration;
429     }
430
431     @Override
432     public int getSeed() {
433         return seed;
434     }
435
436     /**
437      * @param seed the seed to set
438      */
439     public void setSeed(int seed) {
440         this.seed = seed;
441     }
442     
443     @Override
444     public NotificationEnqueuer getNotificationEnqueuer() {
445         return conductor;
446     }
447 }
448
449 class MockConnectionConductor implements ConnectionConductor, NotificationEnqueuer {
450
451     private int conductorNum;
452     private MockConnectionAdapter adapter;
453
454     public MockConnectionConductor(int conductorNumber) {
455         conductorNum = conductorNumber;
456         adapter = new MockConnectionAdapter();
457     }
458
459     @Override
460     public void init() {
461         // TODO Auto-generated method stub
462
463     }
464
465     @Override
466     public Short getVersion() {
467         // TODO Auto-generated method stub
468         return null;
469     }
470
471     @Override
472     public CONDUCTOR_STATE getConductorState() {
473         // TODO Auto-generated method stub
474         return null;
475     }
476
477     @Override
478     public void setConductorState(CONDUCTOR_STATE conductorState) {
479         // TODO Auto-generated method stub
480
481     }
482
483     @Override
484     public Future<Boolean> disconnect() {
485         // TODO Auto-generated method stub
486         return null;
487     }
488
489     @Override
490     public void setSessionContext(SessionContext context) {
491         // TODO Auto-generated method stub
492
493     }
494
495     @Override
496     public void setConnectionCookie(SwitchConnectionDistinguisher auxiliaryKey) {
497         // TODO Auto-generated method stub
498
499     }
500
501     @Override
502     public SessionContext getSessionContext() {
503         // TODO Auto-generated method stub
504         return null;
505     }
506
507     @Override
508     public SwitchConnectionDistinguisher getAuxiliaryKey() {
509         if (0 != conductorNum) {
510             SwitchConnectionCookieOFImpl key = new SwitchConnectionCookieOFImpl();
511             key.setAuxiliaryId((short) conductorNum);
512             key.init(42);
513             return key;
514         }
515         return null;
516     }
517
518     @Override
519     public ConnectionAdapter getConnectionAdapter() {
520         // TODO Auto-generated method stub
521         return adapter;
522     }
523
524     public MessageType getMessageType() {
525         return adapter.getMessageType();
526     }
527
528     @Override
529     public void setQueueProcessor(QueueProcessor<OfHeader, DataObject> queueKeeper) {
530         // NOOP
531     }
532
533     @Override
534     public void setErrorHandler(ErrorHandler errorHandler) {
535         // NOOP
536     }
537
538     @Override
539     public void setId(int conductorId) {
540         // NOOP
541     }
542     
543     @Override
544     public void enqueueNotification(NotificationQueueWrapper notification) {
545         // NOOP
546     }
547 }
548
549 enum MessageType {
550     NONE, BARRIER, FLOWMOD, TABLEMOD, PACKETOUT;
551 }
552
553 class MockConnectionAdapter implements ConnectionAdapter {
554
555     private MessageType messageType;
556     private ConnectionReadyListener connectionReadyListener;
557
558     public MockConnectionAdapter() {
559         setMessageType(MessageType.NONE);
560     }
561
562     @Override
563     public Future<RpcResult<BarrierOutput>> barrier(BarrierInput input) {
564         setMessageType(MessageType.BARRIER);
565         return null;
566     }
567
568     @Override
569     public Future<RpcResult<EchoOutput>> echo(EchoInput input) {
570         // TODO Auto-generated method stub
571         return null;
572     }
573
574     @Override
575     public Future<RpcResult<Void>> echoReply(EchoReplyInput input) {
576         // TODO Auto-generated method stub
577         return null;
578     }
579
580     @Override
581     public Future<RpcResult<Void>> experimenter(ExperimenterInput input) {
582         // TODO Auto-generated method stub
583         return null;
584     }
585
586     @Override
587     public Future<RpcResult<Void>> flowMod(FlowModInput input) {
588         setMessageType(MessageType.FLOWMOD);
589         return null;
590     }
591
592     @Override
593     public Future<RpcResult<GetAsyncOutput>> getAsync(GetAsyncInput input) {
594         // TODO Auto-generated method stub
595         return null;
596     }
597
598     @Override
599     public Future<RpcResult<GetConfigOutput>> getConfig(GetConfigInput input) {
600         // TODO Auto-generated method stub
601         return null;
602     }
603
604     @Override
605     public Future<RpcResult<GetFeaturesOutput>> getFeatures(GetFeaturesInput input) {
606         // TODO Auto-generated method stub
607         return null;
608     }
609
610     @Override
611     public Future<RpcResult<GetQueueConfigOutput>> getQueueConfig(GetQueueConfigInput input) {
612         // TODO Auto-generated method stub
613         return null;
614     }
615
616     @Override
617     public Future<RpcResult<Void>> groupMod(GroupModInput input) {
618         // TODO Auto-generated method stub
619         return null;
620     }
621
622     @Override
623     public Future<RpcResult<Void>> hello(HelloInput input) {
624         // TODO Auto-generated method stub
625         return null;
626     }
627
628     @Override
629     public Future<RpcResult<Void>> meterMod(MeterModInput input) {
630         // TODO Auto-generated method stub
631         return null;
632     }
633
634     @Override
635     public Future<RpcResult<Void>> packetOut(PacketOutInput input) {
636         setMessageType(MessageType.PACKETOUT);
637         return null;
638     }
639
640     @Override
641     public Future<RpcResult<Void>> portMod(PortModInput input) {
642         // TODO Auto-generated method stub
643         return null;
644     }
645
646     @Override
647     public Future<RpcResult<RoleRequestOutput>> roleRequest(RoleRequestInput input) {
648         // TODO Auto-generated method stub
649         return null;
650     }
651
652     @Override
653     public Future<RpcResult<Void>> setAsync(SetAsyncInput input) {
654         // TODO Auto-generated method stub
655         return null;
656     }
657
658     @Override
659     public Future<RpcResult<Void>> setConfig(SetConfigInput input) {
660         // TODO Auto-generated method stub
661         return null;
662     }
663
664     @Override
665     public Future<RpcResult<Void>> tableMod(TableModInput input) {
666         setMessageType(MessageType.TABLEMOD);
667         return null;
668     }
669
670     @Override
671     public Future<Boolean> disconnect() {
672         // TODO Auto-generated method stub
673         return null;
674     }
675
676     @Override
677     public boolean isAlive() {
678         // TODO Auto-generated method stub
679         return false;
680     }
681
682     @Override
683     public void setMessageListener(OpenflowProtocolListener messageListener) {
684         // TODO Auto-generated method stub
685
686     }
687
688     @Override
689     public void setSystemListener(SystemNotificationsListener systemListener) {
690         // TODO Auto-generated method stub
691
692     }
693
694     @Override
695     public void checkListeners() {
696         // TODO Auto-generated method stub
697
698     }
699
700     /**
701      * @return the messageType
702      */
703     public MessageType getMessageType() {
704         return messageType;
705     }
706
707     /**
708      * @param messageType the messageType to set
709      */
710     public void setMessageType(MessageType messageType) {
711         this.messageType = messageType;
712     }
713
714     @Override
715     public void fireConnectionReadyNotification() {
716         connectionReadyListener.onConnectionReady();
717     }
718
719     @Override
720     public void setConnectionReadyListener(
721             ConnectionReadyListener connectionReadyListener) {
722         this.connectionReadyListener = connectionReadyListener;
723     }
724
725     @Override
726     public Future<RpcResult<Void>> multipartRequest(
727             MultipartRequestInput input) {
728         // TODO Auto-generated method stub
729         return null;
730     }
731
732     /* (non-Javadoc)
733      * @see org.opendaylight.openflowjava.protocol.api.connection.ConnectionAdapter#getRemoteAddress()
734      */
735     @Override
736     public InetSocketAddress getRemoteAddress() {
737         // TODO Auto-generated method stub
738         return null;
739     }
740 }