private BufferedReader getReader() throws InterruptedException { if (m_reader == null) { m_reader = createReader(); } return m_reader; }
private void createAndQueueTl1Message(StringBuilder rawMessageBuilder) { LOG.debug("readMessages: offering message to queue: {}", rawMessageBuilder.toString()); Tl1AutonomousMessage message = detectMessageType(rawMessageBuilder); if (message != null) { m_tl1Queue.offer(message); LOG.debug("readMessages: successfully offered to queue."); } else { LOG.debug("readMessages: message was null, not offered to queue."); } }
while (isStarted()) { try { LOG.debug("readMessages: reading line from TL1 socket..."); reader = getReader(); int ch; while((ch = reader.read()) != -1 && isStarted()) { rawMessageBuilder.append((char)ch); createAndQueueTl1Message(rawMessageBuilder); rawMessageBuilder.setLength(0); resetReader(null); resetReader(e);
private BufferedReader createReader() throws InterruptedException { BufferedReader reader; while (isStarted()) { try { m_tl1Socket = new Socket(m_host, m_port); reader = new BufferedReader(new InputStreamReader(m_tl1Socket.getInputStream())); resetTimeout(); return reader; } catch (IOException e) { LOG.error("TL1 Connection Failed to {}:{}", m_host, m_port); LOG.debug(e.getMessage()); waitUntilNextConnectTime(); } } return null; }
private void waitUntilNextConnectTime() throws InterruptedException { LOG.debug("waitUntilNextConnectTime: current connection attempts: {}", m_reconnectAttempts); if (isStarted()) { if (m_sleeper == null) { m_sleeper = new TimeoutSleeper(); } m_reconnectAttempts++; /* If the system is not responding, we want to wait longer and longer for the retry */ long waitTime = computeWait(); LOG.info("waitUntilNextConnectTime: Waiting {} ms......", waitTime); m_sleeper.sleep(waitTime); } }
/** * <p>stop</p> */ @Override public void stop() { LOG.info("Stopping TL1 client: {}:{}", m_host, String.valueOf(m_port)); setStarted(false); //waiting a second or so for the reader thread to clean up the socket and shut //itself down. try { Thread.sleep(1000); } catch (InterruptedException e) { LOG.error("stop: {}", e); } }
private Tl1AutonomousMessage detectMessageType(StringBuilder rawMessage) { //check token 5 to see if this is a reply message. This implies that the Tl1Client must //track message TAGs (Correlation TAGs (CTAG) vs. Autonomous TAGs (ATAG)) if(isAutonomousMessage(rawMessage)) { return m_messageProcessor.process(rawMessage.toString(), Tl1Message.AUTONOMOUS); } return null; }
/** * <p>start</p> */ @Override public void start() { LOG.info("start: TL1 client: {}:{}", m_host, String.valueOf(m_port)); LOG.info("start:Connection delay = {}", m_reconnectionDelay); setStarted(true); Thread socketReader = new Thread("TL1-Socket-Reader") { @Override public void run() { readMessages(); } }; socketReader.start(); LOG.info("Started TL1 client: {}:{}", m_host, String.valueOf(m_port)); }