package es.tid.bgp.bgp4Peer.management; import es.tid.bgp.bgp4Peer.bgp4session.BGP4SessionsInformation; import es.tid.bgp.bgp4Peer.peer.SendTopology; import es.tid.tedb.MultiDomainTEDB; import es.tid.tedb.TEDB; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.net.ServerSocket; import java.util.Hashtable; /** * To manage the server * * @author mcs * */ public class BGP4ManagementServer extends Thread { private Logger log; private int BGP4ManagementPort = 8888; private BGP4SessionsInformation bgp4SessionsInformation; /** * Topology database for interDomain Links. */ private MultiDomainTEDB multiTEDB; /** * Topology database for intradomain Links. It owns several domains. */ private Hashtable<String,TEDB> intraTEDBs; /** * Class to send the topology. It is needes to set the parameters sendTopology to true or false. */ private SendTopology sendTopology; public BGP4ManagementServer(int BGP4ManagementPort, MultiDomainTEDB multiTEDB, Hashtable<String,TEDB> intraTEDBs, BGP4SessionsInformation bgp4SessionsInformation, SendTopology sendTopology){ log =LoggerFactory.getLogger("BGP4Server"); this.BGP4ManagementPort = BGP4ManagementPort; this.multiTEDB=multiTEDB; this.intraTEDBs=intraTEDBs; this.bgp4SessionsInformation =bgp4SessionsInformation; this.sendTopology=sendTopology; } /** * RUN */ public void run(){ ServerSocket serverSocket = null; boolean listening=true; try { log.debug("Listening management on port "+BGP4ManagementPort); serverSocket = new ServerSocket(BGP4ManagementPort); } catch (Exception e){ log.error("Could not listen management on port "+BGP4ManagementPort); e.printStackTrace(); return; } try { while (listening) { new BGP4ManagementSession(serverSocket.accept(),multiTEDB,intraTEDBs,bgp4SessionsInformation, sendTopology).start(); } serverSocket.close(); } catch (Exception e) { e.printStackTrace(); } } }