public RootNode getRootNode() {
RootNode rootNode = null;
synchronized (nodes) {
rootNode = (RootNode) nodes.get(ROOT_ADDRESS);
if (rootNode == null) {
LOGGER.info("The root node is not available, create new root node.");
rootNode = new RootNode(messageReceiver, ignoreWaitTimeout);
rootNode.setBidib(bidib);
rootNode.setRequestFactory(requestFactory);
rootNode.setResponseTimeout(bidib.getResponseTimeout());
rootNode.setFirmwarePacketTimeout(bidib.getFirmwarePacketTimeout());
nodes.put(ROOT_ADDRESS, rootNode);
}
LOGGER.debug("Root node: {}", rootNode);
}
return rootNode;
}