Files
unisa_prog_distribuita_2014…/rmi_exam/Server.java

83 lines
2.4 KiB
Java

package rmi_exam;
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
import java.util.HashMap;
import java.util.Iterator;
/**
* Created by Giovanni on 16/01/2015.
*/
public class Server extends UnicastRemoteObject implements ServerInterface {
private HashMap<ClientInterface,ClientData> h;
private boolean votazione_in_corso = false;
private boolean chaton=false;
public Server() throws RemoteException{
h=new HashMap<ClientInterface, ClientData>();
}
public void iscriviti (ClientInterface c, String n) throws RemoteException {
h.put(c,new ClientData(n));
if (h.size()>=2){chaton=true;}
if (chaton){
Iterator<ClientInterface> it = h.keySet().iterator();
for(;it.hasNext();){
ClientInterface t = it.next();
t.detto(h.get(c).getName() + " e' entrato in chat");//anche a se stesso
}
}
}
public void disiscriviti( ClientInterface c) throws RemoteException {
String name = h.get(c).getName();
h.remove(c);
if (chaton){
Iterator<ClientInterface> it = h.keySet().iterator();
for (;it.hasNext();){
ClientInterface t = it.next();
t.detto(name + " e' uscito dalla chat"); // non a se stesso
}
}
}
public boolean dici (ClientInterface c, String m) throws RemoteException {
if (chaton && !h.get(c).getblocked()){
Iterator<ClientInterface> it = h.keySet().iterator();
for (;it.hasNext();){
ClientInterface t = it.next();
if(!t.equals(c)){
t.detto(h.get(c).getName() + ":" + m);
}
}
return true;
}
return false;
}
public boolean vota (ClientInterface c, boolean v) throws RemoteException{
if (chaton && votazione_in_corso && !h.get(c).getblocked() && !h.get(c).gethavotato()){
h.get(c).setHavotato(true);
h.get(c).setVoto(v);
System.out.println(h.get(c).getName() + " ha votato " + convert(v));
return true;
}
return false;
}
protected String convert(boolean in){
if (in)
return "si";
return "no";
}
public HashMap<ClientInterface,ClientData> getH(){return h;}
public void setsondaggio(boolean value) {votazione_in_corso=value;}
}