[ONOS-2594] Channel handle to manage session handling with BGP peers
Change-Id: I6c58c674aa17e2a86b063e248af589d524ec5fe3
diff --git a/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/BGPPeerImpl.java b/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/BGPPeerImpl.java
index 212b24d..45f7463 100755
--- a/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/BGPPeerImpl.java
+++ b/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/BGPPeerImpl.java
@@ -24,11 +24,12 @@
import org.jboss.netty.channel.Channel;
import org.onlab.packet.IpAddress;
-import org.onosproject.bgp.controller.BGPId;
-import org.onosproject.bgp.controller.BGPPacketStats;
+import org.onosproject.bgp.controller.BGPController;
import org.onosproject.bgp.controller.BGPPeer;
+import org.onosproject.bgp.controller.BgpSessionInfo;
+import org.onosproject.bgpio.protocol.BGPFactories;
+import org.onosproject.bgpio.protocol.BGPFactory;
import org.onosproject.bgpio.protocol.BGPMessage;
-import org.onosproject.bgpio.protocol.BGPVersion;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -43,19 +44,31 @@
private static final String SHUTDOWN_MSG = "Worker has already been shutdown";
+ private BGPController bgpController;
private Channel channel;
protected String channelId;
private boolean connected;
protected boolean isHandShakeComplete = false;
- public BGPSessionInfo sessionInfo;
+ private BgpSessionInfo sessionInfo;
private BGPPacketStatsImpl pktStats;
+
@Override
- public void init(BGPId bgpId, BGPVersion bgpVersion, BGPPacketStats pktStats) {
- this.sessionInfo.setRemoteBgpId(bgpId);
- this.sessionInfo.setRemoteBgpVersion(bgpVersion);
- this.pktStats = (BGPPacketStatsImpl) pktStats;
- this.sessionInfo = new BGPSessionInfo();
+ public BgpSessionInfo sessionInfo() {
+ return sessionInfo;
+ }
+
+ /**
+ * Initialize peer.
+ *
+ *@param bgpController controller instance
+ *@param sessionInfo bgp session info
+ *@param pktStats packet statistics
+ */
+ public BGPPeerImpl(BGPController bgpController, BgpSessionInfo sessionInfo, BGPPacketStatsImpl pktStats) {
+ this.bgpController = bgpController;
+ this.sessionInfo = sessionInfo;
+ this.pktStats = pktStats;
}
// ************************
@@ -129,53 +142,9 @@
return channelId;
}
- // ************************
- // BGP Peer features related
- // ************************
-
@Override
- public final BGPId getBGPId() {
- return this.sessionInfo.getRemoteBgpId();
- };
-
- @Override
- public final String getStringId() {
- return this.sessionInfo.getRemoteBgpId().toString();
- }
-
- @Override
- public final void setBgpPeerVersion(BGPVersion peerVersion) {
- this.sessionInfo.setRemoteBgpVersion(peerVersion);
- }
-
- @Override
- public void setBgpPeerASNum(short peerASNum) {
- this.sessionInfo.setRemoteBgpASNum(peerASNum);
- }
-
- @Override
- public void setBgpPeerHoldTime(short peerHoldTime) {
- this.sessionInfo.setRemoteBgpHoldTime(peerHoldTime);
- }
-
- @Override
- public void setBgpPeerIdentifier(int peerIdentifier) {
- this.sessionInfo.setRemoteBgpIdentifier(peerIdentifier);
- }
-
- @Override
- public int getBgpPeerIdentifier() {
- return this.sessionInfo.getRemoteBgpIdentifier();
- }
-
- @Override
- public int getNegotiatedHoldTime() {
- return this.sessionInfo.getNegotiatedholdTime();
- }
-
- @Override
- public void setNegotiatedHoldTime(short negotiatedHoldTime) {
- this.sessionInfo.setNegotiatedholdTime(negotiatedHoldTime);
+ public BGPFactory factory() {
+ return BGPFactories.getFactory(sessionInfo.remoteBgpVersion());
}
@Override
@@ -185,7 +154,8 @@
@Override
public String toString() {
- return MoreObjects.toStringHelper(getClass()).omitNullValues().add("channel", channelId())
- .add("bgpId", getBGPId()).toString();
+ return MoreObjects.toStringHelper(getClass()).omitNullValues()
+ .add("channel", channelId())
+ .add("bgpId", sessionInfo().remoteBgpId()).toString();
}
}