package es.tid.pce.parentPCE; import java.io.DataOutputStream; import java.net.Inet4Address; import java.util.Iterator; import java.util.concurrent.LinkedBlockingQueue; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import es.tid.pce.computingEngine.IniProcessorThread; import es.tid.pce.computingEngine.InitiationRequest; import es.tid.pce.parentPCE.MDLSPDB.MultiDomainLSPDB; import es.tid.pce.pcep.constructs.PCEPIntiatedLSP; import es.tid.pce.pcep.messages.PCEPInitiate; import es.tid.tedb.ReachabilityManager; public class MultiDomainInitiateDispatcher { /** * Queue to add Initiate. * This queue is read by the request processor threads. */ private LinkedBlockingQueue<InitiationRequest> lspIniRequestQueue; private Thread iniProcessorThread; /** * The logger */ private Logger log; public MultiDomainInitiateDispatcher(ReachabilityManager reachabilityManager, ChildPCERequestManager childPCERequestManager, MultiDomainLSPDB multiDomainLSPDB) { log=LoggerFactory.getLogger("PCEServer"); lspIniRequestQueue = new LinkedBlockingQueue<InitiationRequest>(); iniProcessorThread= new IniProcessorThread(lspIniRequestQueue, reachabilityManager, childPCERequestManager, multiDomainLSPDB); iniProcessorThread.start(); } public void dispathInitiate(PCEPInitiate iniMessage, DataOutputStream out, Inet4Address remotePeerIP) { log.info("Dispatching Initiate message from "+remotePeerIP); Iterator<PCEPIntiatedLSP> it=iniMessage.getPcepIntiatedLSPList().iterator(); while (it.hasNext()){ InitiationRequest ir=new InitiationRequest(); ir.setOut(out); ir.setRemotePeerIP(remotePeerIP); ir.setLspIniRequest(it.next()); lspIniRequestQueue.add(ir); } } }