private void checkAgentStatus(AgentHandler handler) { List<String> currentAgents = getConnectedHosts(); for (String disConnectedIP : lastAgents) { boolean hasDisConnected = true; for (String tmp : currentAgents) { if (disConnectedIP.equals(tmp)) { hasDisConnected = false; break; } } if (hasDisConnected) { handler.disConnected(disConnectedIP); } } for (String connectedIP : currentAgents) { boolean hasConnectedIP = true; for (String tmp : lastAgents) { if (connectedIP.equals(tmp)) { hasConnectedIP = false; break; } } if (hasConnectedIP) { handler.connected(connectedIP); } } lastAgents = currentAgents; }
@Override public void agentMonitor(final AgentHandler handler) { lastAgents = handler.getConnectedFromDB(); Thread monitorThread = new Thread( new Runnable() { @Override public void run() { while (true) { try { checkAgentStatus(handler); Thread.sleep(THIRTY_SECONDS); } catch (InterruptedException e) { LOGGER.error(e, e); } } } }); monitorThread.start(); }