package Comunicacion;
import java.rmi.NotBoundException;
import java.rmi.RemoteException;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
import java.util.List;
import Modelo.FachadaModelo;
public class ComunicacionServidor extends java.rmi.server.UnicastRemoteObject implements InterfazServidor
{
/**
*
*/
private static final long serialVersionUID = 1L;
private FachadaModelo modelo;
private Registry registroServidor;
private Registry registroCliente;
private InterfazCliente cliente;
public ComunicacionServidor() throws RemoteException
{
super();
this.modelo = new FachadaModelo(this);
this.iniciarServidor(3000);
}
public void crearConexionCliente(int puertoCliente, String direccionIpCliente)
{
try
{
registroCliente = LocateRegistry.getRegistry(direccionIpCliente, puertoCliente);
this.cliente = (InterfazCliente)(registroCliente.lookup("rmiCliente"));
}
catch(RemoteException e)
{
}
catch(NotBoundException e)
{
}
}
public void iniciarServidor(int puerto) throws RemoteException
{
try
{
registroServidor = LocateRegistry.createRegistry(puerto);
registroServidor.rebind("rmiServidor", this);
}
catch (RemoteException e) {
throw e;
}
}
public void iniciarConexion(int puerto, String ip) throws RemoteException
{
this.crearConexionCliente(puerto, ip);
this.modelo.ingresarBarra();
}
public int crearObjeto(int idTipoObjeto, double posX, double posY, List<Object> parametros) throws RemoteException
{
return this.modelo.crearObjeto(idTipoObjeto, posX, posY, parametros);
}
public void lanzar(int idObjeto, double velocidad, double angulo) throws RemoteException
{
System.out.println("Aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
this.modelo.lanzar(idObjeto, velocidad, angulo);
}
public void valoresMaximosCanvas(double xMaxCanvas, double yMaxCanvas) throws RemoteException
{
this.modelo.valoresMaximosCanvas(xMaxCanvas, yMaxCanvas);
}
public void noSePuede()
{
try {
this.cliente.noSePuede();
} catch (RemoteException e)
{
e.printStackTrace();
}
}
public void actualizar(double posX, double posY, int idObjeto)
{
try {
this.cliente.actualizar(posX, posY, idObjeto);
} catch (RemoteException e)
{
e.printStackTrace();
}
}
public void informarCreacionObjeto(double posX, double posY, List<Double> parametros, int idObjeto, int tipoObjeto)
{
try {
this.cliente.informarCreacionObjeto(posX, posY, parametros, idObjeto, tipoObjeto);
} catch (RemoteException e)
{
e.printStackTrace();
}
}
}