Implemented DeviceContext.hookRequest and DeviceContext.processReply
[openflowplugin.git] / openflowplugin-impl / src / main / java / org / opendaylight / openflowplugin / impl / device / DeviceContextImpl.java
1 /**
2  * Copyright (c) 2015 Cisco Systems, Inc. and others.  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.impl.device;
9
10 import java.math.BigInteger;
11 import java.util.HashMap;
12 import java.util.Map;
13 import java.util.concurrent.Future;
14
15 import org.opendaylight.controller.md.sal.common.api.data.TransactionChain;
16 import org.opendaylight.openflowplugin.api.openflow.connection.ConnectionContext;
17 import org.opendaylight.openflowplugin.api.openflow.device.DeviceContext;
18 import org.opendaylight.openflowplugin.api.openflow.device.DeviceState;
19 import org.opendaylight.openflowplugin.api.openflow.device.RequestContext;
20 import org.opendaylight.openflowplugin.api.openflow.device.RequestFutureContext;
21 import org.opendaylight.openflowplugin.api.openflow.device.Xid;
22 import org.opendaylight.openflowplugin.api.openflow.device.XidGenerator;
23 import org.opendaylight.openflowplugin.api.openflow.md.core.SwitchConnectionDistinguisher;
24 import org.opendaylight.openflowplugin.openflow.md.core.session.SwitchConnectionCookieOFImpl;
25 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.OfHeader;
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.TableFeatures;
27 import org.opendaylight.yangtools.yang.binding.ChildOf;
28 import org.opendaylight.yangtools.yang.binding.DataObject;
29 import org.opendaylight.yangtools.yang.common.RpcResult;
30
31 import com.google.common.util.concurrent.SettableFuture;
32
33 /**
34  *
35  */
36 public class DeviceContextImpl implements DeviceContext {
37     private Map<Xid, RequestFutureContext> requests =
38             new HashMap<Xid, RequestFutureContext>();
39
40     private final Map<SwitchConnectionDistinguisher, ConnectionContext> auxiliaryConnectionContexts = new HashMap<>();
41
42     private XidGenerator xidGenerator = new XidGenerator();
43     @Override
44     public <M extends ChildOf<DataObject>> void onMessage(M message, RequestContext requestContext) {
45         // TODO Auto-generated method stub
46
47     }
48
49     @Override
50     public void addAuxiliaryConenctionContext(ConnectionContext connectionContext) {
51         SwitchConnectionDistinguisher connectionDistinguisher = new SwitchConnectionCookieOFImpl(connectionContext.getFeatures().getAuxiliaryId());
52         auxiliaryConnectionContexts.put(connectionDistinguisher, connectionContext);
53     }
54
55     @Override
56     public void removeAuxiliaryConenctionContext(ConnectionContext connectionContext) {
57         // TODO Auto-generated method stub
58
59     }
60
61     @Override
62     public DeviceState getDeviceState() {
63         // TODO Auto-generated method stub
64         return null;
65     }
66
67     @Override
68     public void setTransactionChain(TransactionChain transactionChain) {
69         // TODO Auto-generated method stub
70
71     }
72
73     @Override
74     public TransactionChain getTransactionChain() {
75         // TODO Auto-generated method stub
76         return null;
77     }
78
79     @Override
80     public TableFeatures getCapabilities() {
81         // TODO Auto-generated method stub
82         return null;
83     }
84
85     @Override
86     public ConnectionContext getPrimaryConnectionContext() {
87         return null;
88     }
89
90     @Override
91     public ConnectionContext getAuxiliaryConnectiobContexts(final BigInteger cookie) {
92         return auxiliaryConnectionContexts.get(new SwitchConnectionCookieOFImpl(cookie.longValue()));
93     }
94
95     @Override
96     public Xid getNextXid() {
97         return xidGenerator.generate();
98     }
99
100     @Override
101     public <T extends DataObject> Future<RpcResult<T>> sendRequest(Xid xid) {
102         return null;
103     }
104
105     @Override
106     public Map<Xid, RequestFutureContext> getRequests() {
107         // TODO Auto-generated method stub
108         return requests;
109     }
110
111     @Override
112     public void hookRequestCtx(Xid xid, RequestFutureContext requestFutureContext) {
113         // TODO Auto-generated method stub
114         requests.put(xid, requestFutureContext);
115     }
116
117     @Override
118     public void processReply(Xid xid, OfHeader ofHeader) {
119         // TODO Auto-generated method stub
120         SettableFuture replyFuture = getRequests().get(xid).getFuture();
121         replyFuture.set(ofHeader);
122     }
123
124 }