package es.tid.pce.parentPCE.management; import java.net.ServerSocket; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import es.tid.pce.computingEngine.RequestDispatcher; import es.tid.pce.parentPCE.ChildPCERequestManager; import es.tid.pce.parentPCE.MultiDomainTopologyUpdater; import es.tid.pce.parentPCE.MDLSPDB.MultiDomainLSPDB; import es.tid.pce.pcepsession.PCEPSessionsInformation; import es.tid.tedb.ITMDTEDB; import es.tid.tedb.MDTEDB; import es.tid.tedb.ReachabilityManager; import es.tid.tedb.SimpleTEDB; /** * Parent PCE Management Server. * Creates a new management session for each incoming connection to the management port. * @author ogondio * */ public class ParentPCEManagementSever extends Thread { private Logger log; private ChildPCERequestManager cprm; private RequestDispatcher requestDispatcher; private MDTEDB mdtedb; private MultiDomainLSPDB multiDomainLSPDB; private SimpleTEDB simpleTedb; private ITMDTEDB ITmdtedb; private ReachabilityManager rm; private boolean isITcapable=false; private PCEPSessionsInformation pcepSessionManager; private MultiDomainTopologyUpdater mdtu; private int parentPCEManagementPort; public ParentPCEManagementSever(ChildPCERequestManager cprm, RequestDispatcher requestDispatcher, MDTEDB mdtedb,SimpleTEDB simpleTEDB, ReachabilityManager rm, PCEPSessionsInformation pcepSessionManager,MultiDomainTopologyUpdater mdtu,int parentPCEManagementPort, MultiDomainLSPDB multiDomainLSPDB){ log =LoggerFactory.getLogger("PCEServer"); this.cprm=cprm; this.requestDispatcher=requestDispatcher; this.mdtedb=mdtedb; this.simpleTedb=simpleTEDB; this.rm=rm; isITcapable=false; this.pcepSessionManager=pcepSessionManager; this.mdtu=mdtu; this.parentPCEManagementPort=parentPCEManagementPort; this.multiDomainLSPDB=multiDomainLSPDB; } public ParentPCEManagementSever(ChildPCERequestManager cprm, RequestDispatcher requestDispatcher, ITMDTEDB ITmdtedb, ReachabilityManager rm,PCEPSessionsInformation pcepSessionManager,MultiDomainTopologyUpdater mdtu,int parentPCEManagementPort){ log =LoggerFactory.getLogger("PCEServer"); this.cprm=cprm; this.requestDispatcher=requestDispatcher; this.ITmdtedb=ITmdtedb; this.rm=rm; isITcapable=true; this.pcepSessionManager=pcepSessionManager; this.mdtu=mdtu; this.parentPCEManagementPort=parentPCEManagementPort; } public void run(){ ServerSocket serverSocket = null; boolean listening=true; try { log.info("Listening on port "+ parentPCEManagementPort); serverSocket = new ServerSocket(parentPCEManagementPort); } catch (Exception e){ log.error("Could not listen management on port"+ parentPCEManagementPort); e.printStackTrace(); return; } try { while (listening) { if(isITcapable){ new ParentPCEManagementSession(serverSocket.accept(),cprm,requestDispatcher, ITmdtedb,rm,pcepSessionManager,mdtu).start(); }else{ new ParentPCEManagementSession(serverSocket.accept(),cprm,requestDispatcher, mdtedb,simpleTedb,rm,pcepSessionManager,mdtu, multiDomainLSPDB).start(); } } serverSocket.close(); } catch (Exception e) { e.printStackTrace(); } } }