@Override public void start(File simulationConfigurationFile) { LOGGER.info("Start the simulator."); // create the simulation components try { LOGGER.info("Create simulator for protocol: {}", protocol); String[] splited = protocol.split(":"); // create the message receiver that handles incoming commands from the host and forward the commands to the // simulators netSimulationMessageHandler = createSimulationMessageHandler(simulationConfigurationFile, splited[0]); // open the port that simulates the interface device if ("tcp".equalsIgnoreCase(splited[0])) { LOGGER.info("Create a NetBidibTcpPort with the portnumber: {}", NetBidib.BIDIB_UDP_PORT_NUMBER); netBidibPortSimulator = new NetBidibServerTcpPort(NetBidib.BIDIB_UDP_PORT_NUMBER, null, netSimulationMessageHandler); } else { LOGGER.info("Create a NetBidibUdpPort with the portnumber: {}", NetBidib.BIDIB_UDP_PORT_NUMBER); netBidibPortSimulator = new NetBidibServerUdpPort(NetBidib.BIDIB_UDP_PORT_NUMBER, netSimulationMessageHandler); } LOGGER.info("Prepare and start the port worker for netBidibPortSimulator: {}", netBidibPortSimulator); portWorker = new Thread(netBidibPortSimulator); portWorker.start(); isStarted.set(true); } catch (Exception ex) { LOGGER.warn("Start the simulator failed.", ex); } }