/*
* 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) {
}
}
}
}