package es.tid.pce.server.management; import java.io.IOException; import java.net.Inet4Address; import java.net.InetAddress; import java.net.ServerSocket; import java.net.SocketException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import es.tid.pce.computingEngine.RequestDispatcher; import es.tid.pce.server.PCEServerParameters; import es.tid.pce.server.communicationpce.CollaborationPCESessionManager; import es.tid.pce.server.wson.ReservationManager; import es.tid.tedb.DomainTEDB; public class PCEManagementSever extends Thread { private Logger log; private RequestDispatcher requestDispatcher; private DomainTEDB tedb; private PCEServerParameters params; private ReservationManager reservationManager; private CollaborationPCESessionManager collaborationPCESessionManager; private ServerSocket serverSocket; private boolean listening=true; public PCEManagementSever(RequestDispatcher requestDispatcher, DomainTEDB tedb, PCEServerParameters params, ReservationManager reservationManager){ log =LoggerFactory.getLogger("PCEServer"); this.requestDispatcher=requestDispatcher; this.tedb=tedb; this.params = params; this.reservationManager=reservationManager; } public PCEManagementSever(RequestDispatcher requestDispatcher, DomainTEDB tedb, PCEServerParameters params, ReservationManager reservationManager,CollaborationPCESessionManager collaborationPCESessionManager){ log =LoggerFactory.getLogger("PCEServer"); this.requestDispatcher=requestDispatcher; this.tedb=tedb; this.params = params; this.reservationManager=reservationManager; this.collaborationPCESessionManager= collaborationPCESessionManager; } public void run(){ try { log.info("Listening on port "+params.getPCEManagementPort()); serverSocket = new ServerSocket(params.getPCEManagementPort(), 0,(Inet4Address) InetAddress.getByName(params.getLocalPceAddress())); } catch (Exception e){ log.error("Could not listen management on port "+params.getPCEManagementPort()); e.printStackTrace(); return; } try { while (listening) { new PCEManagementSession(serverSocket.accept(),requestDispatcher, tedb,reservationManager,collaborationPCESessionManager, params).start(); } serverSocket.close(); }catch (SocketException e) { if (listening==false){ log.info("Socket closed due to controlled close"); }else { log.error("Problem with the socket, exiting"); e.printStackTrace(); } } catch (Exception e) { e.printStackTrace(); } } public void stopServer(){ listening=false; if (serverSocket!=null){ try { serverSocket.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }