/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package socius.thread; import java.rmi.RemoteException; import java.util.logging.Level; import java.util.logging.Logger; import javafx.application.Platform; import socius.dispositivos.Computador; import socius.excecoes.ComputadorNaoConectadoException; import socius.util.ConfigSistema; /** * * @author Lucas Dillmann <lucas [at] dillmann.com.br> */ public class MantemConexaoServidorThread extends Thread { private Computador computador; private boolean continuar = true; public MantemConexaoServidorThread(Computador computador) { super(); this.computador = computador; } public void interromper() throws Throwable { continuar = false; finalize(); } @Override public void run() { // Obtem intervalo em segundos (e converte para milisegundos) que // deverá ser seguido para notificar // servidor que ainda estamos online Integer intervalo = Integer.parseInt( ConfigSistema.getProperty("cliente.intervalo_notificacao_servidor") ) * 1000; // Inicia laço para atualizar servidor a cada intervalo milisegundos while(continuar) { try { computador.getServidorConectado().enviaManterOnline(computador); } catch (Exception ex) { if(ex.getClass().equals(ComputadorNaoConectadoException.class)) { try { finalize(); } catch (Throwable ex1) { Logger.getLogger(MantemConexaoServidorThread.class.getName()).log(Level.SEVERE, null, ex1); } } } // Dorme por intervalo milisegundos até enviar novamente uma // nova notificação try { Thread.sleep(intervalo); } catch (InterruptedException ex) { } } } }