blob: e96a2e2193a78e3e2debf585414d809cd3f93a76 [file] [log] [blame]
Thomas Vachuska58de4162015-09-10 16:15:33 -07001/*
Brian O'Connora09fe5b2017-08-03 21:12:30 -07002 * Copyright 2015-present Open Networking Foundation
Thomas Vachuska58de4162015-09-10 16:15:33 -07003 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
Phanendra Manda972ee9e2015-08-21 19:08:20 +053016package org.onosproject.provider.pcep.tunnel.impl;
17
18import static org.junit.Assert.assertNotNull;
19
Priyanka B413fbe82016-05-26 11:44:45 +053020import java.util.HashMap;
Avantika-Huaweid1e36bd2016-05-26 12:47:16 +053021import java.util.LinkedList;
Phanendra Manda972ee9e2015-08-21 19:08:20 +053022import java.util.List;
Priyanka B413fbe82016-05-26 11:44:45 +053023import java.util.Map;
Phanendra Manda972ee9e2015-08-21 19:08:20 +053024import java.util.concurrent.RejectedExecutionException;
25
26import org.jboss.netty.channel.Channel;
harikrushna-Huaweia2c7c202017-04-10 18:22:00 +053027import org.onosproject.pcep.server.ClientCapability;
28import org.onosproject.pcep.server.LspKey;
29import org.onosproject.pcep.server.PccId;
30import org.onosproject.pcep.server.PcepClient;
31import org.onosproject.pcep.server.PcepSyncStatus;
Phanendra Manda972ee9e2015-08-21 19:08:20 +053032import org.onosproject.pcepio.protocol.PcepFactories;
33import org.onosproject.pcepio.protocol.PcepFactory;
34import org.onosproject.pcepio.protocol.PcepMessage;
Avantika-Huaweid1e36bd2016-05-26 12:47:16 +053035import org.onosproject.pcepio.protocol.PcepStateReport;
Phanendra Manda972ee9e2015-08-21 19:08:20 +053036import org.onosproject.pcepio.protocol.PcepVersion;
37
Priyanka Bd2b28882016-04-04 16:57:04 +053038/**
39 * Representation of PCEP client adapter.
40 */
Phanendra Manda972ee9e2015-08-21 19:08:20 +053041public class PcepClientAdapter implements PcepClient {
42
43 private Channel channel;
44 protected String channelId;
45
46 private boolean connected;
47 private PccId pccId;
Priyanka Bd2b28882016-04-04 16:57:04 +053048 private ClientCapability capability;
Phanendra Manda972ee9e2015-08-21 19:08:20 +053049
50 private PcepVersion pcepVersion;
Avantika-Huawei7f7376a2016-05-11 17:07:50 +053051 private PcepSyncStatus lspDbSyncStatus;
52 private PcepSyncStatus labelDbSyncStatus;
Priyanka B413fbe82016-05-26 11:44:45 +053053 private Map<LspKey, Boolean> lspDelegationInfo = new HashMap<>();
Avantika-Huaweid1e36bd2016-05-26 12:47:16 +053054 private Map<PccId, List<PcepStateReport>> sycRptCache = new HashMap<>();
Phanendra Manda972ee9e2015-08-21 19:08:20 +053055
Priyanka Bd2b28882016-04-04 16:57:04 +053056 /**
57 * Initialize instance with specified parameters.
58 *
59 * @param pccId PCC id
60 * @param pcepVersion PCEP message version
61 */
Phanendra Manda972ee9e2015-08-21 19:08:20 +053062 public void init(PccId pccId, PcepVersion pcepVersion) {
63 this.pccId = pccId;
64 this.pcepVersion = pcepVersion;
65 }
66
67 @Override
68 public final void disconnectClient() {
69 this.channel.close();
70 }
71
72 @Override
73 public final void sendMessage(PcepMessage m) {
74 }
75
76 @Override
77 public final void sendMessage(List<PcepMessage> msgs) {
78 try {
79 PcepMessage pcepMsg = msgs.get(0);
80 assertNotNull("PCEP MSG should be created.", pcepMsg);
81 } catch (RejectedExecutionException e) {
82 throw e;
83 }
84 }
85
86 @Override
87 public final boolean isConnected() {
88 return this.connected;
89 }
90
91 @Override
92 public String channelId() {
93 return channelId;
94 }
95
96 @Override
97 public final PccId getPccId() {
98 return this.pccId;
Sho SHIMIZUac54c702016-08-18 09:30:58 -070099 }
Phanendra Manda972ee9e2015-08-21 19:08:20 +0530100
101 @Override
102 public final String getStringId() {
103 return this.pccId.toString();
104 }
105
106 @Override
107 public final void handleMessage(PcepMessage m) {
108 }
109
110 @Override
111 public boolean isOptical() {
112 return false;
113 }
114
115 @Override
116 public PcepFactory factory() {
117 return PcepFactories.getFactory(pcepVersion);
118 }
119
120 @Override
Avantika-Huawei7f7376a2016-05-11 17:07:50 +0530121 public void setLspDbSyncStatus(PcepSyncStatus syncStatus) {
122 this.lspDbSyncStatus = syncStatus;
Phanendra Manda972ee9e2015-08-21 19:08:20 +0530123 }
124
125 @Override
Avantika-Huawei7f7376a2016-05-11 17:07:50 +0530126 public PcepSyncStatus lspDbSyncStatus() {
127 return lspDbSyncStatus;
128 }
129
130 @Override
131 public void setLabelDbSyncStatus(PcepSyncStatus syncStatus) {
132 this.labelDbSyncStatus = syncStatus;
133 }
134
135 @Override
136 public PcepSyncStatus labelDbSyncStatus() {
137 return labelDbSyncStatus;
Phanendra Manda972ee9e2015-08-21 19:08:20 +0530138 }
Priyanka Bd2b28882016-04-04 16:57:04 +0530139
140 @Override
141 public void setCapability(ClientCapability capability) {
142 this.capability = capability;
143 }
144
145 @Override
146 public ClientCapability capability() {
147 return capability;
148 }
Priyanka B94395bf2016-05-21 18:39:46 +0530149
150 @Override
151 public void addNode(PcepClient pc) {
152 }
153
154 @Override
155 public void deleteNode(PccId pccId) {
156 }
Priyanka B413fbe82016-05-26 11:44:45 +0530157
158 @Override
159 public void setLspAndDelegationInfo(LspKey lspKey, boolean dFlag) {
160 lspDelegationInfo.put(lspKey, dFlag);
161 }
162
163 @Override
164 public Boolean delegationInfo(LspKey lspKey) {
165 return lspDelegationInfo.get(lspKey);
166 }
Avantika-Huaweid1e36bd2016-05-26 12:47:16 +0530167
168 @Override
169 public void initializeSyncMsgList(PccId pccId) {
170 List<PcepStateReport> rptMsgList = new LinkedList<>();
171 sycRptCache.put(pccId, rptMsgList);
172 }
173
174 @Override
175 public List<PcepStateReport> getSyncMsgList(PccId pccId) {
176 return sycRptCache.get(pccId);
177 }
178
179 @Override
180 public void removeSyncMsgList(PccId pccId) {
181 sycRptCache.remove(pccId);
182 }
183
184 @Override
185 public void addSyncMsgToList(PccId pccId, PcepStateReport rptMsg) {
186 List<PcepStateReport> rptMsgList = sycRptCache.get(pccId);
187 rptMsgList.add(rptMsg);
188 sycRptCache.put(pccId, rptMsgList);
189 }
Phanendra Manda972ee9e2015-08-21 19:08:20 +0530190}